anupq-3.3.0/000755 000766 000024 00000000000 14355420747 013143 5ustar00mhornstaff000000 000000 anupq-3.3.0/PackageInfo.g000644 000766 000024 00000012217 14355420571 015460 0ustar00mhornstaff000000 000000 ############################################################################# ## #W PackageInfo.g ANUPQ Package Greg Gamble #W Werner Nickel #W Eamonn O'Brien #W Max Horn SetPackageInfo( rec( PackageName := "ANUPQ", Subtitle := "ANU p-Quotient", Version := "3.3.0", Date := "05/01/2023", # dd/mm/yyyy format License := "Artistic-2.0", Persons := [ rec( LastName := "Gamble", FirstNames := "Greg", IsAuthor := true, IsMaintainer := true, Email := "Greg.Gamble@uwa.edu.au", WWWHome := "http://school.maths.uwa.edu.au/~gregg", PostalAddress := Concatenation( "Department of Mathematics and Statistics\n", "Curtin University\n", "GPO Box U 1987\n", "Perth WA 6845\n", "Australia" ), Place := "Perth", Institution := "Curtin University" ), rec( LastName := "Nickel", FirstNames := "Werner", IsAuthor := true, IsMaintainer := false, # MH: Werner rarely (if at all) replies to emails sent to this # old email address. To discourage users from sending bug reports # there, I have disabled it here. #Email := "nickel@mathematik.tu-darmstadt.de", WWWHome := "https://www2.mathematik.tu-darmstadt.de/~nickel/", ), rec( LastName := "O'Brien", FirstNames := "Eamonn", IsAuthor := true, IsMaintainer := false, Email := "obrien@math.auckland.ac.nz", WWWHome := "https://www.math.auckland.ac.nz/~obrien", PostalAddress := Concatenation( "Department of Mathematics\n", "University of Auckland\n", "Private Bag 92019\n", "Auckland\n", "New Zealand\n" ), Place := "Auckland", Institution := "University of Auckland" ), rec( LastName := "Horn", FirstNames := "Max", IsAuthor := false, IsMaintainer := true, Email := "horn@mathematik.uni-kl.de", WWWHome := "https://www.quendi.de/math", PostalAddress := Concatenation( "Fachbereich Mathematik\n", "TU Kaiserslautern\n", "Gottlieb-Daimler-Straße 48\n", "67663 Kaiserslautern\n", "Germany" ), Place := "Kaiserslautern, Germany", Institution := "TU Kaiserslautern" ), ], Status := "accepted", CommunicatedBy := "Charles Wright (Eugene)", AcceptDate := "04/2002", SourceRepository := rec( Type := "git", URL := "https://github.com/gap-packages/anupq", ), IssueTrackerURL:= Concatenation( ~.SourceRepository.URL, "/issues" ), PackageWWWHome := "https://gap-packages.github.io/anupq/", README_URL := Concatenation(~.PackageWWWHome, "README.md"), PackageInfoURL := Concatenation(~.PackageWWWHome, "PackageInfo.g"), ArchiveURL := Concatenation(~.SourceRepository.URL, "/releases/download/v", ~.Version, "/anupq-", ~.Version), ArchiveFormats := ".tar.gz .tar.bz2", AbstractHTML := "The ANUPQ package provides an interactive \ interface to the p-quotient, p-group generation and standard presentation \ algorithms of the ANU pq C program.", PackageDoc := rec( BookName := "ANUPQ", ArchiveURLSubset := ["doc"], HTMLStart := "doc/chap0_mj.html", PDFFile := "doc/manual.pdf", SixFile := "doc/manual.six", LongTitle := "ANU p-Quotient", ), Dependencies := rec( GAP := ">= 4.9", NeededOtherPackages := [ [ "autpgrp", ">=1.5" ] ], SuggestedOtherPackages := [ ], ExternalConditions := [] ), AvailabilityTest := function() # test for existence of the compiled binary if Filename( DirectoriesPackagePrograms( "anupq" ), "pq" ) = fail then return fail; fi; return true; end, # Show some extra info in the Banner BannerFunction := function( info ) local str, version; str := DefaultPackageBannerString( info ); str := ReplacedString( str, "by Greg Gamble (", "by Greg Gamble (GAP code, " ); str := ReplacedString( str, "Nickel (", "Nickel (GAP code, " ); str := ReplacedString( str, "O'Brien (", "O'Brien (C code, " ); str := ReplacedString( str, "\nHomepage", "\nuses ANU pq binary (C code program) version: 1.9\nHomepage" ); return str; end, TestFile := "tst/testinstall.g", Keywords := [ "p-quotient", "p-group generation", "descendant", "standard presentation", ], AutoDoc := rec( TitlePage := rec( Copyright := """ ©right; 2001-2016 by Greg Gamble

©right; 2001-2005 by Werner Nickel

©right; 1995-2001 by Eamon O'Brien

The &GAP; package &ANUPQ; is licensed under the https://opensource.org/licenses/artistic-license-2.0. """, ), ), )); anupq-3.3.0/configure.ac000644 000766 000024 00000010321 14355420744 015423 0ustar00mhornstaff000000 000000 dnl ## dnl ## Process this file with autoconf to produce a configure script. dnl ## AC_PREREQ([2.68]) AC_INIT([ANU p-Quotient Program], [package], [https://github.com/gap-packages/anupq/issues], [anupq], [https://gap-packages.github.io/anupq/]) AC_CONFIG_SRCDIR([src/pquotient.c]) AC_CONFIG_HEADERS(include/config.h:include/config.hin) AC_CONFIG_AUX_DIR(cnf) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([1.11 -Wall foreign subdir-objects no-dist]) AM_SILENT_RULES([yes]) dnl For developer builds, maintainer mode is enabled by default. But for dnl releases, the `.release` script changes this to "disabled by default". dnl This avoids troubles during packaging, in particular when the GAP team dnl repackages the source archive. Users can re-enable it by passing dnl `--enable-maintainer-mode` to configure. AM_MAINTAINER_MODE([disable]) dnl ## dnl ## C is the language dnl ## AC_LANG([C]) dnl ## dnl ## Checks for programs. dnl ## AC_PROG_AWK AC_PROG_CC AC_PROG_MAKE_SET AC_PROG_MKDIR_P AC_PROG_SED dnl ## dnl ## Locate the GAP root dir dnl ## FIND_GAP dnl ## dnl ## Check for GMP dnl ## If the user specified a specific GMP, try to use that. dnl ## Otherwise, first try to use the GMP provided by GAP, or dnl ## any GMP version installed globally by the user. dnl ## GMP_CPPFLAGS= GMP_LIBS= AC_ARG_WITH([gmp], [AS_HELP_STRING([--with-gmp=PATH], [ Use GMP library. If the argument you supply is "yes" or , then the version of GMP bundled with GAP will be used (default). If the argument is "system" that means the library is reachable with the standard search path "/usr" or "/usr/local". Otherwise you give the to the directory which contains the library. [[default=yes]] ])], [], [ with_gmp=yes ] ) if test "x$with_gmp" = "xno" ; then AC_MSG_NOTICE([Building without GMP support]) elif test "x$with_gmp" = "xsystem" ; then # Try using system GMP GMP_CPPFLAGS="" GMP_LIBS="-lgmp" else # Try using static linked GMP in the specified location if test "x$with_gmp" = "xyes" ; then # Try to use GAP's GMP, if available GMP_HOME="$GAPROOT/extern/install/gmp" else GMP_HOME="$with_gmp" fi; if test -d ${GMP_HOME}/include && test -d ${GMP_HOME}/lib ; then GMP_CPPFLAGS="-I${GMP_HOME}/include" # gross hack follows if test -r "${GMP_HOME}/lib/libgmp.a" ; then GMP_LIBS="${GMP_HOME}/lib/libgmp.a" elif test -r "${GMP_HOME}/lib/libgmp.dylib" ; then GMP_LIBS="${GMP_HOME}/lib/libgmp.dylib" elif test -r "${GMP_HOME}/lib/libgmp.so" ; then GMP_LIBS="${GMP_HOME}/lib/libgmp.so" else # generic fallback -- unfortunately, this does not ensure that we # link against exactly that version of libgmp GMP_LIBS="-L${GMP_HOME}/lib -lgmp" fi elif test "x$with_gmp" = "xyes" ; then # fallback to trying system wide GMP GMP_CPPFLAGS="" GMP_LIBS="-lgmp" else AC_MSG_ERROR([Could not locate libgmp.a in the specified location]) fi fi; have_gmp=no if test "x$with_gmp" != xno; then pq_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $GMP_CPPFLAGS" pq_save_LIBS="$LIBS" LIBS="$LIBS $GMP_LIBS" AC_CHECK_HEADER( [gmp.h], [ # TODO: Disable linker check for now: It causes problems on Linux, because # libgmp.a is in the linker command line before the test C file. On the long # run, this should be re-enabled, though perhaps in a different form. AC_MSG_CHECKING([whether linking against GMP works]) AC_LINK_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[__gmpz_init(0);]])], [have_gmp=yes], [] ) AC_MSG_RESULT([$have_gmp]) ], [] ) # restore FLAGS CPPFLAGS="$pq_save_CPPFLAGS" LIBS="$pq_save_LIBS" fi; if test "x$have_gmp" = xyes; then AC_DEFINE(HAVE_GMP, 1, [Define if GMP is installed and usable]) else GMP_CPPFLAGS="" GMP_LIBS="" fi AC_SUBST(GMP_CPPFLAGS) AC_SUBST(GMP_LIBS) dnl ## dnl ## Checks for library functions. dnl ## AC_HEADER_SYS_WAIT AC_CHECK_FUNCS([gethostname strftime]) AC_SEARCH_LIBS([log10], [m], [], [ AC_MSG_ERROR([unable to find the log10() function]) ]) # hack for testPq: GAP_EXEC="${GAP:-${GAPROOT}/bin/gap.sh}" AC_SUBST(GAP_EXEC) dnl ## dnl ## Finally, generate the Makefiles and output everything dnl ## AC_CONFIG_FILES([Makefile]) AC_CONFIG_FILES([testPq], [chmod +x testPq]) AC_OUTPUT anupq-3.3.0/LICENSE000644 000766 000024 00000021370 14355420571 014146 0ustar00mhornstaff000000 000000 The Artistic License 2.0 ======================== _Copyright © 2000-2006, The Perl Foundation._ Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. ### Preamble This license establishes the terms under which a given free software Package may be copied, modified, distributed, and/or redistributed. The intent is that the Copyright Holder maintains some artistic control over the development of that Package while still keeping the Package available as open source and free software. You are always permitted to make arrangements wholly outside of this license directly with the Copyright Holder of a given Package. If the terms of this license do not permit the full use that you propose to make of the Package, you should contact the Copyright Holder and seek a different licensing arrangement. ### Definitions “Copyright Holder” means the individual(s) or organization(s) named in the copyright notice for the entire Package. “Contributor” means any party that has contributed code or other material to the Package, in accordance with the Copyright Holder's procedures. “You” and “your” means any person who would like to copy, distribute, or modify the Package. “Package” means the collection of files distributed by the Copyright Holder, and derivatives of that collection and/or of those files. A given Package may consist of either the Standard Version, or a Modified Version. “Distribute” means providing a copy of the Package or making it accessible to anyone else, or in the case of a company or organization, to others outside of your company or organization. “Distributor Fee” means any fee that you charge for Distributing this Package or providing support for this Package to another party. It does not mean licensing fees. “Standard Version” refers to the Package if it has not been modified, or has been modified only in ways explicitly requested by the Copyright Holder. “Modified Version” means the Package, if it has been changed, and such changes were not explicitly requested by the Copyright Holder. “Original License” means this Artistic License as Distributed with the Standard Version of the Package, in its current version or as it may be modified by The Perl Foundation in the future. “Source” form means the source code, documentation source, and configuration files for the Package. “Compiled” form means the compiled bytecode, object code, binary, or any other form resulting from mechanical transformation or translation of the Source form. ### Permission for Use and Modification Without Distribution **(1)** You are permitted to use the Standard Version and create and use Modified Versions for any purpose without restriction, provided that you do not Distribute the Modified Version. ### Permissions for Redistribution of the Standard Version **(2)** You may Distribute verbatim copies of the Source form of the Standard Version of this Package in any medium without restriction, either gratis or for a Distributor Fee, provided that you duplicate all of the original copyright notices and associated disclaimers. At your discretion, such verbatim copies may or may not include a Compiled form of the Package. **(3)** You may apply any bug fixes, portability changes, and other modifications made available from the Copyright Holder. The resulting Package will still be considered the Standard Version, and as such will be subject to the Original License. ### Distribution of Modified Versions of the Package as Source **(4)** You may Distribute your Modified Version as Source (either gratis or for a Distributor Fee, and with or without a Compiled form of the Modified Version) provided that you clearly document how it differs from the Standard Version, including, but not limited to, documenting any non-standard features, executables, or modules, and provided that you do at least ONE of the following: * **(a)** make the Modified Version available to the Copyright Holder of the Standard Version, under the Original License, so that the Copyright Holder may include your modifications in the Standard Version. * **(b)** ensure that installation of your Modified Version does not prevent the user installing or running the Standard Version. In addition, the Modified Version must bear a name that is different from the name of the Standard Version. * **(c)** allow anyone who receives a copy of the Modified Version to make the Source form of the Modified Version available to others under * **(i)** the Original License or * **(ii)** a license that permits the licensee to freely copy, modify and redistribute the Modified Version using the same licensing terms that apply to the copy that the licensee received, and requires that the Source form of the Modified Version, and of any works derived from it, be made freely available in that license fees are prohibited but Distributor Fees are allowed. ### Distribution of Compiled Forms of the Standard Version ### or Modified Versions without the Source **(5)** You may Distribute Compiled forms of the Standard Version without the Source, provided that you include complete instructions on how to get the Source of the Standard Version. Such instructions must be valid at the time of your distribution. If these instructions, at any time while you are carrying out such distribution, become invalid, you must provide new instructions on demand or cease further distribution. If you provide valid instructions or cease distribution within thirty days after you become aware that the instructions are invalid, then you do not forfeit any of your rights under this license. **(6)** You may Distribute a Modified Version in Compiled form without the Source, provided that you comply with Section 4 with respect to the Source of the Modified Version. ### Aggregating or Linking the Package **(7)** You may aggregate the Package (either the Standard Version or Modified Version) with other packages and Distribute the resulting aggregation provided that you do not charge a licensing fee for the Package. Distributor Fees are permitted, and licensing fees for other components in the aggregation are permitted. The terms of this license apply to the use and Distribution of the Standard or Modified Versions as included in the aggregation. **(8)** You are permitted to link Modified and Standard Versions with other works, to embed the Package in a larger work of your own, or to build stand-alone binary or bytecode versions of applications that include the Package, and Distribute the result without restriction, provided the result does not expose a direct interface to the Package. ### Items That are Not Considered Part of a Modified Version **(9)** Works (including, but not limited to, modules and scripts) that merely extend or make use of the Package, do not, by themselves, cause the Package to be a Modified Version. In addition, such works are not considered parts of the Package itself, and are not subject to the terms of this license. ### General Provisions **(10)** Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license. **(11)** If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license. **(12)** This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder. **(13)** This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed. **(14)** **Disclaimer of Warranty:** THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. anupq-3.3.0/configure000755 000766 000024 00000554301 14355420746 015061 0ustar00mhornstaff000000 000000 #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for ANU p-Quotient Program package. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: https://github.com/gap-packages/anupq/issues about your $0: system, including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ANU p-Quotient Program' PACKAGE_TARNAME='anupq' PACKAGE_VERSION='package' PACKAGE_STRING='ANU p-Quotient Program package' PACKAGE_BUGREPORT='https://github.com/gap-packages/anupq/issues' PACKAGE_URL='https://gap-packages.github.io/anupq/' ac_unique_file="src/pquotient.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS GAP_EXEC GMP_LIBS GMP_CPPFLAGS GAP_LDFLAGS GAP_CFLAGS GAP_CPPFLAGS GAPROOT GAPARCH SED am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V CSCOPE ETAGS CTAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_dependency_tracking with_gaproot with_gmp ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures ANU p-Quotient Program package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/anupq] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of ANU p-Quotient Program package:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gaproot= specify root of GAP installation --with-gmp=PATH Use GMP library. If the argument you supply is "yes" or , then the version of GMP bundled with GAP will be used (default). If the argument is "system" that means the library is reachable with the standard search path "/usr" or "/usr/local". Otherwise you give the to the directory which contains the library. [[default=yes]] Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . ANU p-Quotient Program home page: . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF ANU p-Quotient Program configure package generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by ANU p-Quotient Program $as_me package, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" # Auxiliary files required by this configure script. ac_aux_files="compile missing install-sh" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}/cnf" # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers include/config.h:include/config.hin" am__api_version='1.16' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='anupq' VERSION='package' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test ${enable_maintainer_mode+y} then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else $as_nop USE_MAINTAINER_MODE=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Make sure CDPATH is portably set to a sensible value CDPATH=${ZSH_VERSION+.}: GAP_CPPFLAGS="" ###################################### # Find the GAP root directory by # checking for the sysinfo.gap file { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GAP root directory" >&5 printf %s "checking for GAP root directory... " >&6; } GAPROOT="../.." # Allow the user to specify the location of GAP # Check whether --with-gaproot was given. if test ${with_gaproot+y} then : withval=$with_gaproot; GAPROOT="$withval" fi # Convert the path to absolute GAPROOT=`cd $GAPROOT > /dev/null 2>&1 && pwd` if test -e ${GAPROOT}/sysinfo.gap; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${GAPROOT}" >&5 printf "%s\n" "${GAPROOT}" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Not found" >&5 printf "%s\n" "Not found" >&6; } echo "" echo "********************************************************************" echo " ERROR" echo "" echo " Cannot find your GAP installation. Please specify the location of" echo " GAP's root directory using --with-gaproot=" echo "" echo " The GAP root directory (as far as this package is concerned) is" echo " the one containing the file sysinfo.gap" echo "********************************************************************" echo "" as_fn_error $? "Unable to find GAP root directory" "$LINENO" 5 fi ##################################### # Now find the architecture { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GAP architecture" >&5 printf %s "checking for GAP architecture... " >&6; } GAPARCH="Unknown" . $GAPROOT/sysinfo.gap if test "x$GAParch" != "x"; then GAPARCH=$GAParch fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GAPARCH" >&5 printf "%s\n" "$GAPARCH" >&6; } if test "x$GAPARCH" = "xUnknown" ; then echo "" echo "********************************************************************" echo " ERROR" echo "" echo " Found a GAP installation at $GAPROOT but could not find" echo " information about GAP's architecture in the file" echo " ${GAPROOT}/sysinfo.gap ." echo " This file should be present: please check your GAP installation." echo "********************************************************************" echo "" as_fn_error $? "Unable to find plausible GAParch information." "$LINENO" 5 fi # require GAP >= 4.9 if test "x$GAP_CPPFLAGS" = x; then echo "" echo "********************************************************************" echo " ERROR" echo "" echo " This version of GAP is too old and not supported by this package." echo "********************************************************************" echo "" as_fn_error $? "No GAP_CPPFLAGS is given" "$LINENO" 5 fi # compatibility with GAP 4.9 (not needed in GAP >= 4.10) GAP_CPPFLAGS="$GAP_CPPFLAGS -I${GAP_LIB_DIR}/src" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu GMP_CPPFLAGS= GMP_LIBS= # Check whether --with-gmp was given. if test ${with_gmp+y} then : withval=$with_gmp; else $as_nop with_gmp=yes fi if test "x$with_gmp" = "xno" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Building without GMP support" >&5 printf "%s\n" "$as_me: Building without GMP support" >&6;} elif test "x$with_gmp" = "xsystem" ; then # Try using system GMP GMP_CPPFLAGS="" GMP_LIBS="-lgmp" else # Try using static linked GMP in the specified location if test "x$with_gmp" = "xyes" ; then # Try to use GAP's GMP, if available GMP_HOME="$GAPROOT/extern/install/gmp" else GMP_HOME="$with_gmp" fi; if test -d ${GMP_HOME}/include && test -d ${GMP_HOME}/lib ; then GMP_CPPFLAGS="-I${GMP_HOME}/include" # gross hack follows if test -r "${GMP_HOME}/lib/libgmp.a" ; then GMP_LIBS="${GMP_HOME}/lib/libgmp.a" elif test -r "${GMP_HOME}/lib/libgmp.dylib" ; then GMP_LIBS="${GMP_HOME}/lib/libgmp.dylib" elif test -r "${GMP_HOME}/lib/libgmp.so" ; then GMP_LIBS="${GMP_HOME}/lib/libgmp.so" else # generic fallback -- unfortunately, this does not ensure that we # link against exactly that version of libgmp GMP_LIBS="-L${GMP_HOME}/lib -lgmp" fi elif test "x$with_gmp" = "xyes" ; then # fallback to trying system wide GMP GMP_CPPFLAGS="" GMP_LIBS="-lgmp" else as_fn_error $? "Could not locate libgmp.a in the specified location" "$LINENO" 5 fi fi; have_gmp=no if test "x$with_gmp" != xno; then pq_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $GMP_CPPFLAGS" pq_save_LIBS="$LIBS" LIBS="$LIBS $GMP_LIBS" ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "gmp.h" "ac_cv_header_gmp_h" "$ac_includes_default" if test "x$ac_cv_header_gmp_h" = xyes then : # TODO: Disable linker check for now: It causes problems on Linux, because # libgmp.a is in the linker command line before the test C file. On the long # run, this should be re-enabled, though perhaps in a different form. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether linking against GMP works" >&5 printf %s "checking whether linking against GMP works... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { __gmpz_init(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : have_gmp=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_gmp" >&5 printf "%s\n" "$have_gmp" >&6; } fi # restore FLAGS CPPFLAGS="$pq_save_CPPFLAGS" LIBS="$pq_save_LIBS" fi; if test "x$have_gmp" = xyes; then printf "%s\n" "#define HAVE_GMP 1" >>confdefs.h else GMP_CPPFLAGS="" GMP_LIBS="" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 printf %s "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } if test ${ac_cv_header_sys_wait_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif int main (void) { int s; wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_header_sys_wait_h=yes else $as_nop ac_cv_header_sys_wait_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 printf "%s\n" "$ac_cv_header_sys_wait_h" >&6; } if test $ac_cv_header_sys_wait_h = yes; then printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" if test "x$ac_cv_func_gethostname" = xyes then : printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" if test "x$ac_cv_func_strftime" = xyes then : printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing log10" >&5 printf %s "checking for library containing log10... " >&6; } if test ${ac_cv_search_log10+y} then : printf %s "(cached) " >&6 else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char log10 (); int main (void) { return log10 (); ; return 0; } _ACEOF for ac_lib in '' m do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_log10=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_log10+y} then : break fi done if test ${ac_cv_search_log10+y} then : else $as_nop ac_cv_search_log10=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_log10" >&5 printf "%s\n" "$ac_cv_search_log10" >&6; } ac_res=$ac_cv_search_log10 if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else $as_nop as_fn_error $? "unable to find the log10() function" "$LINENO" 5 fi # hack for testPq: GAP_EXEC="${GAP:-${GAPROOT}/bin/gap.sh}" ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files testPq" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by ANU p-Quotient Program $as_me package, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to . ANU p-Quotient Program home page: ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ ANU p-Quotient Program config.status package configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/config.h:include/config.hin" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "testPq") CONFIG_FILES="$CONFIG_FILES testPq" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "testPq":F) chmod +x testPq ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi anupq-3.3.0/standalone/000755 000766 000024 00000000000 14355420571 015266 5ustar00mhornstaff000000 000000 anupq-3.3.0/CHANGES000644 000766 000024 00000032564 14355420571 014143 0ustar00mhornstaff000000 000000 In this file we record the changes since the first GAP 4 release of the ANUPQ package. Version 3.3.0 (2023-01-05) * Fix some issues in the documentation * Remove `ANUPQGlobalVariables` * Remove most uses of `HideGlobalVariables` * Avoid using internal undocumented GAP functions * Update build system * Remove GAP 4.2 compatibility code Version 3.2.6 (2022-03-07) * Declared the ANUPQ package to be under the Artistic License 2.0. * Fix crash in PqDescendantsTreeCoclassOne * Various janitorial changes Version 3.2.5 (2022-02-22) * Fixed a hang on macOS 10.15 and later Version 3.2.4 (2022-02-22) * Fixed more compatibly issues under Windows/Cygwin * Fixed an issue that prevents anupq from linking on some systems Version 3.2.3 (2021-10-31) * Various janitorial changes, e.g. to the build system Version 3.2.2 (2021-04-11) * Fixed compatibly issues under Windows/Cygwin * Fixed many compiler warnings * Removed use of TemporaryGlobalVarName * Fixed building the manual on Linux * Update Max Horn's contact details Version 3.2.1 (2019-04-18) * After some back and forth, drop the limitation on 32-bit builds again; it turns out that 64-bit builds can work just fine * Added a patch by Laurent Bartholdi to the ANUPQ standalone binary, which helps computing lower central quotients in certain cases * Fixed a bug in PqEpimorphism which could produce a wrong result if the input was a p-group but not an fp-group * Various janitorial changes, e.g. to the build system Version 3.2 (2017-11-29) * Document that ANUPQ is 32-bit only and requires a 32-bit compiler. * Change build system to enforce 32-bit compilation by adding -m32 to CFLAGS and LDFLAGS. * Fix compilation if GMP was not found, and fix interaction between GAP code and the anupq binary in that case * Compatible with GAP 4.9 * Internal changes (avoid using GAP function SetFeatureObj, and the unix functions tmpnam() and tempnam()) Version 3.1.5 (2017-07-20) * Fix bug in configure script which made it warn about testPq missing when running configure the first time * Improve error message when launching child processes fails * Updated README section about the ANUPQ documentation Version 3.1.4 (2016-03-08) * Remove some obsolete test scripts * Revise how the manual is built Version 3.1.3 (2016-01-10) * Fixed version and release date in the manual * Fixed some minor issues with the manual contents * Fixed the PackageDoc entry in the PackageInfo.g file Version 3.1.2 (2016-01-07) o Converted manual to GAPDoc format. o Once again tweaked the build system. It now uses automake, and shares code with other packages like io and nq. This fixes various annoyances and will make it easy to share future fixes and improvements between multiple GAP packages. o Moved package homepage to https://gap-packages.github.io/anupq/ Version 3.1.1 (2013-11-19) o Updated the manual to match recent changes. o Corrected Greg Gamble's email address. o Further improved the build system. o Fixed the testPq script. Version 3.1 (2013-09-24; never publicly announced) o Requires at least GAP 4.5 and AutPGrp 1.5. o include/pq_author.h: pq program is now version 1.9 o Improved the build system: It now makes use of GNU autoconf, and the various Makefiles are now more robust, and compatible with both GAP 4.4 and 4.5. This should simplify building anupq for many users. o Werner Nickel is no longer maintainer. o Max Horn is new (co-)maintainer. o Fixed some warnings in the C code. Version 3.0 (2006-01-24) o lib/{anupga.gi,anupq.gi,anupqprop.gi,anupqxdesc.gi}: deprecated `PrimeOfPGroup' replaced by `PrimePGroup' o lib/anusp.gi: improved non-isomorphism test in `IsPqIsomorphicPGroup' from checking the exponent-p length to checking the order of the terms in the lower exponent-p central series (suggested by Marco Costantini), and corrected by Jack Schmidt o pre-GAP 4.4 compatibility features removed: - lib/anupqhead.g: . banner removed ... this role is performed by PackageInfo.g since GAP 4.4; thus `pkgbanner' option no longer exists . file split into lib/anupqhead.gd and lib/anupqhead.gi - lib/anupq4r2cpt.g[di]: (GAP 4.2 compatibility) deleted from distribution - lib/anustab.gi: changed `AutPGrp' package test to corresponding GAP 4.4 test - read.g,init.g: . removed all but the `ReadPkg' commands . changed `ReadPkg' to `ReadPackage' . made adjustments for lib/anupqhead.g split o src/GAP_link_via_file.c: deprecated GAP code updated for version 4.4 o include/pq_author.h: pq program is now version 1.8 o standalone-doc/{README,guide.tex}: modified for version 1.8 of the pq program o testPq.in - updated to check for GAP 4.4 and AutPGrp 1.2 as minimum versions - now also checks the version of the pq program o PackageInfo.g,README,VERSION,doc/{manual,intro,infra,install}.tex: - package version changed from 2.2 to 3.0 - AutPGrp package (at least 1.2) is now essential, not just recommended - pq program now version 1.8 Version 2.2: o PackageInfo.g, README, VERSION, doc/{intro,infra,install}.tex: - fixed typo. in PackageInfo.g: test file is tst/anupqeg.tst - package version changed from 2.1 to 2.2 Version 2.1: o lib/anupqi, tst/anupqeg.tst fix for a bug discovered by Tobias Rossmann: this bug was caused in the ANUPQ package's interface by not passing on the parameter StepSize to the standalone properly. This bug could result in computing the wrong number of descendants. Produced a new test file o lib/anupqi.gi, Makefile.in, tst/anupqeg.tsk, tst/anupqeg.tst changes suggested by Gary Zablackis in order to make the package run under Windows: - use '[grp]' as intermediate filename instead of '' - add target to the makefile for compiling the standalone with cygwin - run PqQuitAll() more often in test example o src/store_definition_sets.c: binomial coefficient algorithm modified to avoid overflow o include/pq_author.h: pq program is now version 1.7 o standalone-doc/{README,guide.tex}: modified for version 1.7 of the pq program o PackageInfo.g, README, VERSION, doc/{manual,intro,infra,anupq,options,install}.tex: - package version changed from 2.0 to 2.1 - pq program version changed from 1.6 to 1.7 Version 2.0: o include/pq_author.h: pq program is now version 1.6 o src/GAP_link_via_file.c: newline now added to output to GAP o src/{GAP_present.c,pgroup.c}, lib/{anupga.gi,anupqi.gi,anustab.gi}: changes to remedy bug reported by Boris Girnat (thanks Boris!) where too many descendants were generated for a group of class more than 1 with insoluble automorphism group o standalone/examples/README: updated with version 1.6 change o standalone/examples/pga_*, tst/test[123].pga: each file modified due to version 1.6 change (pq now asks an additional question: how many soluble automorphisms? - for all pga examples answer is 0) o standalone-doc/{README,guide.tex}: modified for version 1.6 of the pq program o tst/out/test[123].out modified as per above o examples/PqSupplementInnerAutomorphisms: `PqSupplementInnerAutomorphisms' now returns a record rather than a group; example modified accordingly o lib/anupq.gi: `GAPInfo.DirectoriesTemporary' replaces `DIRECTORIES_TEMPORARY' o lib/anupqopt.gi: added two new options for `PqPGSupplyAutomorphisms', namely `NumberOfSolubleAutomorphisms' and `RelativeOrders' o README, VERSION, doc/{manual,intro,infra,anupq,options,install}.tex: - package version changed from 1.5 to 2.0 - pq program version changed from 1.5 to 1.6 - various GAP 4.4 documentation changes - `PqSupplementInnerAutomorphisms' example modified o PkgInfo.g replaced by PackageInfo.g - `Pkg...' fields replaced by `Package...' fields - `AutoLoad' fields replaced by `Autoload' - now defines `Subtitle' fields - package version changed from 1.5 to 2.0 o testPq.in: changes for GAP 4.4 o init.g: - for GAP 4.3 compatibility, if GAP 4.3 then `GAPInfo' record defined with entries: . `DirectoriesTemporary' defined to be `DIRECTORIES_TEMPORARY' . `Version' which is defined to be the contents of VERSION - commented out deprecated stuff deleted - undocumented ANUPQPackageVersion() function removed o make_zoo: now includes doc/manual.{lab,toc} o tst/anupqeg.tst: modified for `PqSupplementInnerAutomorphisms' change Version 1.5: o lib/anupqios.gi: typo. (and bug!) on line 541 fixed (1 changed to i); thanks to Robert Morse for spotting it. o PkgInfo.g, lib/anupqhead.g: banner generated by `BannerString' field of PkgInfo.g record, rather than by lib/anupqhead.g for GAP 4.4+. o README, VERSION, PkgInfo.g, doc/{install,intro,infra}.tex 1.4 changed to 1.5 Version 1.4: o src/malloc.h: debugging file removed o src/print_multiweight.c: removed unnecessary line: #include o README, VERSION, PkgInfo.g, doc/{install,intro,infra}.tex 1.3 changed to 1.4 o testPq.in: Added more bullet-proofing, and more intelligent messages when things go wrong Version 1.3: o init.g: - now use `StringFile' rather than iostreams to read `VERSION' (more efficient) - now looks for version 1.1 of AutPGrp o testPq.in: - Added -A option to GAP command. - now looks for version 1.1 of AutPGrp o lib/{anusp.gi,anupga.gi}: On suggestion of Alexander Hulpke added `IsSyllableWordsFamily' as first argument to `FreeGroup' commands when the group is subsequently converted to a pc group (more efficient) o tst/anupqeg.tst: Remade. o doc/basics.tex: Fixed typo. o README, VERSION, PkgInfo.g, doc/{install,intro,infra}.tex 1.2 changed to 1.3 Version 1.2: A number of bugs to do with the input of generators/relations were identified by Robert Morse (thanks Robert): o PQ_GROUP_FROM_PCP (lib/anupq.gi line 531): `GroupHomomorphismByImages' replaced by `GroupHomomorphismByImagesNC' Reason: The check was unnecessary and slowed things down enormously. o PQ_PC_PRESENTATION (lib/anupq.gi): - datarec.gens, datarec.rels: previously `String' was applied to the generators/relators provided and then stored in datarec.gens, datarec.rels; this can be enormously costly. Now, no processing is done when GAP already has them in another form (for pc groups, however, the relators are calculated as before and stored as strings, in datec.rels). The conversion to String is now only done at the point of transmission to the pq program, and done in `ToPQk'. - datarec.gens: an Error is now emitted if the number of defining gen'rs is larger than 511 (the limit imposed by the pq program, see MAXGENS in `include/runtime.h'). o ToPQk (lib/anupqios.gi): When `ToPQk' is called with `cmd' equal to "gens" or "rels", cmd is treated as the field of `datarec' so that the transmission of generators and relators to the pq program can be treated specially, to improve efficiency. The data is still split into ``nice'' lines of length < 69 characters, but care is taken to avoid infinite loops when there are no nice places to break the lines. Also updated for changes made in GAP 4.3fix4. o PqSupplementInnerAutomorphisms (lib/anupga.gi): `SetPcgs' changed to `SetGeneralizedPcgs'. o PQ_AUT_INPUT (lib/anupqi.gi): `Pcgs' changed to `GeneralizedPcgs'. Now requires at least GAP 4.3fix4 and updated AutPGrp package (in .../autpgrp/gap/autos.gi `ConvertHybridAutGroup' uses `SetGeneralizedPcgs' in lieu of `SetPcgs'.) o lib/anupq4r2cpt.g[id]: deprecated. o init.g: commented out backward compatibility with GAP 4.2, since version 1.2 requires GAP 4.3fix4 anyway. Updated: o testPq.in: checks for new requirements mentioned above. o make_zoo o README o doc/{intro.tex,install.tex} Added: o PkgInfo.g Version 1.1: First GAP 4 release (GAP 4.2 compatible). Updates the GAP 3 release (Version 1.0). Basically, Version 1.0 and 1.1 are incompatible, being for different versions of GAP, but as much as was feasible of the original was retained. Principal differences are: o the key commands all take one argument, with any of the previous arguments being input as options; the GAP 3 way of inputting arguments is still supported for Pq, PqEpimorphism, PqDescendants etc.; o iostreams are used instead of files to communicate with the pq program; o the source code has been modified to support a -G option that allows the pq program to communicate with GAP via the iostream, rather than start up a new GAP, when it needs GAP to compute stabilisers; o the source code has also been modified to remove a few bugs; o the functionality has been significantly increased. - Greg Gamble -- 9 July, 2002; 3 November, 2002; 28 January, 2004. anupq-3.3.0/include/000755 000766 000024 00000000000 14355420747 014566 5ustar00mhornstaff000000 000000 anupq-3.3.0/Makefile.am000644 000766 000024 00000011163 14355420571 015174 0ustar00mhornstaff000000 000000 ACLOCAL_AMFLAGS = -I m4 BINARCHDIR = bin/$(GAPARCH) # # The following are valid compilation flags for the program. # #STANDARD_PCP -- if compiling version which permits construction of # standard presentation # #GAP_LINK -- GAP is called by pq to perform insoluble stabiliser calculations # #GAP -- if compiling version for incorporation in GAP # #DEBUG -- debugging information is generated by a number of procedures # # Change features of executable # #RUN_TIME -- supply maximum number of defining generators and class bound # at run-time (see README file for further details) # #TAILS_FILTER -- apply filter for exponent 4 and 5 and max occurrences # #CONSISTENCY_FILTER -- apply filter for exponent 4 and 5 and max occurrences # # PQFLAGS = -DGAP_LINK_VIA_FILE -DGAP -DSTANDARD_PCP -DGROUP PQFLAGS += -DANUPQ_GAP_EXEC='"@GAP_EXEC@"' bin_PROGRAMS = pq pq_LDADD = $(GMP_LIBS) pq_CPPFLAGS = $(GMP_CPPFLAGS) $(PQFLAGS) pq_CFLAGS = -Wall -Wextra -Wno-unused-parameter pq_SOURCES = \ src/AllocateSpace.c \ src/CloseFile.c \ src/Extend_Auts.c \ src/FreeSpace.c \ src/GAP.c \ src/GAP_link_via_file.c \ src/GAP_present.c \ src/OpenFile.c \ src/TemporaryFile.c \ src/action.c \ src/assemble_matrix.c \ src/autgp_order.c \ src/calculate_jacobi.c \ src/central_auts.c \ src/check_exponent.c \ src/class1_eliminate.c \ src/close_relations.c \ src/close_subgroup.c \ src/collect.c \ src/collect_comm.c \ src/collect_gen_word.c \ src/collect_relations.c \ src/collect_word.c \ src/collectp2.c \ src/commutator.c \ src/commute_dgen.c \ src/compact.c \ src/compact_description.c \ src/consistency.c \ src/consistency_filter.c \ src/consistency_info.c \ src/construct.c \ src/convert.c \ src/defaults_pga.c \ src/degree.c \ src/delete_tables.c \ src/down_class.c \ src/echelon.c \ src/echelonise_matrix.c \ src/eliminate.c \ src/expand_commutator.c \ src/exponent_auts.c \ src/exponent_info.c \ src/extend_automorphisms.c \ src/extend_matrix.c \ src/extend_representation.c \ src/extra_relations.c \ src/find_allowable_subgroup.c \ src/find_image.c \ src/find_permutation.c \ src/formula.c \ src/generator_definition.c \ src/get_definition_sets.c \ src/identity.c \ src/immediate_descendant.c \ src/initialise_pcp.c \ src/initialise_pga.c \ src/insoluble_orbits.c \ src/int_power.c \ src/interactive_pga.c \ src/interactive_pq.c \ src/invert.c \ src/invert_auts.c \ src/invert_modp.c \ src/is_genlim_exceeded.c \ src/is_space_exhausted.c \ src/isom_options.c \ src/iteration.c \ src/jacobi.c \ src/label_to_subgroup.c \ src/last_class.c \ src/list_commutators.c \ src/map_relations.c \ src/matrix.c \ src/maxoccur.c \ src/multiply_word.c \ src/next_class.c \ src/options.c \ src/orbit_summary.c \ src/permute_elements.c \ src/permute_subgroups.c \ src/pgroup.c \ src/power.c \ src/pquotient.c \ src/pretty_filter.c \ src/pretty_filterfns.c \ src/print_arrays.c \ src/print_auts.c \ src/print_level.c \ src/print_multiweight.c \ src/print_presentation.c \ src/print_structure.c \ src/print_word.c \ src/read.c \ src/read_auts.c \ src/read_parameters.c \ src/read_relations.c \ src/read_relator_file.c \ src/read_value.c \ src/read_word.c \ src/reduce_matrix.c \ src/reduced_covers.c \ src/report_error.c \ src/restore_group.c \ src/setup.c \ src/setup_reps.c \ src/soluble_orbits.c \ src/solve_equation.c \ src/stabiliser.c \ src/stages.c \ src/standard.c \ src/start_group.c \ src/start_iteration.c \ src/step_range.c \ src/store_definition_sets.c \ src/strip_identities.c \ src/subgroup_to_label.c \ src/system.c \ src/tail_info.c \ src/tails.c \ src/tails_filter.c \ src/text.c \ src/update.c \ src/update_generators.c \ src/update_name.c \ src/write.c \ src/main.c all-local: pq$(EXEEXT) $(mkdir_p) $(top_srcdir)/$(BINARCHDIR) rm -f $(abs_top_srcdir)/$(BINARCHDIR)/pq$(EXEEXT) cp pq$(EXEEXT) $(abs_top_srcdir)/$(BINARCHDIR) @echo "SUCCESS!" clean-local: rm -rf $(BINARCHDIR) (cd doc && rm -f *.aux *.bbl *.blg *.brf *.idx *.ilg *.ind *.log *.out *.pnr *.toc) (cd standalone-doc && rm -rf *.aux *.log *.toc) distclean-local: (cd examples; make distclean) rm -rf standalone/bin doc: $(GAP_EXEC) -A --quitonbreak -b -q < makedoc.g .PHONY: doc #test: # (cd examples; make) anupq-3.3.0/README.md000644 000766 000024 00000020322 14355420571 014414 0ustar00mhornstaff000000 000000 [![Build Status](https://github.com/gap-packages/anupq/workflows/CI/badge.svg?branch=master)](https://github.com/gap-packages/anupq/actions?query=workflow%3ACI+branch%3Amaster) [![Code Coverage](https://codecov.io/github/gap-packages/anupq/coverage.svg?branch=master&token=)](https://codecov.io/gh/gap-packages/anupq) # The ANUPQ package The ANUPQ package is a GAP4 interface with the ANU pq C program written by Eamonn O'Brien. The ANU pq C program provides access to implementations of the following algorithms: 1. A p-quotient algorithm to compute a power-commutator presentation for a group of prime power order. The algorithm implemented here is based on that described in Newman and O'Brien (1996), Havas and Newman (1980), and papers referred to there. Another description of the algorithm appears in Vaughan-Lee (1990). A FORTRAN implementation of this algorithm was programmed by Alford and Havas. The basic data structures of that implementation are retained. 2. A p-group generation algorithm to generate descriptions of groups of prime power order. The algorithm implemented here is based on the algorithms described in Newman (1977) and O'Brien (1990). A FORTRAN implementation of this algorithm was earlier developed by Newman and O'Brien. 3. A standard presentation algorithm used to compute a canonical power-commutator presentation of a p-group. The algorithm implemented here is described in O'Brien (1994). 4. An algorithm which can be used to compute the automorphism group of a p-group. The algorithm implemented here is described in O'Brien (1994). The following section describes the installation of the ANUPQ package. A description of the functions available in the ANUPQ package is given in the package manual in the doc directory. For details about the implementation and the standalone version see the README and guide.dvi in the standalone-doc directory. ## Obtaining the ANUPQ package Note that, owing to its C code component, the ANUPQ package can be installed under UNIX or in environments similar to UNIX. In particular it is known to work on Linux and Mac OS X, and also on Windows equipped with cygwin. You can download `anupq-XXX.tar.gz` (where `XXX` is the package version number) from the home page for the ANUPQ package or via the GAP web site ## Installing the ANUPQ package To install the ANUPQ package, move the file `anupq-.tar.gz` into the `pkg` directory in which you plan to install ANUPQ. Usually, this will be the directory `pkg` in the hierarchy of your version of GAP 4. (However, it is also possible to keep an additional `pkg` directory in your private directories, see section "ref:Installing GAP Packages" of the GAP 4 reference manual for details on how to do this.) ANUPQ package requires at least GAP 4.9 and AutPGrp 1.5, although we recommend using the most recent versions of each. ANUPQ optionally supports using GMP for large integer support. Unpack the archive `anupq-.tar.gz` in the `pkg` directory. Change directory to the newly created `anupq` directory. Now you need to call `configure`. If you installed ANUPQ into the main `pkg` directory, simply do this: ./configure If you installed ANUPQ in another directory than the usual `pkg` subdirectory, do ./configure --with-gaproot=path where `path` is a path to the GAP home directory. See ./configure --help for further options. Afterwards, you can simply call make to compile the binary and to install it in the appropriate place. The path of GAP (see *Note* below) used by the `pq` binary (the value `GAP` is set to in the `make` command) may be over-ridden by setting the environment variable `ANUPQ_GAP_EXEC`. These values are only of interest when the `pq` program is run as a standalone; however, the `testPq` script assumes you have set one of these correctly (see Section "Testing your ANUPQ installation"). When the `pq` program is started from GAP communication occurs via an iostream, so that the `pq` binary does not actually need to know a valid path for GAP is this case. *Note.* By "path of GAP" we mean the path of the command used to invoke GAP (which should be a script, e.g. the `gap.sh` script generated in the `bin` directory for the version of GAP when GAP was compiled). The usual strategy is to copy the `gap.sh` script to a standard location, e.g. `/usr/local/bin/gap`. It is a mistake to copy the GAP executable `gap` (in a directory with name of form `bin/`) to the standard location, since direct invocation of the executable results in GAP starting without being able to find its own library (a fatal error). ## The ANUPQ package documentation The ANUPQ package documentation source files, now XML (for GAPDoc), are found in the `doc` directory. There you should also find `manual.pdf`, a PDF version of the manual, and various HTML files constituting the HTML version of the manual (actually there are two HTML versions of the manual, the one with `_mj` files have MathJax enabled). The initial page for the HTML version of the manual is `chap0.html` (or `chap0_mj.html` with MathJax enabled), but you can toggle between the versions, once you have opened either, with your favourite browser. ## Testing the ANUPQ package installation Now it is time to test the installation. After doing `configure` and `make` you will have a `testPq` script. The script assumes that, if the environment variable `ANUPQ_GAP_EXEC` is set, it is a correct path for GAP, or otherwise that the `make` call that compiled the `pq` program set `GAP` to a correct path for GAP (see Section "Running the pq program as a standalone" in the ANUPQ package manual for more details). To run the tests, just type: ./testPq Some of the tests the script runs take a while. Please be patient. The output you see should be something like the following: Made dir: /tmp/testPq Testing installation of ANUPQ Package (version 3.3.0) The first two tests check that the pq C program compiled ok. Testing the pq binary ... OK. Testing the pq binary's stack size ... OK. The pq C program compiled ok! We test it's the right one below. The next tests check that you have the right version of GAP for version 3.1 of the ANUPQ package and that GAP is finding the right versions of the ANUPQ and AutPGrp packages. Checking GAP ... pq binary made with GAP set to: /usr/local/bin/gap Starting GAP to determine version and package availability ... GAP version (4.10.1) ... OK. GAP found ANUPQ package (version 3.3.0) ... good. GAP found pq binary (version 1.9) ... good. GAP found AutPGrp package (version 1.5) ... good. GAP is OK. Checking the link between the pq binary and GAP ... OK. Testing the standard presentation part of the pq binary ... OK. Doing p-group generation (final GAP/ANUPQ) test ... OK. Tests complete. Removed dir: /tmp/testPq Enjoy using your functional ANUPQ package! ## Bug reports For bug reports, feature requests and suggestions, please refer to When sending a bug report, remember we will need to be able to reproduce the problem; so please include: * The version of GAP you are using; either look at the header when you start up GAP, or at the gap> prompt type: GAPInfo.Version; * The operating system you are using e.g. Linux, Mac OS X, Windows, FreeBSD, Solaris... * The compiler you used to compile `pq` and the options you used. Type: gcc -v or: cc -version, and look in Makefile for the value of CC to find out. * A script, either in GAP or standalone `pq`, that demonstrates the bug, along with a description of why it's a bug (e.g. by adding comments to the script - recall, comments, both in GAP or standalone `pq`, begin with a #). ## License The ANUPQ package is licensed under the Artistic License 2.0. For the exact terms of this license, please refer to the `LICENSE` file provided to you as part of the ANUPQ package, or refer to . anupq-3.3.0/cnf/000755 000766 000024 00000000000 14355420747 013711 5ustar00mhornstaff000000 000000 anupq-3.3.0/makedoc.g000644 000766 000024 00000001162 14355420571 014711 0ustar00mhornstaff000000 000000 if fail = LoadPackage("AutoDoc", ">= 2016.01.21") then Error("AutoDoc 2016.01.21 or newer is required"); fi; # Use AutoDoc to regenerate the manual title page with data from # PackageInfo.g (i.e. make sure the author and version information is # up-to-date). AutoDoc(rec( scaffold := rec( includes := [ "intro.xml", "basics.xml", "infra.xml", "non-interact.xml", "interact.xml", "options.xml", "install.xml", ], appendix := [ "examples.xml" ], entities := [ "ANUPQ", "AutPGrp" ], ) )); QUIT; anupq-3.3.0/examples/000755 000766 000024 00000000000 14355420571 014754 5ustar00mhornstaff000000 000000 anupq-3.3.0/testPq.in000644 000766 000024 00000022061 14355420571 014747 0ustar00mhornstaff000000 000000 #!/usr/bin/env perl # Turn on autoflush local $| = 1; $pwd = `pwd`; chomp $pwd; $tstdir = "$pwd/tst"; $i = ""; $tmpdir = "/tmp/testPq"; while ( (-d "$tmpdir$i") && !(-W "$tmpdir$i") ) { $i++ } $tmpdir .= $i; system("rm -rf $tmpdir; mkdir $tmpdir"); print "Made dir: $tmpdir\n"; $ANUPQversion = "@PACKAGE_VERSION@"; $pqbinaryversion = "1.9"; $AutPGrpversion = "1.5"; $GAPversion = "4.5"; # required GAP version for ANUPQ print "Testing installation of ANUPQ Package (version $ANUPQversion)\n\n", "The first two tests check that the pq C program compiled ok.\n"; $pq = "$pwd/bin/@GAPARCH@/pq"; ### standalone tests ############################################### # Test 1 print "Test 1: Testing the pq binary ..."; check("test1.pga", ""); # Test 2 print "Test 2: Testing the pq binary's stack size ..."; check("test2.pga", ""); print "The pq C program compiled ok! We test it's the right one below.\n\n", "The next tests check that you have the right version of GAP\n", "for version $ANUPQversion of the ANUPQ package and that GAP is finding\n", "the right versions of the ANUPQ and AutPGrp packages.\n\n"; ### GAP - ANUPQ package tests ##################################### # Test GAP print "Checking GAP ...\n"; $pq_does_not_know_GAP = 0; $GAP_EXEC = "@GAP_EXEC@"; if ( ($gap = $ENV{ANUPQ_GAP_EXEC}) ne "" ) { print " Found ANUPQ_GAP_EXEC environment variable set to: $gap\n"; } elsif ($GAP_EXEC ne "") { chomp($gap = $GAP_EXEC); print " pq binary made with GAP set to: $gap\n"; } else { $pq_does_not_know_GAP = 1; chomp($gap = `which gap4` || `which gap`); print " Found gap: $gap\n"; } open( GAPIN, ">$tmpdir/gapinput"); print GAPIN "CompareVersionNumbers(GAPInfo.Version, \"$GAPversion\");\n", "GAPInfo.Version;\n", "SetInfoLevel(InfoWarning, 0); # switch off warning messages\n", "TestPackageAvailability(\"anupq\", \"$ANUPQversion\");\n", "if LoadPackage(\"anupq\", \"$ANUPQversion\") = true then\n", " Print(GAPInfo.PackagesInfo.anupq[1].Version, \"\\n\");\n", " Print(ANUPQData.version, \"\\n\");\n", "fi;\n", "TestPackageAvailability(\"autpgrp\", \"\");\n", "TestPackageAvailability(\"autpgrp\", \"$AutPGrpversion\");\n", "if LoadPackage(\"autpgrp\", \"$AutPGrpversion\") = true then\n", " Print(GAPInfo.PackagesInfo.autpgrp[1].Version);\n", "elif LoadPackage(\"autpgrp\") = true then\n", " Print(GAPInfo.PackagesInfo.autpgrp[1].Version, \"\\n\");\n", "fi;\n"; close GAPIN; print " Starting GAP to determine version and package availability ...\n"; system("$gap -A -q -r < $tmpdir/gapinput > $tmpdir/gapout"); #print "$tmpdir/gapinput:\n"; #system("more $tmpdir/gapinput"); #print "$tmpdir/gapoutput:\n"; #system("more $tmpdir/gapoutput"); open(GAPOUT, "<$tmpdir/gapout"); $line = ; while ( $line =~ /^\#W/ ) { $line = ; } $version = ; if ( $line !~ /(true|false)/ ) { # the GAP 3 case $version = $line; } $version =~ s/"//g; chomp $version; if ( $line =~ /true/ ) { print " GAP version ($version) ... OK.\n"; } elsif ( $line =~ /false/ ) { die " GAP version ($version) ... too old! At least GAP $GAPversion required!\n"; } else { die " GAP version ($version) ... please install GAP 4,", " at least version $GAPversion required!\n\n", " If you already have a new enough version of GAP 4 installed\n", " then you probably need to compile pq with an", " explicit GAP path, e.g.\n\n", " make GAP=/usr/local/bin/gap4\n"; } if ( ($line = ) !~ /(fail|#I Error)/ ) { while ( ($line = ) =~ /^#I/ ) { } chomp ($ANUPQfoundversion = $line); if ($ANUPQfoundversion == $ANUPQversion) { print " GAP found ANUPQ package (version $ANUPQfoundversion) ... good.\n"; } else { # $ANUPQfoundversion > $ANUPQversion print " GAP found ANUPQ package in a more recent version ", "($ANUPQfoundversion) ...\n", " Please check your installation!\n"; } } else { die " GAP did not find version $ANUPQversion of ANUPQ package ... \n". " Please check installation instructions for ANUPQ package.\n"; } if ( ($line = ) !~ /(fail|#I Error)/ ) { chomp ($pqbinaryfoundversion = $line); if ($pqbinaryversion eq $pqbinaryfoundversion) { print " GAP found pq binary (version $pqbinaryfoundversion) ... good.\n"; } else { die " GAP found pq binary (version $pqbinaryfoundversion) ... not current!\n", " ANUPQ $ANUPQversion uses version $pqbinaryversion of ", "the pq program.\n", " It seems an earlier installation has been found?!\n"; } } else { die " GAP does not have the appropriate pq program installed ... \n", " ANUPQ $ANUPQversion uses version $pqbinaryversion of \n", " the pq program.\n"; } if ( ($line = ) !~ /(fail|#I Error)/ ) { if ( ($line = ) !~ /(fail|#I Error)/ ) { chomp ($AutPGrpfoundversion = ); print " GAP found AutPGrp package (version $AutPGrpfoundversion) ... good.\n"; } else { chomp ($AutPGrpfoundversion = ); die " GAP found AutPGrp package (version $AutPGrpfoundversion) ... too old!\n", " The ANUPQ package requires at least version $AutPGrpversion of ", "the AutPGrp package.\n"; } } else { die " GAP does not have the AutPGrp package installed ... \n", " The ANUPQ package requires the AutPGrp package \n", " (at least version $AutPGrpversion) for the computation of \n", " automorphism groups.\n"; } close GAPOUT; print " GAP is OK.\n\n"; # Test 3 print "Test 3: Checking the link between the pq binary and GAP ..."; if ( $pq_does_not_know_GAP ) { print " failed\n"; die " The environment variable: ANUPQ_GAP_EXEC is not set;\n". " and the pq binary was made with: make ... GAP=\"\" ??\n". " Please check the ANUPQ package installation instructions\n". " and either set the environment variable: ANUPQ_GAP_EXEC, or\n". " re-make the pq binary setting GAP to a valid path.\n"; } check("test3.pga", ""); # Test 4 print "Test 4: Testing the standard presentation part of the pq binary ..."; check("test4.sp", "-i -k "); # Test 5 print "Test 5: Doing p-group generation (final GAP/ANUPQ) test ..."; open( GAPIN, ">$tmpdir/gapinput"); print GAPIN "SetInfoLevel(InfoWarning, 0); LoadPackage( \"anupq\" );;\n", "SetInfoLevel(InfoWarning, 1);\n", "SetInfoLevel(InfoANUPQ, 1);\n", "Test( \"tst/anupga.tst\" );\n"; close GAPIN; system("$gap -b < $tmpdir/gapinput > $tmpdir/gapout"); open(GAPOUT, "<$tmpdir/gapout"); $seen_gap_prompt = 0; while () { $seen_gap_prompt = 1 if ( /^gap> /); next if ( !$seen_gap_prompt ); if ( /^((gap> )*(\#I --|[+] |Line|$)|true$)/ ) { next; } elsif( /Pcgs\(\[ f1, f2, f3, f4 \]\) -> \[ / ) { next; } else { print " error.\n"; die " Please email the file: $tmpdir/gapout\n", " to Greg.Gamble\@uwa.edu.au\n"; } } print " OK.\n", "Tests complete.\n"; system("rm -rf $tmpdir; mkdir $tmpdir"); print "Removed dir: $tmpdir\n", "Enjoy using your functional ANUPQ package!\n"; sub check { my ($file, $opts) = @_; (my $outfile = $file) =~ s/[.](pga|sp)/.out/; # run pq over test file and clean out system-dependent stuff system("( cd $tmpdir; ". " $pq $opts< $tstdir/$file ". # ignore first two lines containing hostname and date information " | tail -n +3 ". " | grep -v seconds | grep -v '#I --' ". # sometimes emitted by gap-dev if a C source file CRC is out-of-date " | grep -v '#W ' ". # sometimes some shell escape sequence is printed " | sed -e 's/.\\[\\?.\\[\\?1034h//' ". # sometimes Info-ed by other packages " | grep -v 'GAPDoc not available' ". " | grep -v '#I default' | grep -v '#I a method' ". " | grep -v '#I underly' | grep -v '#I probably' ". " | grep -v ' g1, g2' | grep -v ' g18, g19, g20' ". " > $outfile )"); # now the only differences with the master copy should be due to pq's banner my @diff = `diff $tstdir/out/$outfile $tmpdir/$outfile`; if ($diff[0] =~ /^0a1,2/) { @diff = splice(@diff, 3); #remove first three difference lines } if (@diff == 0) { print " OK.\n"; } else { #print " differences:\n @diff"; if ( $file =~ /3/ ) { if ($ENV{ANUPQ_GAP_EXEC} ne "") { die " Please check the ANUPQ package installation instructions.\n" ." The setting of the environment variable: ANUPQ_GAP_EXEC\n" ." is not a valid path for GAP.\n"; } else { die " Please check the ANUPQ package installation instructions.\n" ." Value of when the pq was made with: make ... GAP=\n" ." is not a valid path for GAP.\n"; } } else { if ( $file =~ /4/ && @diff == 10 && !(grep { !/^\d+d\d+$/ && !/^<.*automorphism group/ } @diff) ) { #differences due to not compiling with gmp print " OK.\n"; } else { print " error.\n"; die " Please email the file: $tmpdir/$outfile\n", " to Greg.Gamble\@uwa.edu.au\n"; } } } } anupq-3.3.0/lib/000755 000766 000024 00000000000 14355420571 013704 5ustar00mhornstaff000000 000000 anupq-3.3.0/m4/000755 000766 000024 00000000000 14355420571 013456 5ustar00mhornstaff000000 000000 anupq-3.3.0/doc/000755 000766 000024 00000000000 14355420744 013705 5ustar00mhornstaff000000 000000 anupq-3.3.0/tst/000755 000766 000024 00000000000 14355420571 013750 5ustar00mhornstaff000000 000000 anupq-3.3.0/init.g000644 000766 000024 00000001623 14355420571 014253 0ustar00mhornstaff000000 000000 ############################################################################# ## #W init.g ANUPQ package Werner Nickel #W Greg Gamble ## ############################################################################# ## #R Read the head file and declaration files. ## ReadPackage( "anupq", "lib/anupqhead.gd" ); ReadPackage( "anupq", "lib/anupqprop.gd" ); ReadPackage( "anupq", "lib/anupq.gd" ); ReadPackage( "anupq", "lib/anupga.gd" ); ReadPackage( "anupq", "lib/anusp.gd" ); ReadPackage( "anupq", "lib/anupqopt.gd" ); ReadPackage( "anupq", "lib/anupqios.gd" ); ReadPackage( "anupq", "lib/anupqi.gd" ); ReadPackage( "anupq", "lib/anupqid.gd" ); ReadPackage( "anupq", "lib/anustab.gd" ); ReadPackage( "anupq", "lib/anupqxdesc.gd" ); #E init.g . . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/standalone-doc/000755 000766 000024 00000000000 14355420571 016031 5ustar00mhornstaff000000 000000 anupq-3.3.0/Makefile.in000644 000766 000024 00001141403 14355420747 015214 0ustar00mhornstaff000000 000000 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : bin_PROGRAMS = pq$(EXEEXT) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/find_gap.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/config.h CONFIG_CLEAN_FILES = testPq CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am__dirstamp = $(am__leading_dot)dirstamp am_pq_OBJECTS = src/pq-AllocateSpace.$(OBJEXT) \ src/pq-CloseFile.$(OBJEXT) src/pq-Extend_Auts.$(OBJEXT) \ src/pq-FreeSpace.$(OBJEXT) src/pq-GAP.$(OBJEXT) \ src/pq-GAP_link_via_file.$(OBJEXT) \ src/pq-GAP_present.$(OBJEXT) src/pq-OpenFile.$(OBJEXT) \ src/pq-TemporaryFile.$(OBJEXT) src/pq-action.$(OBJEXT) \ src/pq-assemble_matrix.$(OBJEXT) src/pq-autgp_order.$(OBJEXT) \ src/pq-calculate_jacobi.$(OBJEXT) \ src/pq-central_auts.$(OBJEXT) src/pq-check_exponent.$(OBJEXT) \ src/pq-class1_eliminate.$(OBJEXT) \ src/pq-close_relations.$(OBJEXT) \ src/pq-close_subgroup.$(OBJEXT) src/pq-collect.$(OBJEXT) \ src/pq-collect_comm.$(OBJEXT) \ src/pq-collect_gen_word.$(OBJEXT) \ src/pq-collect_relations.$(OBJEXT) \ src/pq-collect_word.$(OBJEXT) src/pq-collectp2.$(OBJEXT) \ src/pq-commutator.$(OBJEXT) src/pq-commute_dgen.$(OBJEXT) \ src/pq-compact.$(OBJEXT) src/pq-compact_description.$(OBJEXT) \ src/pq-consistency.$(OBJEXT) \ src/pq-consistency_filter.$(OBJEXT) \ src/pq-consistency_info.$(OBJEXT) src/pq-construct.$(OBJEXT) \ src/pq-convert.$(OBJEXT) src/pq-defaults_pga.$(OBJEXT) \ src/pq-degree.$(OBJEXT) src/pq-delete_tables.$(OBJEXT) \ src/pq-down_class.$(OBJEXT) src/pq-echelon.$(OBJEXT) \ src/pq-echelonise_matrix.$(OBJEXT) src/pq-eliminate.$(OBJEXT) \ src/pq-expand_commutator.$(OBJEXT) \ src/pq-exponent_auts.$(OBJEXT) src/pq-exponent_info.$(OBJEXT) \ src/pq-extend_automorphisms.$(OBJEXT) \ src/pq-extend_matrix.$(OBJEXT) \ src/pq-extend_representation.$(OBJEXT) \ src/pq-extra_relations.$(OBJEXT) \ src/pq-find_allowable_subgroup.$(OBJEXT) \ src/pq-find_image.$(OBJEXT) src/pq-find_permutation.$(OBJEXT) \ src/pq-formula.$(OBJEXT) src/pq-generator_definition.$(OBJEXT) \ src/pq-get_definition_sets.$(OBJEXT) src/pq-identity.$(OBJEXT) \ src/pq-immediate_descendant.$(OBJEXT) \ src/pq-initialise_pcp.$(OBJEXT) \ src/pq-initialise_pga.$(OBJEXT) \ src/pq-insoluble_orbits.$(OBJEXT) src/pq-int_power.$(OBJEXT) \ src/pq-interactive_pga.$(OBJEXT) \ src/pq-interactive_pq.$(OBJEXT) src/pq-invert.$(OBJEXT) \ src/pq-invert_auts.$(OBJEXT) src/pq-invert_modp.$(OBJEXT) \ src/pq-is_genlim_exceeded.$(OBJEXT) \ src/pq-is_space_exhausted.$(OBJEXT) \ src/pq-isom_options.$(OBJEXT) src/pq-iteration.$(OBJEXT) \ src/pq-jacobi.$(OBJEXT) src/pq-label_to_subgroup.$(OBJEXT) \ src/pq-last_class.$(OBJEXT) src/pq-list_commutators.$(OBJEXT) \ src/pq-map_relations.$(OBJEXT) src/pq-matrix.$(OBJEXT) \ src/pq-maxoccur.$(OBJEXT) src/pq-multiply_word.$(OBJEXT) \ src/pq-next_class.$(OBJEXT) src/pq-options.$(OBJEXT) \ src/pq-orbit_summary.$(OBJEXT) \ src/pq-permute_elements.$(OBJEXT) \ src/pq-permute_subgroups.$(OBJEXT) src/pq-pgroup.$(OBJEXT) \ src/pq-power.$(OBJEXT) src/pq-pquotient.$(OBJEXT) \ src/pq-pretty_filter.$(OBJEXT) \ src/pq-pretty_filterfns.$(OBJEXT) \ src/pq-print_arrays.$(OBJEXT) src/pq-print_auts.$(OBJEXT) \ src/pq-print_level.$(OBJEXT) \ src/pq-print_multiweight.$(OBJEXT) \ src/pq-print_presentation.$(OBJEXT) \ src/pq-print_structure.$(OBJEXT) src/pq-print_word.$(OBJEXT) \ src/pq-read.$(OBJEXT) src/pq-read_auts.$(OBJEXT) \ src/pq-read_parameters.$(OBJEXT) \ src/pq-read_relations.$(OBJEXT) \ src/pq-read_relator_file.$(OBJEXT) src/pq-read_value.$(OBJEXT) \ src/pq-read_word.$(OBJEXT) src/pq-reduce_matrix.$(OBJEXT) \ src/pq-reduced_covers.$(OBJEXT) src/pq-report_error.$(OBJEXT) \ src/pq-restore_group.$(OBJEXT) src/pq-setup.$(OBJEXT) \ src/pq-setup_reps.$(OBJEXT) src/pq-soluble_orbits.$(OBJEXT) \ src/pq-solve_equation.$(OBJEXT) src/pq-stabiliser.$(OBJEXT) \ src/pq-stages.$(OBJEXT) src/pq-standard.$(OBJEXT) \ src/pq-start_group.$(OBJEXT) src/pq-start_iteration.$(OBJEXT) \ src/pq-step_range.$(OBJEXT) \ src/pq-store_definition_sets.$(OBJEXT) \ src/pq-strip_identities.$(OBJEXT) \ src/pq-subgroup_to_label.$(OBJEXT) src/pq-system.$(OBJEXT) \ src/pq-tail_info.$(OBJEXT) src/pq-tails.$(OBJEXT) \ src/pq-tails_filter.$(OBJEXT) src/pq-text.$(OBJEXT) \ src/pq-update.$(OBJEXT) src/pq-update_generators.$(OBJEXT) \ src/pq-update_name.$(OBJEXT) src/pq-write.$(OBJEXT) \ src/pq-main.$(OBJEXT) pq_OBJECTS = $(am_pq_OBJECTS) am__DEPENDENCIES_1 = pq_DEPENDENCIES = $(am__DEPENDENCIES_1) pq_LINK = $(CCLD) $(pq_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/cnf/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = src/$(DEPDIR)/pq-AllocateSpace.Po \ src/$(DEPDIR)/pq-CloseFile.Po src/$(DEPDIR)/pq-Extend_Auts.Po \ src/$(DEPDIR)/pq-FreeSpace.Po src/$(DEPDIR)/pq-GAP.Po \ src/$(DEPDIR)/pq-GAP_link_via_file.Po \ src/$(DEPDIR)/pq-GAP_present.Po src/$(DEPDIR)/pq-OpenFile.Po \ src/$(DEPDIR)/pq-TemporaryFile.Po src/$(DEPDIR)/pq-action.Po \ src/$(DEPDIR)/pq-assemble_matrix.Po \ src/$(DEPDIR)/pq-autgp_order.Po \ src/$(DEPDIR)/pq-calculate_jacobi.Po \ src/$(DEPDIR)/pq-central_auts.Po \ src/$(DEPDIR)/pq-check_exponent.Po \ src/$(DEPDIR)/pq-class1_eliminate.Po \ src/$(DEPDIR)/pq-close_relations.Po \ src/$(DEPDIR)/pq-close_subgroup.Po src/$(DEPDIR)/pq-collect.Po \ src/$(DEPDIR)/pq-collect_comm.Po \ src/$(DEPDIR)/pq-collect_gen_word.Po \ src/$(DEPDIR)/pq-collect_relations.Po \ src/$(DEPDIR)/pq-collect_word.Po src/$(DEPDIR)/pq-collectp2.Po \ src/$(DEPDIR)/pq-commutator.Po \ src/$(DEPDIR)/pq-commute_dgen.Po src/$(DEPDIR)/pq-compact.Po \ src/$(DEPDIR)/pq-compact_description.Po \ src/$(DEPDIR)/pq-consistency.Po \ src/$(DEPDIR)/pq-consistency_filter.Po \ src/$(DEPDIR)/pq-consistency_info.Po \ src/$(DEPDIR)/pq-construct.Po src/$(DEPDIR)/pq-convert.Po \ src/$(DEPDIR)/pq-defaults_pga.Po src/$(DEPDIR)/pq-degree.Po \ src/$(DEPDIR)/pq-delete_tables.Po \ src/$(DEPDIR)/pq-down_class.Po src/$(DEPDIR)/pq-echelon.Po \ src/$(DEPDIR)/pq-echelonise_matrix.Po \ src/$(DEPDIR)/pq-eliminate.Po \ src/$(DEPDIR)/pq-expand_commutator.Po \ src/$(DEPDIR)/pq-exponent_auts.Po \ src/$(DEPDIR)/pq-exponent_info.Po \ src/$(DEPDIR)/pq-extend_automorphisms.Po \ src/$(DEPDIR)/pq-extend_matrix.Po \ src/$(DEPDIR)/pq-extend_representation.Po \ src/$(DEPDIR)/pq-extra_relations.Po \ src/$(DEPDIR)/pq-find_allowable_subgroup.Po \ src/$(DEPDIR)/pq-find_image.Po \ src/$(DEPDIR)/pq-find_permutation.Po \ src/$(DEPDIR)/pq-formula.Po \ src/$(DEPDIR)/pq-generator_definition.Po \ src/$(DEPDIR)/pq-get_definition_sets.Po \ src/$(DEPDIR)/pq-identity.Po \ src/$(DEPDIR)/pq-immediate_descendant.Po \ src/$(DEPDIR)/pq-initialise_pcp.Po \ src/$(DEPDIR)/pq-initialise_pga.Po \ src/$(DEPDIR)/pq-insoluble_orbits.Po \ src/$(DEPDIR)/pq-int_power.Po \ src/$(DEPDIR)/pq-interactive_pga.Po \ src/$(DEPDIR)/pq-interactive_pq.Po src/$(DEPDIR)/pq-invert.Po \ src/$(DEPDIR)/pq-invert_auts.Po \ src/$(DEPDIR)/pq-invert_modp.Po \ src/$(DEPDIR)/pq-is_genlim_exceeded.Po \ src/$(DEPDIR)/pq-is_space_exhausted.Po \ src/$(DEPDIR)/pq-isom_options.Po src/$(DEPDIR)/pq-iteration.Po \ src/$(DEPDIR)/pq-jacobi.Po \ src/$(DEPDIR)/pq-label_to_subgroup.Po \ src/$(DEPDIR)/pq-last_class.Po \ src/$(DEPDIR)/pq-list_commutators.Po src/$(DEPDIR)/pq-main.Po \ src/$(DEPDIR)/pq-map_relations.Po src/$(DEPDIR)/pq-matrix.Po \ src/$(DEPDIR)/pq-maxoccur.Po src/$(DEPDIR)/pq-multiply_word.Po \ src/$(DEPDIR)/pq-next_class.Po src/$(DEPDIR)/pq-options.Po \ src/$(DEPDIR)/pq-orbit_summary.Po \ src/$(DEPDIR)/pq-permute_elements.Po \ src/$(DEPDIR)/pq-permute_subgroups.Po \ src/$(DEPDIR)/pq-pgroup.Po src/$(DEPDIR)/pq-power.Po \ src/$(DEPDIR)/pq-pquotient.Po \ src/$(DEPDIR)/pq-pretty_filter.Po \ src/$(DEPDIR)/pq-pretty_filterfns.Po \ src/$(DEPDIR)/pq-print_arrays.Po \ src/$(DEPDIR)/pq-print_auts.Po src/$(DEPDIR)/pq-print_level.Po \ src/$(DEPDIR)/pq-print_multiweight.Po \ src/$(DEPDIR)/pq-print_presentation.Po \ src/$(DEPDIR)/pq-print_structure.Po \ src/$(DEPDIR)/pq-print_word.Po src/$(DEPDIR)/pq-read.Po \ src/$(DEPDIR)/pq-read_auts.Po \ src/$(DEPDIR)/pq-read_parameters.Po \ src/$(DEPDIR)/pq-read_relations.Po \ src/$(DEPDIR)/pq-read_relator_file.Po \ src/$(DEPDIR)/pq-read_value.Po src/$(DEPDIR)/pq-read_word.Po \ src/$(DEPDIR)/pq-reduce_matrix.Po \ src/$(DEPDIR)/pq-reduced_covers.Po \ src/$(DEPDIR)/pq-report_error.Po \ src/$(DEPDIR)/pq-restore_group.Po src/$(DEPDIR)/pq-setup.Po \ src/$(DEPDIR)/pq-setup_reps.Po \ src/$(DEPDIR)/pq-soluble_orbits.Po \ src/$(DEPDIR)/pq-solve_equation.Po \ src/$(DEPDIR)/pq-stabiliser.Po src/$(DEPDIR)/pq-stages.Po \ src/$(DEPDIR)/pq-standard.Po src/$(DEPDIR)/pq-start_group.Po \ src/$(DEPDIR)/pq-start_iteration.Po \ src/$(DEPDIR)/pq-step_range.Po \ src/$(DEPDIR)/pq-store_definition_sets.Po \ src/$(DEPDIR)/pq-strip_identities.Po \ src/$(DEPDIR)/pq-subgroup_to_label.Po \ src/$(DEPDIR)/pq-system.Po src/$(DEPDIR)/pq-tail_info.Po \ src/$(DEPDIR)/pq-tails.Po src/$(DEPDIR)/pq-tails_filter.Po \ src/$(DEPDIR)/pq-text.Po src/$(DEPDIR)/pq-update.Po \ src/$(DEPDIR)/pq-update_generators.Po \ src/$(DEPDIR)/pq-update_name.Po src/$(DEPDIR)/pq-write.Po am__mv = mv -f AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(pq_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` AM_RECURSIVE_TARGETS = cscope ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ GAPARCH = @GAPARCH@ GAPROOT = @GAPROOT@ GAP_CFLAGS = @GAP_CFLAGS@ GAP_CPPFLAGS = @GAP_CPPFLAGS@ GAP_EXEC = @GAP_EXEC@ GAP_LDFLAGS = @GAP_LDFLAGS@ GMP_CPPFLAGS = @GMP_CPPFLAGS@ GMP_LIBS = @GMP_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 BINARCHDIR = bin/$(GAPARCH) # # The following are valid compilation flags for the program. # #STANDARD_PCP -- if compiling version which permits construction of # standard presentation # #GAP_LINK -- GAP is called by pq to perform insoluble stabiliser calculations # #GAP -- if compiling version for incorporation in GAP # #DEBUG -- debugging information is generated by a number of procedures # # Change features of executable # #RUN_TIME -- supply maximum number of defining generators and class bound # at run-time (see README file for further details) # #TAILS_FILTER -- apply filter for exponent 4 and 5 and max occurrences # #CONSISTENCY_FILTER -- apply filter for exponent 4 and 5 and max occurrences # # PQFLAGS = -DGAP_LINK_VIA_FILE -DGAP -DSTANDARD_PCP -DGROUP \ -DANUPQ_GAP_EXEC='"@GAP_EXEC@"' pq_LDADD = $(GMP_LIBS) pq_CPPFLAGS = $(GMP_CPPFLAGS) $(PQFLAGS) pq_CFLAGS = -Wall -Wextra -Wno-unused-parameter pq_SOURCES = \ src/AllocateSpace.c \ src/CloseFile.c \ src/Extend_Auts.c \ src/FreeSpace.c \ src/GAP.c \ src/GAP_link_via_file.c \ src/GAP_present.c \ src/OpenFile.c \ src/TemporaryFile.c \ src/action.c \ src/assemble_matrix.c \ src/autgp_order.c \ src/calculate_jacobi.c \ src/central_auts.c \ src/check_exponent.c \ src/class1_eliminate.c \ src/close_relations.c \ src/close_subgroup.c \ src/collect.c \ src/collect_comm.c \ src/collect_gen_word.c \ src/collect_relations.c \ src/collect_word.c \ src/collectp2.c \ src/commutator.c \ src/commute_dgen.c \ src/compact.c \ src/compact_description.c \ src/consistency.c \ src/consistency_filter.c \ src/consistency_info.c \ src/construct.c \ src/convert.c \ src/defaults_pga.c \ src/degree.c \ src/delete_tables.c \ src/down_class.c \ src/echelon.c \ src/echelonise_matrix.c \ src/eliminate.c \ src/expand_commutator.c \ src/exponent_auts.c \ src/exponent_info.c \ src/extend_automorphisms.c \ src/extend_matrix.c \ src/extend_representation.c \ src/extra_relations.c \ src/find_allowable_subgroup.c \ src/find_image.c \ src/find_permutation.c \ src/formula.c \ src/generator_definition.c \ src/get_definition_sets.c \ src/identity.c \ src/immediate_descendant.c \ src/initialise_pcp.c \ src/initialise_pga.c \ src/insoluble_orbits.c \ src/int_power.c \ src/interactive_pga.c \ src/interactive_pq.c \ src/invert.c \ src/invert_auts.c \ src/invert_modp.c \ src/is_genlim_exceeded.c \ src/is_space_exhausted.c \ src/isom_options.c \ src/iteration.c \ src/jacobi.c \ src/label_to_subgroup.c \ src/last_class.c \ src/list_commutators.c \ src/map_relations.c \ src/matrix.c \ src/maxoccur.c \ src/multiply_word.c \ src/next_class.c \ src/options.c \ src/orbit_summary.c \ src/permute_elements.c \ src/permute_subgroups.c \ src/pgroup.c \ src/power.c \ src/pquotient.c \ src/pretty_filter.c \ src/pretty_filterfns.c \ src/print_arrays.c \ src/print_auts.c \ src/print_level.c \ src/print_multiweight.c \ src/print_presentation.c \ src/print_structure.c \ src/print_word.c \ src/read.c \ src/read_auts.c \ src/read_parameters.c \ src/read_relations.c \ src/read_relator_file.c \ src/read_value.c \ src/read_word.c \ src/reduce_matrix.c \ src/reduced_covers.c \ src/report_error.c \ src/restore_group.c \ src/setup.c \ src/setup_reps.c \ src/soluble_orbits.c \ src/solve_equation.c \ src/stabiliser.c \ src/stages.c \ src/standard.c \ src/start_group.c \ src/start_iteration.c \ src/step_range.c \ src/store_definition_sets.c \ src/strip_identities.c \ src/subgroup_to_label.c \ src/system.c \ src/tail_info.c \ src/tails.c \ src/tails_filter.c \ src/text.c \ src/update.c \ src/update_generators.c \ src/update_name.c \ src/write.c \ src/main.c all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): include/config.h: include/stamp-h1 @test -f $@ || rm -f include/stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) include/stamp-h1 include/stamp-h1: $(top_srcdir)/include/config.hin $(top_builddir)/config.status @rm -f include/stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status include/config.h $(top_srcdir)/include/config.hin: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f include/stamp-h1 touch $@ distclean-hdr: -rm -f include/config.h include/stamp-h1 testPq: $(top_builddir)/config.status $(srcdir)/testPq.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) src/$(am__dirstamp): @$(MKDIR_P) src @: > src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/$(DEPDIR) @: > src/$(DEPDIR)/$(am__dirstamp) src/pq-AllocateSpace.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-CloseFile.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-Extend_Auts.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-FreeSpace.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-GAP.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-GAP_link_via_file.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-GAP_present.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-OpenFile.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-TemporaryFile.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-action.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-assemble_matrix.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-autgp_order.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-calculate_jacobi.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-central_auts.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-check_exponent.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-class1_eliminate.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-close_relations.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-close_subgroup.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-collect.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-collect_comm.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-collect_gen_word.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-collect_relations.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-collect_word.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-collectp2.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-commutator.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-commute_dgen.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-compact.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-compact_description.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-consistency.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-consistency_filter.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-consistency_info.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-construct.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-convert.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-defaults_pga.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-degree.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-delete_tables.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-down_class.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-echelon.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-echelonise_matrix.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-eliminate.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-expand_commutator.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-exponent_auts.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-exponent_info.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-extend_automorphisms.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-extend_matrix.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-extend_representation.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-extra_relations.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-find_allowable_subgroup.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-find_image.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-find_permutation.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-formula.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-generator_definition.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-get_definition_sets.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-identity.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-immediate_descendant.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-initialise_pcp.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-initialise_pga.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-insoluble_orbits.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-int_power.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-interactive_pga.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-interactive_pq.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-invert.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-invert_auts.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-invert_modp.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-is_genlim_exceeded.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-is_space_exhausted.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-isom_options.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-iteration.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-jacobi.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-label_to_subgroup.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-last_class.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-list_commutators.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-map_relations.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-matrix.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-maxoccur.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-multiply_word.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-next_class.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-options.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-orbit_summary.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-permute_elements.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-permute_subgroups.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-pgroup.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-power.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-pquotient.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-pretty_filter.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-pretty_filterfns.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-print_arrays.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-print_auts.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-print_level.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-print_multiweight.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-print_presentation.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-print_structure.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-print_word.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-read.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-read_auts.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-read_parameters.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-read_relations.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-read_relator_file.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-read_value.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-read_word.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-reduce_matrix.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-reduced_covers.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-report_error.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-restore_group.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-setup.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-setup_reps.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-soluble_orbits.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-solve_equation.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-stabiliser.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-stages.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-standard.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-start_group.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-start_iteration.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-step_range.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-store_definition_sets.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-strip_identities.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-subgroup_to_label.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-system.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-tail_info.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-tails.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-tails_filter.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-text.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-update.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-update_generators.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-update_name.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-write.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/pq-main.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) pq$(EXEEXT): $(pq_OBJECTS) $(pq_DEPENDENCIES) $(EXTRA_pq_DEPENDENCIES) @rm -f pq$(EXEEXT) $(AM_V_CCLD)$(pq_LINK) $(pq_OBJECTS) $(pq_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f src/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-AllocateSpace.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-CloseFile.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-Extend_Auts.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-FreeSpace.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-GAP.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-GAP_link_via_file.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-GAP_present.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-OpenFile.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-TemporaryFile.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-action.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-assemble_matrix.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-autgp_order.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-calculate_jacobi.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-central_auts.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-check_exponent.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-class1_eliminate.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-close_relations.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-close_subgroup.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-collect.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-collect_comm.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-collect_gen_word.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-collect_relations.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-collect_word.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-collectp2.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-commutator.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-commute_dgen.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-compact.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-compact_description.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-consistency.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-consistency_filter.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-consistency_info.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-construct.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-convert.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-defaults_pga.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-degree.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-delete_tables.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-down_class.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-echelon.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-echelonise_matrix.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-eliminate.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-expand_commutator.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-exponent_auts.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-exponent_info.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-extend_automorphisms.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-extend_matrix.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-extend_representation.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-extra_relations.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-find_allowable_subgroup.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-find_image.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-find_permutation.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-formula.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-generator_definition.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-get_definition_sets.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-identity.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-immediate_descendant.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-initialise_pcp.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-initialise_pga.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-insoluble_orbits.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-int_power.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-interactive_pga.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-interactive_pq.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-invert.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-invert_auts.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-invert_modp.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-is_genlim_exceeded.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-is_space_exhausted.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-isom_options.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-iteration.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-jacobi.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-label_to_subgroup.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-last_class.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-list_commutators.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-main.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-map_relations.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-matrix.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-maxoccur.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-multiply_word.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-next_class.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-options.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-orbit_summary.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-permute_elements.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-permute_subgroups.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-pgroup.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-power.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-pquotient.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-pretty_filter.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-pretty_filterfns.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-print_arrays.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-print_auts.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-print_level.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-print_multiweight.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-print_presentation.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-print_structure.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-print_word.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-read.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-read_auts.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-read_parameters.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-read_relations.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-read_relator_file.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-read_value.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-read_word.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-reduce_matrix.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-reduced_covers.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-report_error.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-restore_group.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-setup.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-setup_reps.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-soluble_orbits.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-solve_equation.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-stabiliser.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-stages.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-standard.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-start_group.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-start_iteration.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-step_range.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-store_definition_sets.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-strip_identities.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-subgroup_to_label.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-system.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-tail_info.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-tails.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-tails_filter.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-text.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-update.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-update_generators.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-update_name.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/pq-write.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` src/pq-AllocateSpace.o: src/AllocateSpace.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-AllocateSpace.o -MD -MP -MF src/$(DEPDIR)/pq-AllocateSpace.Tpo -c -o src/pq-AllocateSpace.o `test -f 'src/AllocateSpace.c' || echo '$(srcdir)/'`src/AllocateSpace.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-AllocateSpace.Tpo src/$(DEPDIR)/pq-AllocateSpace.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/AllocateSpace.c' object='src/pq-AllocateSpace.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-AllocateSpace.o `test -f 'src/AllocateSpace.c' || echo '$(srcdir)/'`src/AllocateSpace.c src/pq-AllocateSpace.obj: src/AllocateSpace.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-AllocateSpace.obj -MD -MP -MF src/$(DEPDIR)/pq-AllocateSpace.Tpo -c -o src/pq-AllocateSpace.obj `if test -f 'src/AllocateSpace.c'; then $(CYGPATH_W) 'src/AllocateSpace.c'; else $(CYGPATH_W) '$(srcdir)/src/AllocateSpace.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-AllocateSpace.Tpo src/$(DEPDIR)/pq-AllocateSpace.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/AllocateSpace.c' object='src/pq-AllocateSpace.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-AllocateSpace.obj `if test -f 'src/AllocateSpace.c'; then $(CYGPATH_W) 'src/AllocateSpace.c'; else $(CYGPATH_W) '$(srcdir)/src/AllocateSpace.c'; fi` src/pq-CloseFile.o: src/CloseFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-CloseFile.o -MD -MP -MF src/$(DEPDIR)/pq-CloseFile.Tpo -c -o src/pq-CloseFile.o `test -f 'src/CloseFile.c' || echo '$(srcdir)/'`src/CloseFile.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-CloseFile.Tpo src/$(DEPDIR)/pq-CloseFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/CloseFile.c' object='src/pq-CloseFile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-CloseFile.o `test -f 'src/CloseFile.c' || echo '$(srcdir)/'`src/CloseFile.c src/pq-CloseFile.obj: src/CloseFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-CloseFile.obj -MD -MP -MF src/$(DEPDIR)/pq-CloseFile.Tpo -c -o src/pq-CloseFile.obj `if test -f 'src/CloseFile.c'; then $(CYGPATH_W) 'src/CloseFile.c'; else $(CYGPATH_W) '$(srcdir)/src/CloseFile.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-CloseFile.Tpo src/$(DEPDIR)/pq-CloseFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/CloseFile.c' object='src/pq-CloseFile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-CloseFile.obj `if test -f 'src/CloseFile.c'; then $(CYGPATH_W) 'src/CloseFile.c'; else $(CYGPATH_W) '$(srcdir)/src/CloseFile.c'; fi` src/pq-Extend_Auts.o: src/Extend_Auts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-Extend_Auts.o -MD -MP -MF src/$(DEPDIR)/pq-Extend_Auts.Tpo -c -o src/pq-Extend_Auts.o `test -f 'src/Extend_Auts.c' || echo '$(srcdir)/'`src/Extend_Auts.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-Extend_Auts.Tpo src/$(DEPDIR)/pq-Extend_Auts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/Extend_Auts.c' object='src/pq-Extend_Auts.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-Extend_Auts.o `test -f 'src/Extend_Auts.c' || echo '$(srcdir)/'`src/Extend_Auts.c src/pq-Extend_Auts.obj: src/Extend_Auts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-Extend_Auts.obj -MD -MP -MF src/$(DEPDIR)/pq-Extend_Auts.Tpo -c -o src/pq-Extend_Auts.obj `if test -f 'src/Extend_Auts.c'; then $(CYGPATH_W) 'src/Extend_Auts.c'; else $(CYGPATH_W) '$(srcdir)/src/Extend_Auts.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-Extend_Auts.Tpo src/$(DEPDIR)/pq-Extend_Auts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/Extend_Auts.c' object='src/pq-Extend_Auts.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-Extend_Auts.obj `if test -f 'src/Extend_Auts.c'; then $(CYGPATH_W) 'src/Extend_Auts.c'; else $(CYGPATH_W) '$(srcdir)/src/Extend_Auts.c'; fi` src/pq-FreeSpace.o: src/FreeSpace.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-FreeSpace.o -MD -MP -MF src/$(DEPDIR)/pq-FreeSpace.Tpo -c -o src/pq-FreeSpace.o `test -f 'src/FreeSpace.c' || echo '$(srcdir)/'`src/FreeSpace.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-FreeSpace.Tpo src/$(DEPDIR)/pq-FreeSpace.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/FreeSpace.c' object='src/pq-FreeSpace.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-FreeSpace.o `test -f 'src/FreeSpace.c' || echo '$(srcdir)/'`src/FreeSpace.c src/pq-FreeSpace.obj: src/FreeSpace.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-FreeSpace.obj -MD -MP -MF src/$(DEPDIR)/pq-FreeSpace.Tpo -c -o src/pq-FreeSpace.obj `if test -f 'src/FreeSpace.c'; then $(CYGPATH_W) 'src/FreeSpace.c'; else $(CYGPATH_W) '$(srcdir)/src/FreeSpace.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-FreeSpace.Tpo src/$(DEPDIR)/pq-FreeSpace.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/FreeSpace.c' object='src/pq-FreeSpace.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-FreeSpace.obj `if test -f 'src/FreeSpace.c'; then $(CYGPATH_W) 'src/FreeSpace.c'; else $(CYGPATH_W) '$(srcdir)/src/FreeSpace.c'; fi` src/pq-GAP.o: src/GAP.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-GAP.o -MD -MP -MF src/$(DEPDIR)/pq-GAP.Tpo -c -o src/pq-GAP.o `test -f 'src/GAP.c' || echo '$(srcdir)/'`src/GAP.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-GAP.Tpo src/$(DEPDIR)/pq-GAP.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/GAP.c' object='src/pq-GAP.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-GAP.o `test -f 'src/GAP.c' || echo '$(srcdir)/'`src/GAP.c src/pq-GAP.obj: src/GAP.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-GAP.obj -MD -MP -MF src/$(DEPDIR)/pq-GAP.Tpo -c -o src/pq-GAP.obj `if test -f 'src/GAP.c'; then $(CYGPATH_W) 'src/GAP.c'; else $(CYGPATH_W) '$(srcdir)/src/GAP.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-GAP.Tpo src/$(DEPDIR)/pq-GAP.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/GAP.c' object='src/pq-GAP.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-GAP.obj `if test -f 'src/GAP.c'; then $(CYGPATH_W) 'src/GAP.c'; else $(CYGPATH_W) '$(srcdir)/src/GAP.c'; fi` src/pq-GAP_link_via_file.o: src/GAP_link_via_file.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-GAP_link_via_file.o -MD -MP -MF src/$(DEPDIR)/pq-GAP_link_via_file.Tpo -c -o src/pq-GAP_link_via_file.o `test -f 'src/GAP_link_via_file.c' || echo '$(srcdir)/'`src/GAP_link_via_file.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-GAP_link_via_file.Tpo src/$(DEPDIR)/pq-GAP_link_via_file.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/GAP_link_via_file.c' object='src/pq-GAP_link_via_file.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-GAP_link_via_file.o `test -f 'src/GAP_link_via_file.c' || echo '$(srcdir)/'`src/GAP_link_via_file.c src/pq-GAP_link_via_file.obj: src/GAP_link_via_file.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-GAP_link_via_file.obj -MD -MP -MF src/$(DEPDIR)/pq-GAP_link_via_file.Tpo -c -o src/pq-GAP_link_via_file.obj `if test -f 'src/GAP_link_via_file.c'; then $(CYGPATH_W) 'src/GAP_link_via_file.c'; else $(CYGPATH_W) '$(srcdir)/src/GAP_link_via_file.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-GAP_link_via_file.Tpo src/$(DEPDIR)/pq-GAP_link_via_file.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/GAP_link_via_file.c' object='src/pq-GAP_link_via_file.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-GAP_link_via_file.obj `if test -f 'src/GAP_link_via_file.c'; then $(CYGPATH_W) 'src/GAP_link_via_file.c'; else $(CYGPATH_W) '$(srcdir)/src/GAP_link_via_file.c'; fi` src/pq-GAP_present.o: src/GAP_present.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-GAP_present.o -MD -MP -MF src/$(DEPDIR)/pq-GAP_present.Tpo -c -o src/pq-GAP_present.o `test -f 'src/GAP_present.c' || echo '$(srcdir)/'`src/GAP_present.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-GAP_present.Tpo src/$(DEPDIR)/pq-GAP_present.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/GAP_present.c' object='src/pq-GAP_present.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-GAP_present.o `test -f 'src/GAP_present.c' || echo '$(srcdir)/'`src/GAP_present.c src/pq-GAP_present.obj: src/GAP_present.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-GAP_present.obj -MD -MP -MF src/$(DEPDIR)/pq-GAP_present.Tpo -c -o src/pq-GAP_present.obj `if test -f 'src/GAP_present.c'; then $(CYGPATH_W) 'src/GAP_present.c'; else $(CYGPATH_W) '$(srcdir)/src/GAP_present.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-GAP_present.Tpo src/$(DEPDIR)/pq-GAP_present.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/GAP_present.c' object='src/pq-GAP_present.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-GAP_present.obj `if test -f 'src/GAP_present.c'; then $(CYGPATH_W) 'src/GAP_present.c'; else $(CYGPATH_W) '$(srcdir)/src/GAP_present.c'; fi` src/pq-OpenFile.o: src/OpenFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-OpenFile.o -MD -MP -MF src/$(DEPDIR)/pq-OpenFile.Tpo -c -o src/pq-OpenFile.o `test -f 'src/OpenFile.c' || echo '$(srcdir)/'`src/OpenFile.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-OpenFile.Tpo src/$(DEPDIR)/pq-OpenFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/OpenFile.c' object='src/pq-OpenFile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-OpenFile.o `test -f 'src/OpenFile.c' || echo '$(srcdir)/'`src/OpenFile.c src/pq-OpenFile.obj: src/OpenFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-OpenFile.obj -MD -MP -MF src/$(DEPDIR)/pq-OpenFile.Tpo -c -o src/pq-OpenFile.obj `if test -f 'src/OpenFile.c'; then $(CYGPATH_W) 'src/OpenFile.c'; else $(CYGPATH_W) '$(srcdir)/src/OpenFile.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-OpenFile.Tpo src/$(DEPDIR)/pq-OpenFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/OpenFile.c' object='src/pq-OpenFile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-OpenFile.obj `if test -f 'src/OpenFile.c'; then $(CYGPATH_W) 'src/OpenFile.c'; else $(CYGPATH_W) '$(srcdir)/src/OpenFile.c'; fi` src/pq-TemporaryFile.o: src/TemporaryFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-TemporaryFile.o -MD -MP -MF src/$(DEPDIR)/pq-TemporaryFile.Tpo -c -o src/pq-TemporaryFile.o `test -f 'src/TemporaryFile.c' || echo '$(srcdir)/'`src/TemporaryFile.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-TemporaryFile.Tpo src/$(DEPDIR)/pq-TemporaryFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/TemporaryFile.c' object='src/pq-TemporaryFile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-TemporaryFile.o `test -f 'src/TemporaryFile.c' || echo '$(srcdir)/'`src/TemporaryFile.c src/pq-TemporaryFile.obj: src/TemporaryFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-TemporaryFile.obj -MD -MP -MF src/$(DEPDIR)/pq-TemporaryFile.Tpo -c -o src/pq-TemporaryFile.obj `if test -f 'src/TemporaryFile.c'; then $(CYGPATH_W) 'src/TemporaryFile.c'; else $(CYGPATH_W) '$(srcdir)/src/TemporaryFile.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-TemporaryFile.Tpo src/$(DEPDIR)/pq-TemporaryFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/TemporaryFile.c' object='src/pq-TemporaryFile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-TemporaryFile.obj `if test -f 'src/TemporaryFile.c'; then $(CYGPATH_W) 'src/TemporaryFile.c'; else $(CYGPATH_W) '$(srcdir)/src/TemporaryFile.c'; fi` src/pq-action.o: src/action.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-action.o -MD -MP -MF src/$(DEPDIR)/pq-action.Tpo -c -o src/pq-action.o `test -f 'src/action.c' || echo '$(srcdir)/'`src/action.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-action.Tpo src/$(DEPDIR)/pq-action.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/action.c' object='src/pq-action.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-action.o `test -f 'src/action.c' || echo '$(srcdir)/'`src/action.c src/pq-action.obj: src/action.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-action.obj -MD -MP -MF src/$(DEPDIR)/pq-action.Tpo -c -o src/pq-action.obj `if test -f 'src/action.c'; then $(CYGPATH_W) 'src/action.c'; else $(CYGPATH_W) '$(srcdir)/src/action.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-action.Tpo src/$(DEPDIR)/pq-action.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/action.c' object='src/pq-action.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-action.obj `if test -f 'src/action.c'; then $(CYGPATH_W) 'src/action.c'; else $(CYGPATH_W) '$(srcdir)/src/action.c'; fi` src/pq-assemble_matrix.o: src/assemble_matrix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-assemble_matrix.o -MD -MP -MF src/$(DEPDIR)/pq-assemble_matrix.Tpo -c -o src/pq-assemble_matrix.o `test -f 'src/assemble_matrix.c' || echo '$(srcdir)/'`src/assemble_matrix.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-assemble_matrix.Tpo src/$(DEPDIR)/pq-assemble_matrix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/assemble_matrix.c' object='src/pq-assemble_matrix.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-assemble_matrix.o `test -f 'src/assemble_matrix.c' || echo '$(srcdir)/'`src/assemble_matrix.c src/pq-assemble_matrix.obj: src/assemble_matrix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-assemble_matrix.obj -MD -MP -MF src/$(DEPDIR)/pq-assemble_matrix.Tpo -c -o src/pq-assemble_matrix.obj `if test -f 'src/assemble_matrix.c'; then $(CYGPATH_W) 'src/assemble_matrix.c'; else $(CYGPATH_W) '$(srcdir)/src/assemble_matrix.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-assemble_matrix.Tpo src/$(DEPDIR)/pq-assemble_matrix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/assemble_matrix.c' object='src/pq-assemble_matrix.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-assemble_matrix.obj `if test -f 'src/assemble_matrix.c'; then $(CYGPATH_W) 'src/assemble_matrix.c'; else $(CYGPATH_W) '$(srcdir)/src/assemble_matrix.c'; fi` src/pq-autgp_order.o: src/autgp_order.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-autgp_order.o -MD -MP -MF src/$(DEPDIR)/pq-autgp_order.Tpo -c -o src/pq-autgp_order.o `test -f 'src/autgp_order.c' || echo '$(srcdir)/'`src/autgp_order.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-autgp_order.Tpo src/$(DEPDIR)/pq-autgp_order.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/autgp_order.c' object='src/pq-autgp_order.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-autgp_order.o `test -f 'src/autgp_order.c' || echo '$(srcdir)/'`src/autgp_order.c src/pq-autgp_order.obj: src/autgp_order.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-autgp_order.obj -MD -MP -MF src/$(DEPDIR)/pq-autgp_order.Tpo -c -o src/pq-autgp_order.obj `if test -f 'src/autgp_order.c'; then $(CYGPATH_W) 'src/autgp_order.c'; else $(CYGPATH_W) '$(srcdir)/src/autgp_order.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-autgp_order.Tpo src/$(DEPDIR)/pq-autgp_order.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/autgp_order.c' object='src/pq-autgp_order.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-autgp_order.obj `if test -f 'src/autgp_order.c'; then $(CYGPATH_W) 'src/autgp_order.c'; else $(CYGPATH_W) '$(srcdir)/src/autgp_order.c'; fi` src/pq-calculate_jacobi.o: src/calculate_jacobi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-calculate_jacobi.o -MD -MP -MF src/$(DEPDIR)/pq-calculate_jacobi.Tpo -c -o src/pq-calculate_jacobi.o `test -f 'src/calculate_jacobi.c' || echo '$(srcdir)/'`src/calculate_jacobi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-calculate_jacobi.Tpo src/$(DEPDIR)/pq-calculate_jacobi.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/calculate_jacobi.c' object='src/pq-calculate_jacobi.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-calculate_jacobi.o `test -f 'src/calculate_jacobi.c' || echo '$(srcdir)/'`src/calculate_jacobi.c src/pq-calculate_jacobi.obj: src/calculate_jacobi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-calculate_jacobi.obj -MD -MP -MF src/$(DEPDIR)/pq-calculate_jacobi.Tpo -c -o src/pq-calculate_jacobi.obj `if test -f 'src/calculate_jacobi.c'; then $(CYGPATH_W) 'src/calculate_jacobi.c'; else $(CYGPATH_W) '$(srcdir)/src/calculate_jacobi.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-calculate_jacobi.Tpo src/$(DEPDIR)/pq-calculate_jacobi.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/calculate_jacobi.c' object='src/pq-calculate_jacobi.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-calculate_jacobi.obj `if test -f 'src/calculate_jacobi.c'; then $(CYGPATH_W) 'src/calculate_jacobi.c'; else $(CYGPATH_W) '$(srcdir)/src/calculate_jacobi.c'; fi` src/pq-central_auts.o: src/central_auts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-central_auts.o -MD -MP -MF src/$(DEPDIR)/pq-central_auts.Tpo -c -o src/pq-central_auts.o `test -f 'src/central_auts.c' || echo '$(srcdir)/'`src/central_auts.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-central_auts.Tpo src/$(DEPDIR)/pq-central_auts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/central_auts.c' object='src/pq-central_auts.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-central_auts.o `test -f 'src/central_auts.c' || echo '$(srcdir)/'`src/central_auts.c src/pq-central_auts.obj: src/central_auts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-central_auts.obj -MD -MP -MF src/$(DEPDIR)/pq-central_auts.Tpo -c -o src/pq-central_auts.obj `if test -f 'src/central_auts.c'; then $(CYGPATH_W) 'src/central_auts.c'; else $(CYGPATH_W) '$(srcdir)/src/central_auts.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-central_auts.Tpo src/$(DEPDIR)/pq-central_auts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/central_auts.c' object='src/pq-central_auts.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-central_auts.obj `if test -f 'src/central_auts.c'; then $(CYGPATH_W) 'src/central_auts.c'; else $(CYGPATH_W) '$(srcdir)/src/central_auts.c'; fi` src/pq-check_exponent.o: src/check_exponent.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-check_exponent.o -MD -MP -MF src/$(DEPDIR)/pq-check_exponent.Tpo -c -o src/pq-check_exponent.o `test -f 'src/check_exponent.c' || echo '$(srcdir)/'`src/check_exponent.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-check_exponent.Tpo src/$(DEPDIR)/pq-check_exponent.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/check_exponent.c' object='src/pq-check_exponent.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-check_exponent.o `test -f 'src/check_exponent.c' || echo '$(srcdir)/'`src/check_exponent.c src/pq-check_exponent.obj: src/check_exponent.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-check_exponent.obj -MD -MP -MF src/$(DEPDIR)/pq-check_exponent.Tpo -c -o src/pq-check_exponent.obj `if test -f 'src/check_exponent.c'; then $(CYGPATH_W) 'src/check_exponent.c'; else $(CYGPATH_W) '$(srcdir)/src/check_exponent.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-check_exponent.Tpo src/$(DEPDIR)/pq-check_exponent.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/check_exponent.c' object='src/pq-check_exponent.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-check_exponent.obj `if test -f 'src/check_exponent.c'; then $(CYGPATH_W) 'src/check_exponent.c'; else $(CYGPATH_W) '$(srcdir)/src/check_exponent.c'; fi` src/pq-class1_eliminate.o: src/class1_eliminate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-class1_eliminate.o -MD -MP -MF src/$(DEPDIR)/pq-class1_eliminate.Tpo -c -o src/pq-class1_eliminate.o `test -f 'src/class1_eliminate.c' || echo '$(srcdir)/'`src/class1_eliminate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-class1_eliminate.Tpo src/$(DEPDIR)/pq-class1_eliminate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/class1_eliminate.c' object='src/pq-class1_eliminate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-class1_eliminate.o `test -f 'src/class1_eliminate.c' || echo '$(srcdir)/'`src/class1_eliminate.c src/pq-class1_eliminate.obj: src/class1_eliminate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-class1_eliminate.obj -MD -MP -MF src/$(DEPDIR)/pq-class1_eliminate.Tpo -c -o src/pq-class1_eliminate.obj `if test -f 'src/class1_eliminate.c'; then $(CYGPATH_W) 'src/class1_eliminate.c'; else $(CYGPATH_W) '$(srcdir)/src/class1_eliminate.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-class1_eliminate.Tpo src/$(DEPDIR)/pq-class1_eliminate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/class1_eliminate.c' object='src/pq-class1_eliminate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-class1_eliminate.obj `if test -f 'src/class1_eliminate.c'; then $(CYGPATH_W) 'src/class1_eliminate.c'; else $(CYGPATH_W) '$(srcdir)/src/class1_eliminate.c'; fi` src/pq-close_relations.o: src/close_relations.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-close_relations.o -MD -MP -MF src/$(DEPDIR)/pq-close_relations.Tpo -c -o src/pq-close_relations.o `test -f 'src/close_relations.c' || echo '$(srcdir)/'`src/close_relations.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-close_relations.Tpo src/$(DEPDIR)/pq-close_relations.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/close_relations.c' object='src/pq-close_relations.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-close_relations.o `test -f 'src/close_relations.c' || echo '$(srcdir)/'`src/close_relations.c src/pq-close_relations.obj: src/close_relations.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-close_relations.obj -MD -MP -MF src/$(DEPDIR)/pq-close_relations.Tpo -c -o src/pq-close_relations.obj `if test -f 'src/close_relations.c'; then $(CYGPATH_W) 'src/close_relations.c'; else $(CYGPATH_W) '$(srcdir)/src/close_relations.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-close_relations.Tpo src/$(DEPDIR)/pq-close_relations.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/close_relations.c' object='src/pq-close_relations.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-close_relations.obj `if test -f 'src/close_relations.c'; then $(CYGPATH_W) 'src/close_relations.c'; else $(CYGPATH_W) '$(srcdir)/src/close_relations.c'; fi` src/pq-close_subgroup.o: src/close_subgroup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-close_subgroup.o -MD -MP -MF src/$(DEPDIR)/pq-close_subgroup.Tpo -c -o src/pq-close_subgroup.o `test -f 'src/close_subgroup.c' || echo '$(srcdir)/'`src/close_subgroup.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-close_subgroup.Tpo src/$(DEPDIR)/pq-close_subgroup.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/close_subgroup.c' object='src/pq-close_subgroup.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-close_subgroup.o `test -f 'src/close_subgroup.c' || echo '$(srcdir)/'`src/close_subgroup.c src/pq-close_subgroup.obj: src/close_subgroup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-close_subgroup.obj -MD -MP -MF src/$(DEPDIR)/pq-close_subgroup.Tpo -c -o src/pq-close_subgroup.obj `if test -f 'src/close_subgroup.c'; then $(CYGPATH_W) 'src/close_subgroup.c'; else $(CYGPATH_W) '$(srcdir)/src/close_subgroup.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-close_subgroup.Tpo src/$(DEPDIR)/pq-close_subgroup.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/close_subgroup.c' object='src/pq-close_subgroup.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-close_subgroup.obj `if test -f 'src/close_subgroup.c'; then $(CYGPATH_W) 'src/close_subgroup.c'; else $(CYGPATH_W) '$(srcdir)/src/close_subgroup.c'; fi` src/pq-collect.o: src/collect.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-collect.o -MD -MP -MF src/$(DEPDIR)/pq-collect.Tpo -c -o src/pq-collect.o `test -f 'src/collect.c' || echo '$(srcdir)/'`src/collect.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-collect.Tpo src/$(DEPDIR)/pq-collect.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/collect.c' object='src/pq-collect.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-collect.o `test -f 'src/collect.c' || echo '$(srcdir)/'`src/collect.c src/pq-collect.obj: src/collect.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-collect.obj -MD -MP -MF src/$(DEPDIR)/pq-collect.Tpo -c -o src/pq-collect.obj `if test -f 'src/collect.c'; then $(CYGPATH_W) 'src/collect.c'; else $(CYGPATH_W) '$(srcdir)/src/collect.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-collect.Tpo src/$(DEPDIR)/pq-collect.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/collect.c' object='src/pq-collect.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-collect.obj `if test -f 'src/collect.c'; then $(CYGPATH_W) 'src/collect.c'; else $(CYGPATH_W) '$(srcdir)/src/collect.c'; fi` src/pq-collect_comm.o: src/collect_comm.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-collect_comm.o -MD -MP -MF src/$(DEPDIR)/pq-collect_comm.Tpo -c -o src/pq-collect_comm.o `test -f 'src/collect_comm.c' || echo '$(srcdir)/'`src/collect_comm.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-collect_comm.Tpo src/$(DEPDIR)/pq-collect_comm.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/collect_comm.c' object='src/pq-collect_comm.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-collect_comm.o `test -f 'src/collect_comm.c' || echo '$(srcdir)/'`src/collect_comm.c src/pq-collect_comm.obj: src/collect_comm.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-collect_comm.obj -MD -MP -MF src/$(DEPDIR)/pq-collect_comm.Tpo -c -o src/pq-collect_comm.obj `if test -f 'src/collect_comm.c'; then $(CYGPATH_W) 'src/collect_comm.c'; else $(CYGPATH_W) '$(srcdir)/src/collect_comm.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-collect_comm.Tpo src/$(DEPDIR)/pq-collect_comm.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/collect_comm.c' object='src/pq-collect_comm.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-collect_comm.obj `if test -f 'src/collect_comm.c'; then $(CYGPATH_W) 'src/collect_comm.c'; else $(CYGPATH_W) '$(srcdir)/src/collect_comm.c'; fi` src/pq-collect_gen_word.o: src/collect_gen_word.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-collect_gen_word.o -MD -MP -MF src/$(DEPDIR)/pq-collect_gen_word.Tpo -c -o src/pq-collect_gen_word.o `test -f 'src/collect_gen_word.c' || echo '$(srcdir)/'`src/collect_gen_word.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-collect_gen_word.Tpo src/$(DEPDIR)/pq-collect_gen_word.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/collect_gen_word.c' object='src/pq-collect_gen_word.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-collect_gen_word.o `test -f 'src/collect_gen_word.c' || echo '$(srcdir)/'`src/collect_gen_word.c src/pq-collect_gen_word.obj: src/collect_gen_word.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-collect_gen_word.obj -MD -MP -MF src/$(DEPDIR)/pq-collect_gen_word.Tpo -c -o src/pq-collect_gen_word.obj `if test -f 'src/collect_gen_word.c'; then $(CYGPATH_W) 'src/collect_gen_word.c'; else $(CYGPATH_W) '$(srcdir)/src/collect_gen_word.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-collect_gen_word.Tpo src/$(DEPDIR)/pq-collect_gen_word.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/collect_gen_word.c' object='src/pq-collect_gen_word.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-collect_gen_word.obj `if test -f 'src/collect_gen_word.c'; then $(CYGPATH_W) 'src/collect_gen_word.c'; else $(CYGPATH_W) '$(srcdir)/src/collect_gen_word.c'; fi` src/pq-collect_relations.o: src/collect_relations.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-collect_relations.o -MD -MP -MF src/$(DEPDIR)/pq-collect_relations.Tpo -c -o src/pq-collect_relations.o `test -f 'src/collect_relations.c' || echo '$(srcdir)/'`src/collect_relations.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-collect_relations.Tpo src/$(DEPDIR)/pq-collect_relations.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/collect_relations.c' object='src/pq-collect_relations.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-collect_relations.o `test -f 'src/collect_relations.c' || echo '$(srcdir)/'`src/collect_relations.c src/pq-collect_relations.obj: src/collect_relations.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-collect_relations.obj -MD -MP -MF src/$(DEPDIR)/pq-collect_relations.Tpo -c -o src/pq-collect_relations.obj `if test -f 'src/collect_relations.c'; then $(CYGPATH_W) 'src/collect_relations.c'; else $(CYGPATH_W) '$(srcdir)/src/collect_relations.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-collect_relations.Tpo src/$(DEPDIR)/pq-collect_relations.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/collect_relations.c' object='src/pq-collect_relations.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-collect_relations.obj `if test -f 'src/collect_relations.c'; then $(CYGPATH_W) 'src/collect_relations.c'; else $(CYGPATH_W) '$(srcdir)/src/collect_relations.c'; fi` src/pq-collect_word.o: src/collect_word.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-collect_word.o -MD -MP -MF src/$(DEPDIR)/pq-collect_word.Tpo -c -o src/pq-collect_word.o `test -f 'src/collect_word.c' || echo '$(srcdir)/'`src/collect_word.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-collect_word.Tpo src/$(DEPDIR)/pq-collect_word.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/collect_word.c' object='src/pq-collect_word.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-collect_word.o `test -f 'src/collect_word.c' || echo '$(srcdir)/'`src/collect_word.c src/pq-collect_word.obj: src/collect_word.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-collect_word.obj -MD -MP -MF src/$(DEPDIR)/pq-collect_word.Tpo -c -o src/pq-collect_word.obj `if test -f 'src/collect_word.c'; then $(CYGPATH_W) 'src/collect_word.c'; else $(CYGPATH_W) '$(srcdir)/src/collect_word.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-collect_word.Tpo src/$(DEPDIR)/pq-collect_word.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/collect_word.c' object='src/pq-collect_word.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-collect_word.obj `if test -f 'src/collect_word.c'; then $(CYGPATH_W) 'src/collect_word.c'; else $(CYGPATH_W) '$(srcdir)/src/collect_word.c'; fi` src/pq-collectp2.o: src/collectp2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-collectp2.o -MD -MP -MF src/$(DEPDIR)/pq-collectp2.Tpo -c -o src/pq-collectp2.o `test -f 'src/collectp2.c' || echo '$(srcdir)/'`src/collectp2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-collectp2.Tpo src/$(DEPDIR)/pq-collectp2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/collectp2.c' object='src/pq-collectp2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-collectp2.o `test -f 'src/collectp2.c' || echo '$(srcdir)/'`src/collectp2.c src/pq-collectp2.obj: src/collectp2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-collectp2.obj -MD -MP -MF src/$(DEPDIR)/pq-collectp2.Tpo -c -o src/pq-collectp2.obj `if test -f 'src/collectp2.c'; then $(CYGPATH_W) 'src/collectp2.c'; else $(CYGPATH_W) '$(srcdir)/src/collectp2.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-collectp2.Tpo src/$(DEPDIR)/pq-collectp2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/collectp2.c' object='src/pq-collectp2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-collectp2.obj `if test -f 'src/collectp2.c'; then $(CYGPATH_W) 'src/collectp2.c'; else $(CYGPATH_W) '$(srcdir)/src/collectp2.c'; fi` src/pq-commutator.o: src/commutator.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-commutator.o -MD -MP -MF src/$(DEPDIR)/pq-commutator.Tpo -c -o src/pq-commutator.o `test -f 'src/commutator.c' || echo '$(srcdir)/'`src/commutator.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-commutator.Tpo src/$(DEPDIR)/pq-commutator.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/commutator.c' object='src/pq-commutator.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-commutator.o `test -f 'src/commutator.c' || echo '$(srcdir)/'`src/commutator.c src/pq-commutator.obj: src/commutator.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-commutator.obj -MD -MP -MF src/$(DEPDIR)/pq-commutator.Tpo -c -o src/pq-commutator.obj `if test -f 'src/commutator.c'; then $(CYGPATH_W) 'src/commutator.c'; else $(CYGPATH_W) '$(srcdir)/src/commutator.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-commutator.Tpo src/$(DEPDIR)/pq-commutator.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/commutator.c' object='src/pq-commutator.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-commutator.obj `if test -f 'src/commutator.c'; then $(CYGPATH_W) 'src/commutator.c'; else $(CYGPATH_W) '$(srcdir)/src/commutator.c'; fi` src/pq-commute_dgen.o: src/commute_dgen.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-commute_dgen.o -MD -MP -MF src/$(DEPDIR)/pq-commute_dgen.Tpo -c -o src/pq-commute_dgen.o `test -f 'src/commute_dgen.c' || echo '$(srcdir)/'`src/commute_dgen.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-commute_dgen.Tpo src/$(DEPDIR)/pq-commute_dgen.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/commute_dgen.c' object='src/pq-commute_dgen.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-commute_dgen.o `test -f 'src/commute_dgen.c' || echo '$(srcdir)/'`src/commute_dgen.c src/pq-commute_dgen.obj: src/commute_dgen.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-commute_dgen.obj -MD -MP -MF src/$(DEPDIR)/pq-commute_dgen.Tpo -c -o src/pq-commute_dgen.obj `if test -f 'src/commute_dgen.c'; then $(CYGPATH_W) 'src/commute_dgen.c'; else $(CYGPATH_W) '$(srcdir)/src/commute_dgen.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-commute_dgen.Tpo src/$(DEPDIR)/pq-commute_dgen.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/commute_dgen.c' object='src/pq-commute_dgen.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-commute_dgen.obj `if test -f 'src/commute_dgen.c'; then $(CYGPATH_W) 'src/commute_dgen.c'; else $(CYGPATH_W) '$(srcdir)/src/commute_dgen.c'; fi` src/pq-compact.o: src/compact.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-compact.o -MD -MP -MF src/$(DEPDIR)/pq-compact.Tpo -c -o src/pq-compact.o `test -f 'src/compact.c' || echo '$(srcdir)/'`src/compact.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-compact.Tpo src/$(DEPDIR)/pq-compact.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/compact.c' object='src/pq-compact.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-compact.o `test -f 'src/compact.c' || echo '$(srcdir)/'`src/compact.c src/pq-compact.obj: src/compact.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-compact.obj -MD -MP -MF src/$(DEPDIR)/pq-compact.Tpo -c -o src/pq-compact.obj `if test -f 'src/compact.c'; then $(CYGPATH_W) 'src/compact.c'; else $(CYGPATH_W) '$(srcdir)/src/compact.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-compact.Tpo src/$(DEPDIR)/pq-compact.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/compact.c' object='src/pq-compact.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-compact.obj `if test -f 'src/compact.c'; then $(CYGPATH_W) 'src/compact.c'; else $(CYGPATH_W) '$(srcdir)/src/compact.c'; fi` src/pq-compact_description.o: src/compact_description.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-compact_description.o -MD -MP -MF src/$(DEPDIR)/pq-compact_description.Tpo -c -o src/pq-compact_description.o `test -f 'src/compact_description.c' || echo '$(srcdir)/'`src/compact_description.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-compact_description.Tpo src/$(DEPDIR)/pq-compact_description.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/compact_description.c' object='src/pq-compact_description.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-compact_description.o `test -f 'src/compact_description.c' || echo '$(srcdir)/'`src/compact_description.c src/pq-compact_description.obj: src/compact_description.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-compact_description.obj -MD -MP -MF src/$(DEPDIR)/pq-compact_description.Tpo -c -o src/pq-compact_description.obj `if test -f 'src/compact_description.c'; then $(CYGPATH_W) 'src/compact_description.c'; else $(CYGPATH_W) '$(srcdir)/src/compact_description.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-compact_description.Tpo src/$(DEPDIR)/pq-compact_description.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/compact_description.c' object='src/pq-compact_description.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-compact_description.obj `if test -f 'src/compact_description.c'; then $(CYGPATH_W) 'src/compact_description.c'; else $(CYGPATH_W) '$(srcdir)/src/compact_description.c'; fi` src/pq-consistency.o: src/consistency.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-consistency.o -MD -MP -MF src/$(DEPDIR)/pq-consistency.Tpo -c -o src/pq-consistency.o `test -f 'src/consistency.c' || echo '$(srcdir)/'`src/consistency.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-consistency.Tpo src/$(DEPDIR)/pq-consistency.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/consistency.c' object='src/pq-consistency.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-consistency.o `test -f 'src/consistency.c' || echo '$(srcdir)/'`src/consistency.c src/pq-consistency.obj: src/consistency.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-consistency.obj -MD -MP -MF src/$(DEPDIR)/pq-consistency.Tpo -c -o src/pq-consistency.obj `if test -f 'src/consistency.c'; then $(CYGPATH_W) 'src/consistency.c'; else $(CYGPATH_W) '$(srcdir)/src/consistency.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-consistency.Tpo src/$(DEPDIR)/pq-consistency.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/consistency.c' object='src/pq-consistency.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-consistency.obj `if test -f 'src/consistency.c'; then $(CYGPATH_W) 'src/consistency.c'; else $(CYGPATH_W) '$(srcdir)/src/consistency.c'; fi` src/pq-consistency_filter.o: src/consistency_filter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-consistency_filter.o -MD -MP -MF src/$(DEPDIR)/pq-consistency_filter.Tpo -c -o src/pq-consistency_filter.o `test -f 'src/consistency_filter.c' || echo '$(srcdir)/'`src/consistency_filter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-consistency_filter.Tpo src/$(DEPDIR)/pq-consistency_filter.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/consistency_filter.c' object='src/pq-consistency_filter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-consistency_filter.o `test -f 'src/consistency_filter.c' || echo '$(srcdir)/'`src/consistency_filter.c src/pq-consistency_filter.obj: src/consistency_filter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-consistency_filter.obj -MD -MP -MF src/$(DEPDIR)/pq-consistency_filter.Tpo -c -o src/pq-consistency_filter.obj `if test -f 'src/consistency_filter.c'; then $(CYGPATH_W) 'src/consistency_filter.c'; else $(CYGPATH_W) '$(srcdir)/src/consistency_filter.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-consistency_filter.Tpo src/$(DEPDIR)/pq-consistency_filter.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/consistency_filter.c' object='src/pq-consistency_filter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-consistency_filter.obj `if test -f 'src/consistency_filter.c'; then $(CYGPATH_W) 'src/consistency_filter.c'; else $(CYGPATH_W) '$(srcdir)/src/consistency_filter.c'; fi` src/pq-consistency_info.o: src/consistency_info.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-consistency_info.o -MD -MP -MF src/$(DEPDIR)/pq-consistency_info.Tpo -c -o src/pq-consistency_info.o `test -f 'src/consistency_info.c' || echo '$(srcdir)/'`src/consistency_info.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-consistency_info.Tpo src/$(DEPDIR)/pq-consistency_info.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/consistency_info.c' object='src/pq-consistency_info.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-consistency_info.o `test -f 'src/consistency_info.c' || echo '$(srcdir)/'`src/consistency_info.c src/pq-consistency_info.obj: src/consistency_info.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-consistency_info.obj -MD -MP -MF src/$(DEPDIR)/pq-consistency_info.Tpo -c -o src/pq-consistency_info.obj `if test -f 'src/consistency_info.c'; then $(CYGPATH_W) 'src/consistency_info.c'; else $(CYGPATH_W) '$(srcdir)/src/consistency_info.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-consistency_info.Tpo src/$(DEPDIR)/pq-consistency_info.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/consistency_info.c' object='src/pq-consistency_info.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-consistency_info.obj `if test -f 'src/consistency_info.c'; then $(CYGPATH_W) 'src/consistency_info.c'; else $(CYGPATH_W) '$(srcdir)/src/consistency_info.c'; fi` src/pq-construct.o: src/construct.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-construct.o -MD -MP -MF src/$(DEPDIR)/pq-construct.Tpo -c -o src/pq-construct.o `test -f 'src/construct.c' || echo '$(srcdir)/'`src/construct.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-construct.Tpo src/$(DEPDIR)/pq-construct.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/construct.c' object='src/pq-construct.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-construct.o `test -f 'src/construct.c' || echo '$(srcdir)/'`src/construct.c src/pq-construct.obj: src/construct.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-construct.obj -MD -MP -MF src/$(DEPDIR)/pq-construct.Tpo -c -o src/pq-construct.obj `if test -f 'src/construct.c'; then $(CYGPATH_W) 'src/construct.c'; else $(CYGPATH_W) '$(srcdir)/src/construct.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-construct.Tpo src/$(DEPDIR)/pq-construct.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/construct.c' object='src/pq-construct.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-construct.obj `if test -f 'src/construct.c'; then $(CYGPATH_W) 'src/construct.c'; else $(CYGPATH_W) '$(srcdir)/src/construct.c'; fi` src/pq-convert.o: src/convert.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-convert.o -MD -MP -MF src/$(DEPDIR)/pq-convert.Tpo -c -o src/pq-convert.o `test -f 'src/convert.c' || echo '$(srcdir)/'`src/convert.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-convert.Tpo src/$(DEPDIR)/pq-convert.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/convert.c' object='src/pq-convert.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-convert.o `test -f 'src/convert.c' || echo '$(srcdir)/'`src/convert.c src/pq-convert.obj: src/convert.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-convert.obj -MD -MP -MF src/$(DEPDIR)/pq-convert.Tpo -c -o src/pq-convert.obj `if test -f 'src/convert.c'; then $(CYGPATH_W) 'src/convert.c'; else $(CYGPATH_W) '$(srcdir)/src/convert.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-convert.Tpo src/$(DEPDIR)/pq-convert.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/convert.c' object='src/pq-convert.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-convert.obj `if test -f 'src/convert.c'; then $(CYGPATH_W) 'src/convert.c'; else $(CYGPATH_W) '$(srcdir)/src/convert.c'; fi` src/pq-defaults_pga.o: src/defaults_pga.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-defaults_pga.o -MD -MP -MF src/$(DEPDIR)/pq-defaults_pga.Tpo -c -o src/pq-defaults_pga.o `test -f 'src/defaults_pga.c' || echo '$(srcdir)/'`src/defaults_pga.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-defaults_pga.Tpo src/$(DEPDIR)/pq-defaults_pga.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/defaults_pga.c' object='src/pq-defaults_pga.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-defaults_pga.o `test -f 'src/defaults_pga.c' || echo '$(srcdir)/'`src/defaults_pga.c src/pq-defaults_pga.obj: src/defaults_pga.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-defaults_pga.obj -MD -MP -MF src/$(DEPDIR)/pq-defaults_pga.Tpo -c -o src/pq-defaults_pga.obj `if test -f 'src/defaults_pga.c'; then $(CYGPATH_W) 'src/defaults_pga.c'; else $(CYGPATH_W) '$(srcdir)/src/defaults_pga.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-defaults_pga.Tpo src/$(DEPDIR)/pq-defaults_pga.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/defaults_pga.c' object='src/pq-defaults_pga.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-defaults_pga.obj `if test -f 'src/defaults_pga.c'; then $(CYGPATH_W) 'src/defaults_pga.c'; else $(CYGPATH_W) '$(srcdir)/src/defaults_pga.c'; fi` src/pq-degree.o: src/degree.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-degree.o -MD -MP -MF src/$(DEPDIR)/pq-degree.Tpo -c -o src/pq-degree.o `test -f 'src/degree.c' || echo '$(srcdir)/'`src/degree.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-degree.Tpo src/$(DEPDIR)/pq-degree.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/degree.c' object='src/pq-degree.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-degree.o `test -f 'src/degree.c' || echo '$(srcdir)/'`src/degree.c src/pq-degree.obj: src/degree.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-degree.obj -MD -MP -MF src/$(DEPDIR)/pq-degree.Tpo -c -o src/pq-degree.obj `if test -f 'src/degree.c'; then $(CYGPATH_W) 'src/degree.c'; else $(CYGPATH_W) '$(srcdir)/src/degree.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-degree.Tpo src/$(DEPDIR)/pq-degree.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/degree.c' object='src/pq-degree.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-degree.obj `if test -f 'src/degree.c'; then $(CYGPATH_W) 'src/degree.c'; else $(CYGPATH_W) '$(srcdir)/src/degree.c'; fi` src/pq-delete_tables.o: src/delete_tables.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-delete_tables.o -MD -MP -MF src/$(DEPDIR)/pq-delete_tables.Tpo -c -o src/pq-delete_tables.o `test -f 'src/delete_tables.c' || echo '$(srcdir)/'`src/delete_tables.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-delete_tables.Tpo src/$(DEPDIR)/pq-delete_tables.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/delete_tables.c' object='src/pq-delete_tables.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-delete_tables.o `test -f 'src/delete_tables.c' || echo '$(srcdir)/'`src/delete_tables.c src/pq-delete_tables.obj: src/delete_tables.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-delete_tables.obj -MD -MP -MF src/$(DEPDIR)/pq-delete_tables.Tpo -c -o src/pq-delete_tables.obj `if test -f 'src/delete_tables.c'; then $(CYGPATH_W) 'src/delete_tables.c'; else $(CYGPATH_W) '$(srcdir)/src/delete_tables.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-delete_tables.Tpo src/$(DEPDIR)/pq-delete_tables.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/delete_tables.c' object='src/pq-delete_tables.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-delete_tables.obj `if test -f 'src/delete_tables.c'; then $(CYGPATH_W) 'src/delete_tables.c'; else $(CYGPATH_W) '$(srcdir)/src/delete_tables.c'; fi` src/pq-down_class.o: src/down_class.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-down_class.o -MD -MP -MF src/$(DEPDIR)/pq-down_class.Tpo -c -o src/pq-down_class.o `test -f 'src/down_class.c' || echo '$(srcdir)/'`src/down_class.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-down_class.Tpo src/$(DEPDIR)/pq-down_class.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/down_class.c' object='src/pq-down_class.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-down_class.o `test -f 'src/down_class.c' || echo '$(srcdir)/'`src/down_class.c src/pq-down_class.obj: src/down_class.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-down_class.obj -MD -MP -MF src/$(DEPDIR)/pq-down_class.Tpo -c -o src/pq-down_class.obj `if test -f 'src/down_class.c'; then $(CYGPATH_W) 'src/down_class.c'; else $(CYGPATH_W) '$(srcdir)/src/down_class.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-down_class.Tpo src/$(DEPDIR)/pq-down_class.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/down_class.c' object='src/pq-down_class.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-down_class.obj `if test -f 'src/down_class.c'; then $(CYGPATH_W) 'src/down_class.c'; else $(CYGPATH_W) '$(srcdir)/src/down_class.c'; fi` src/pq-echelon.o: src/echelon.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-echelon.o -MD -MP -MF src/$(DEPDIR)/pq-echelon.Tpo -c -o src/pq-echelon.o `test -f 'src/echelon.c' || echo '$(srcdir)/'`src/echelon.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-echelon.Tpo src/$(DEPDIR)/pq-echelon.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/echelon.c' object='src/pq-echelon.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-echelon.o `test -f 'src/echelon.c' || echo '$(srcdir)/'`src/echelon.c src/pq-echelon.obj: src/echelon.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-echelon.obj -MD -MP -MF src/$(DEPDIR)/pq-echelon.Tpo -c -o src/pq-echelon.obj `if test -f 'src/echelon.c'; then $(CYGPATH_W) 'src/echelon.c'; else $(CYGPATH_W) '$(srcdir)/src/echelon.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-echelon.Tpo src/$(DEPDIR)/pq-echelon.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/echelon.c' object='src/pq-echelon.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-echelon.obj `if test -f 'src/echelon.c'; then $(CYGPATH_W) 'src/echelon.c'; else $(CYGPATH_W) '$(srcdir)/src/echelon.c'; fi` src/pq-echelonise_matrix.o: src/echelonise_matrix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-echelonise_matrix.o -MD -MP -MF src/$(DEPDIR)/pq-echelonise_matrix.Tpo -c -o src/pq-echelonise_matrix.o `test -f 'src/echelonise_matrix.c' || echo '$(srcdir)/'`src/echelonise_matrix.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-echelonise_matrix.Tpo src/$(DEPDIR)/pq-echelonise_matrix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/echelonise_matrix.c' object='src/pq-echelonise_matrix.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-echelonise_matrix.o `test -f 'src/echelonise_matrix.c' || echo '$(srcdir)/'`src/echelonise_matrix.c src/pq-echelonise_matrix.obj: src/echelonise_matrix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-echelonise_matrix.obj -MD -MP -MF src/$(DEPDIR)/pq-echelonise_matrix.Tpo -c -o src/pq-echelonise_matrix.obj `if test -f 'src/echelonise_matrix.c'; then $(CYGPATH_W) 'src/echelonise_matrix.c'; else $(CYGPATH_W) '$(srcdir)/src/echelonise_matrix.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-echelonise_matrix.Tpo src/$(DEPDIR)/pq-echelonise_matrix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/echelonise_matrix.c' object='src/pq-echelonise_matrix.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-echelonise_matrix.obj `if test -f 'src/echelonise_matrix.c'; then $(CYGPATH_W) 'src/echelonise_matrix.c'; else $(CYGPATH_W) '$(srcdir)/src/echelonise_matrix.c'; fi` src/pq-eliminate.o: src/eliminate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-eliminate.o -MD -MP -MF src/$(DEPDIR)/pq-eliminate.Tpo -c -o src/pq-eliminate.o `test -f 'src/eliminate.c' || echo '$(srcdir)/'`src/eliminate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-eliminate.Tpo src/$(DEPDIR)/pq-eliminate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/eliminate.c' object='src/pq-eliminate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-eliminate.o `test -f 'src/eliminate.c' || echo '$(srcdir)/'`src/eliminate.c src/pq-eliminate.obj: src/eliminate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-eliminate.obj -MD -MP -MF src/$(DEPDIR)/pq-eliminate.Tpo -c -o src/pq-eliminate.obj `if test -f 'src/eliminate.c'; then $(CYGPATH_W) 'src/eliminate.c'; else $(CYGPATH_W) '$(srcdir)/src/eliminate.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-eliminate.Tpo src/$(DEPDIR)/pq-eliminate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/eliminate.c' object='src/pq-eliminate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-eliminate.obj `if test -f 'src/eliminate.c'; then $(CYGPATH_W) 'src/eliminate.c'; else $(CYGPATH_W) '$(srcdir)/src/eliminate.c'; fi` src/pq-expand_commutator.o: src/expand_commutator.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-expand_commutator.o -MD -MP -MF src/$(DEPDIR)/pq-expand_commutator.Tpo -c -o src/pq-expand_commutator.o `test -f 'src/expand_commutator.c' || echo '$(srcdir)/'`src/expand_commutator.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-expand_commutator.Tpo src/$(DEPDIR)/pq-expand_commutator.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/expand_commutator.c' object='src/pq-expand_commutator.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-expand_commutator.o `test -f 'src/expand_commutator.c' || echo '$(srcdir)/'`src/expand_commutator.c src/pq-expand_commutator.obj: src/expand_commutator.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-expand_commutator.obj -MD -MP -MF src/$(DEPDIR)/pq-expand_commutator.Tpo -c -o src/pq-expand_commutator.obj `if test -f 'src/expand_commutator.c'; then $(CYGPATH_W) 'src/expand_commutator.c'; else $(CYGPATH_W) '$(srcdir)/src/expand_commutator.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-expand_commutator.Tpo src/$(DEPDIR)/pq-expand_commutator.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/expand_commutator.c' object='src/pq-expand_commutator.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-expand_commutator.obj `if test -f 'src/expand_commutator.c'; then $(CYGPATH_W) 'src/expand_commutator.c'; else $(CYGPATH_W) '$(srcdir)/src/expand_commutator.c'; fi` src/pq-exponent_auts.o: src/exponent_auts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-exponent_auts.o -MD -MP -MF src/$(DEPDIR)/pq-exponent_auts.Tpo -c -o src/pq-exponent_auts.o `test -f 'src/exponent_auts.c' || echo '$(srcdir)/'`src/exponent_auts.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-exponent_auts.Tpo src/$(DEPDIR)/pq-exponent_auts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/exponent_auts.c' object='src/pq-exponent_auts.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-exponent_auts.o `test -f 'src/exponent_auts.c' || echo '$(srcdir)/'`src/exponent_auts.c src/pq-exponent_auts.obj: src/exponent_auts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-exponent_auts.obj -MD -MP -MF src/$(DEPDIR)/pq-exponent_auts.Tpo -c -o src/pq-exponent_auts.obj `if test -f 'src/exponent_auts.c'; then $(CYGPATH_W) 'src/exponent_auts.c'; else $(CYGPATH_W) '$(srcdir)/src/exponent_auts.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-exponent_auts.Tpo src/$(DEPDIR)/pq-exponent_auts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/exponent_auts.c' object='src/pq-exponent_auts.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-exponent_auts.obj `if test -f 'src/exponent_auts.c'; then $(CYGPATH_W) 'src/exponent_auts.c'; else $(CYGPATH_W) '$(srcdir)/src/exponent_auts.c'; fi` src/pq-exponent_info.o: src/exponent_info.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-exponent_info.o -MD -MP -MF src/$(DEPDIR)/pq-exponent_info.Tpo -c -o src/pq-exponent_info.o `test -f 'src/exponent_info.c' || echo '$(srcdir)/'`src/exponent_info.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-exponent_info.Tpo src/$(DEPDIR)/pq-exponent_info.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/exponent_info.c' object='src/pq-exponent_info.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-exponent_info.o `test -f 'src/exponent_info.c' || echo '$(srcdir)/'`src/exponent_info.c src/pq-exponent_info.obj: src/exponent_info.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-exponent_info.obj -MD -MP -MF src/$(DEPDIR)/pq-exponent_info.Tpo -c -o src/pq-exponent_info.obj `if test -f 'src/exponent_info.c'; then $(CYGPATH_W) 'src/exponent_info.c'; else $(CYGPATH_W) '$(srcdir)/src/exponent_info.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-exponent_info.Tpo src/$(DEPDIR)/pq-exponent_info.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/exponent_info.c' object='src/pq-exponent_info.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-exponent_info.obj `if test -f 'src/exponent_info.c'; then $(CYGPATH_W) 'src/exponent_info.c'; else $(CYGPATH_W) '$(srcdir)/src/exponent_info.c'; fi` src/pq-extend_automorphisms.o: src/extend_automorphisms.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-extend_automorphisms.o -MD -MP -MF src/$(DEPDIR)/pq-extend_automorphisms.Tpo -c -o src/pq-extend_automorphisms.o `test -f 'src/extend_automorphisms.c' || echo '$(srcdir)/'`src/extend_automorphisms.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-extend_automorphisms.Tpo src/$(DEPDIR)/pq-extend_automorphisms.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/extend_automorphisms.c' object='src/pq-extend_automorphisms.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-extend_automorphisms.o `test -f 'src/extend_automorphisms.c' || echo '$(srcdir)/'`src/extend_automorphisms.c src/pq-extend_automorphisms.obj: src/extend_automorphisms.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-extend_automorphisms.obj -MD -MP -MF src/$(DEPDIR)/pq-extend_automorphisms.Tpo -c -o src/pq-extend_automorphisms.obj `if test -f 'src/extend_automorphisms.c'; then $(CYGPATH_W) 'src/extend_automorphisms.c'; else $(CYGPATH_W) '$(srcdir)/src/extend_automorphisms.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-extend_automorphisms.Tpo src/$(DEPDIR)/pq-extend_automorphisms.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/extend_automorphisms.c' object='src/pq-extend_automorphisms.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-extend_automorphisms.obj `if test -f 'src/extend_automorphisms.c'; then $(CYGPATH_W) 'src/extend_automorphisms.c'; else $(CYGPATH_W) '$(srcdir)/src/extend_automorphisms.c'; fi` src/pq-extend_matrix.o: src/extend_matrix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-extend_matrix.o -MD -MP -MF src/$(DEPDIR)/pq-extend_matrix.Tpo -c -o src/pq-extend_matrix.o `test -f 'src/extend_matrix.c' || echo '$(srcdir)/'`src/extend_matrix.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-extend_matrix.Tpo src/$(DEPDIR)/pq-extend_matrix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/extend_matrix.c' object='src/pq-extend_matrix.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-extend_matrix.o `test -f 'src/extend_matrix.c' || echo '$(srcdir)/'`src/extend_matrix.c src/pq-extend_matrix.obj: src/extend_matrix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-extend_matrix.obj -MD -MP -MF src/$(DEPDIR)/pq-extend_matrix.Tpo -c -o src/pq-extend_matrix.obj `if test -f 'src/extend_matrix.c'; then $(CYGPATH_W) 'src/extend_matrix.c'; else $(CYGPATH_W) '$(srcdir)/src/extend_matrix.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-extend_matrix.Tpo src/$(DEPDIR)/pq-extend_matrix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/extend_matrix.c' object='src/pq-extend_matrix.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-extend_matrix.obj `if test -f 'src/extend_matrix.c'; then $(CYGPATH_W) 'src/extend_matrix.c'; else $(CYGPATH_W) '$(srcdir)/src/extend_matrix.c'; fi` src/pq-extend_representation.o: src/extend_representation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-extend_representation.o -MD -MP -MF src/$(DEPDIR)/pq-extend_representation.Tpo -c -o src/pq-extend_representation.o `test -f 'src/extend_representation.c' || echo '$(srcdir)/'`src/extend_representation.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-extend_representation.Tpo src/$(DEPDIR)/pq-extend_representation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/extend_representation.c' object='src/pq-extend_representation.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-extend_representation.o `test -f 'src/extend_representation.c' || echo '$(srcdir)/'`src/extend_representation.c src/pq-extend_representation.obj: src/extend_representation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-extend_representation.obj -MD -MP -MF src/$(DEPDIR)/pq-extend_representation.Tpo -c -o src/pq-extend_representation.obj `if test -f 'src/extend_representation.c'; then $(CYGPATH_W) 'src/extend_representation.c'; else $(CYGPATH_W) '$(srcdir)/src/extend_representation.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-extend_representation.Tpo src/$(DEPDIR)/pq-extend_representation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/extend_representation.c' object='src/pq-extend_representation.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-extend_representation.obj `if test -f 'src/extend_representation.c'; then $(CYGPATH_W) 'src/extend_representation.c'; else $(CYGPATH_W) '$(srcdir)/src/extend_representation.c'; fi` src/pq-extra_relations.o: src/extra_relations.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-extra_relations.o -MD -MP -MF src/$(DEPDIR)/pq-extra_relations.Tpo -c -o src/pq-extra_relations.o `test -f 'src/extra_relations.c' || echo '$(srcdir)/'`src/extra_relations.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-extra_relations.Tpo src/$(DEPDIR)/pq-extra_relations.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/extra_relations.c' object='src/pq-extra_relations.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-extra_relations.o `test -f 'src/extra_relations.c' || echo '$(srcdir)/'`src/extra_relations.c src/pq-extra_relations.obj: src/extra_relations.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-extra_relations.obj -MD -MP -MF src/$(DEPDIR)/pq-extra_relations.Tpo -c -o src/pq-extra_relations.obj `if test -f 'src/extra_relations.c'; then $(CYGPATH_W) 'src/extra_relations.c'; else $(CYGPATH_W) '$(srcdir)/src/extra_relations.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-extra_relations.Tpo src/$(DEPDIR)/pq-extra_relations.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/extra_relations.c' object='src/pq-extra_relations.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-extra_relations.obj `if test -f 'src/extra_relations.c'; then $(CYGPATH_W) 'src/extra_relations.c'; else $(CYGPATH_W) '$(srcdir)/src/extra_relations.c'; fi` src/pq-find_allowable_subgroup.o: src/find_allowable_subgroup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-find_allowable_subgroup.o -MD -MP -MF src/$(DEPDIR)/pq-find_allowable_subgroup.Tpo -c -o src/pq-find_allowable_subgroup.o `test -f 'src/find_allowable_subgroup.c' || echo '$(srcdir)/'`src/find_allowable_subgroup.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-find_allowable_subgroup.Tpo src/$(DEPDIR)/pq-find_allowable_subgroup.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/find_allowable_subgroup.c' object='src/pq-find_allowable_subgroup.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-find_allowable_subgroup.o `test -f 'src/find_allowable_subgroup.c' || echo '$(srcdir)/'`src/find_allowable_subgroup.c src/pq-find_allowable_subgroup.obj: src/find_allowable_subgroup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-find_allowable_subgroup.obj -MD -MP -MF src/$(DEPDIR)/pq-find_allowable_subgroup.Tpo -c -o src/pq-find_allowable_subgroup.obj `if test -f 'src/find_allowable_subgroup.c'; then $(CYGPATH_W) 'src/find_allowable_subgroup.c'; else $(CYGPATH_W) '$(srcdir)/src/find_allowable_subgroup.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-find_allowable_subgroup.Tpo src/$(DEPDIR)/pq-find_allowable_subgroup.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/find_allowable_subgroup.c' object='src/pq-find_allowable_subgroup.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-find_allowable_subgroup.obj `if test -f 'src/find_allowable_subgroup.c'; then $(CYGPATH_W) 'src/find_allowable_subgroup.c'; else $(CYGPATH_W) '$(srcdir)/src/find_allowable_subgroup.c'; fi` src/pq-find_image.o: src/find_image.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-find_image.o -MD -MP -MF src/$(DEPDIR)/pq-find_image.Tpo -c -o src/pq-find_image.o `test -f 'src/find_image.c' || echo '$(srcdir)/'`src/find_image.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-find_image.Tpo src/$(DEPDIR)/pq-find_image.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/find_image.c' object='src/pq-find_image.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-find_image.o `test -f 'src/find_image.c' || echo '$(srcdir)/'`src/find_image.c src/pq-find_image.obj: src/find_image.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-find_image.obj -MD -MP -MF src/$(DEPDIR)/pq-find_image.Tpo -c -o src/pq-find_image.obj `if test -f 'src/find_image.c'; then $(CYGPATH_W) 'src/find_image.c'; else $(CYGPATH_W) '$(srcdir)/src/find_image.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-find_image.Tpo src/$(DEPDIR)/pq-find_image.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/find_image.c' object='src/pq-find_image.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-find_image.obj `if test -f 'src/find_image.c'; then $(CYGPATH_W) 'src/find_image.c'; else $(CYGPATH_W) '$(srcdir)/src/find_image.c'; fi` src/pq-find_permutation.o: src/find_permutation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-find_permutation.o -MD -MP -MF src/$(DEPDIR)/pq-find_permutation.Tpo -c -o src/pq-find_permutation.o `test -f 'src/find_permutation.c' || echo '$(srcdir)/'`src/find_permutation.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-find_permutation.Tpo src/$(DEPDIR)/pq-find_permutation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/find_permutation.c' object='src/pq-find_permutation.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-find_permutation.o `test -f 'src/find_permutation.c' || echo '$(srcdir)/'`src/find_permutation.c src/pq-find_permutation.obj: src/find_permutation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-find_permutation.obj -MD -MP -MF src/$(DEPDIR)/pq-find_permutation.Tpo -c -o src/pq-find_permutation.obj `if test -f 'src/find_permutation.c'; then $(CYGPATH_W) 'src/find_permutation.c'; else $(CYGPATH_W) '$(srcdir)/src/find_permutation.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-find_permutation.Tpo src/$(DEPDIR)/pq-find_permutation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/find_permutation.c' object='src/pq-find_permutation.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-find_permutation.obj `if test -f 'src/find_permutation.c'; then $(CYGPATH_W) 'src/find_permutation.c'; else $(CYGPATH_W) '$(srcdir)/src/find_permutation.c'; fi` src/pq-formula.o: src/formula.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-formula.o -MD -MP -MF src/$(DEPDIR)/pq-formula.Tpo -c -o src/pq-formula.o `test -f 'src/formula.c' || echo '$(srcdir)/'`src/formula.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-formula.Tpo src/$(DEPDIR)/pq-formula.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/formula.c' object='src/pq-formula.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-formula.o `test -f 'src/formula.c' || echo '$(srcdir)/'`src/formula.c src/pq-formula.obj: src/formula.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-formula.obj -MD -MP -MF src/$(DEPDIR)/pq-formula.Tpo -c -o src/pq-formula.obj `if test -f 'src/formula.c'; then $(CYGPATH_W) 'src/formula.c'; else $(CYGPATH_W) '$(srcdir)/src/formula.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-formula.Tpo src/$(DEPDIR)/pq-formula.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/formula.c' object='src/pq-formula.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-formula.obj `if test -f 'src/formula.c'; then $(CYGPATH_W) 'src/formula.c'; else $(CYGPATH_W) '$(srcdir)/src/formula.c'; fi` src/pq-generator_definition.o: src/generator_definition.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-generator_definition.o -MD -MP -MF src/$(DEPDIR)/pq-generator_definition.Tpo -c -o src/pq-generator_definition.o `test -f 'src/generator_definition.c' || echo '$(srcdir)/'`src/generator_definition.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-generator_definition.Tpo src/$(DEPDIR)/pq-generator_definition.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/generator_definition.c' object='src/pq-generator_definition.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-generator_definition.o `test -f 'src/generator_definition.c' || echo '$(srcdir)/'`src/generator_definition.c src/pq-generator_definition.obj: src/generator_definition.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-generator_definition.obj -MD -MP -MF src/$(DEPDIR)/pq-generator_definition.Tpo -c -o src/pq-generator_definition.obj `if test -f 'src/generator_definition.c'; then $(CYGPATH_W) 'src/generator_definition.c'; else $(CYGPATH_W) '$(srcdir)/src/generator_definition.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-generator_definition.Tpo src/$(DEPDIR)/pq-generator_definition.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/generator_definition.c' object='src/pq-generator_definition.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-generator_definition.obj `if test -f 'src/generator_definition.c'; then $(CYGPATH_W) 'src/generator_definition.c'; else $(CYGPATH_W) '$(srcdir)/src/generator_definition.c'; fi` src/pq-get_definition_sets.o: src/get_definition_sets.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-get_definition_sets.o -MD -MP -MF src/$(DEPDIR)/pq-get_definition_sets.Tpo -c -o src/pq-get_definition_sets.o `test -f 'src/get_definition_sets.c' || echo '$(srcdir)/'`src/get_definition_sets.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-get_definition_sets.Tpo src/$(DEPDIR)/pq-get_definition_sets.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/get_definition_sets.c' object='src/pq-get_definition_sets.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-get_definition_sets.o `test -f 'src/get_definition_sets.c' || echo '$(srcdir)/'`src/get_definition_sets.c src/pq-get_definition_sets.obj: src/get_definition_sets.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-get_definition_sets.obj -MD -MP -MF src/$(DEPDIR)/pq-get_definition_sets.Tpo -c -o src/pq-get_definition_sets.obj `if test -f 'src/get_definition_sets.c'; then $(CYGPATH_W) 'src/get_definition_sets.c'; else $(CYGPATH_W) '$(srcdir)/src/get_definition_sets.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-get_definition_sets.Tpo src/$(DEPDIR)/pq-get_definition_sets.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/get_definition_sets.c' object='src/pq-get_definition_sets.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-get_definition_sets.obj `if test -f 'src/get_definition_sets.c'; then $(CYGPATH_W) 'src/get_definition_sets.c'; else $(CYGPATH_W) '$(srcdir)/src/get_definition_sets.c'; fi` src/pq-identity.o: src/identity.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-identity.o -MD -MP -MF src/$(DEPDIR)/pq-identity.Tpo -c -o src/pq-identity.o `test -f 'src/identity.c' || echo '$(srcdir)/'`src/identity.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-identity.Tpo src/$(DEPDIR)/pq-identity.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/identity.c' object='src/pq-identity.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-identity.o `test -f 'src/identity.c' || echo '$(srcdir)/'`src/identity.c src/pq-identity.obj: src/identity.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-identity.obj -MD -MP -MF src/$(DEPDIR)/pq-identity.Tpo -c -o src/pq-identity.obj `if test -f 'src/identity.c'; then $(CYGPATH_W) 'src/identity.c'; else $(CYGPATH_W) '$(srcdir)/src/identity.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-identity.Tpo src/$(DEPDIR)/pq-identity.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/identity.c' object='src/pq-identity.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-identity.obj `if test -f 'src/identity.c'; then $(CYGPATH_W) 'src/identity.c'; else $(CYGPATH_W) '$(srcdir)/src/identity.c'; fi` src/pq-immediate_descendant.o: src/immediate_descendant.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-immediate_descendant.o -MD -MP -MF src/$(DEPDIR)/pq-immediate_descendant.Tpo -c -o src/pq-immediate_descendant.o `test -f 'src/immediate_descendant.c' || echo '$(srcdir)/'`src/immediate_descendant.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-immediate_descendant.Tpo src/$(DEPDIR)/pq-immediate_descendant.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/immediate_descendant.c' object='src/pq-immediate_descendant.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-immediate_descendant.o `test -f 'src/immediate_descendant.c' || echo '$(srcdir)/'`src/immediate_descendant.c src/pq-immediate_descendant.obj: src/immediate_descendant.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-immediate_descendant.obj -MD -MP -MF src/$(DEPDIR)/pq-immediate_descendant.Tpo -c -o src/pq-immediate_descendant.obj `if test -f 'src/immediate_descendant.c'; then $(CYGPATH_W) 'src/immediate_descendant.c'; else $(CYGPATH_W) '$(srcdir)/src/immediate_descendant.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-immediate_descendant.Tpo src/$(DEPDIR)/pq-immediate_descendant.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/immediate_descendant.c' object='src/pq-immediate_descendant.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-immediate_descendant.obj `if test -f 'src/immediate_descendant.c'; then $(CYGPATH_W) 'src/immediate_descendant.c'; else $(CYGPATH_W) '$(srcdir)/src/immediate_descendant.c'; fi` src/pq-initialise_pcp.o: src/initialise_pcp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-initialise_pcp.o -MD -MP -MF src/$(DEPDIR)/pq-initialise_pcp.Tpo -c -o src/pq-initialise_pcp.o `test -f 'src/initialise_pcp.c' || echo '$(srcdir)/'`src/initialise_pcp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-initialise_pcp.Tpo src/$(DEPDIR)/pq-initialise_pcp.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/initialise_pcp.c' object='src/pq-initialise_pcp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-initialise_pcp.o `test -f 'src/initialise_pcp.c' || echo '$(srcdir)/'`src/initialise_pcp.c src/pq-initialise_pcp.obj: src/initialise_pcp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-initialise_pcp.obj -MD -MP -MF src/$(DEPDIR)/pq-initialise_pcp.Tpo -c -o src/pq-initialise_pcp.obj `if test -f 'src/initialise_pcp.c'; then $(CYGPATH_W) 'src/initialise_pcp.c'; else $(CYGPATH_W) '$(srcdir)/src/initialise_pcp.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-initialise_pcp.Tpo src/$(DEPDIR)/pq-initialise_pcp.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/initialise_pcp.c' object='src/pq-initialise_pcp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-initialise_pcp.obj `if test -f 'src/initialise_pcp.c'; then $(CYGPATH_W) 'src/initialise_pcp.c'; else $(CYGPATH_W) '$(srcdir)/src/initialise_pcp.c'; fi` src/pq-initialise_pga.o: src/initialise_pga.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-initialise_pga.o -MD -MP -MF src/$(DEPDIR)/pq-initialise_pga.Tpo -c -o src/pq-initialise_pga.o `test -f 'src/initialise_pga.c' || echo '$(srcdir)/'`src/initialise_pga.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-initialise_pga.Tpo src/$(DEPDIR)/pq-initialise_pga.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/initialise_pga.c' object='src/pq-initialise_pga.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-initialise_pga.o `test -f 'src/initialise_pga.c' || echo '$(srcdir)/'`src/initialise_pga.c src/pq-initialise_pga.obj: src/initialise_pga.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-initialise_pga.obj -MD -MP -MF src/$(DEPDIR)/pq-initialise_pga.Tpo -c -o src/pq-initialise_pga.obj `if test -f 'src/initialise_pga.c'; then $(CYGPATH_W) 'src/initialise_pga.c'; else $(CYGPATH_W) '$(srcdir)/src/initialise_pga.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-initialise_pga.Tpo src/$(DEPDIR)/pq-initialise_pga.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/initialise_pga.c' object='src/pq-initialise_pga.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-initialise_pga.obj `if test -f 'src/initialise_pga.c'; then $(CYGPATH_W) 'src/initialise_pga.c'; else $(CYGPATH_W) '$(srcdir)/src/initialise_pga.c'; fi` src/pq-insoluble_orbits.o: src/insoluble_orbits.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-insoluble_orbits.o -MD -MP -MF src/$(DEPDIR)/pq-insoluble_orbits.Tpo -c -o src/pq-insoluble_orbits.o `test -f 'src/insoluble_orbits.c' || echo '$(srcdir)/'`src/insoluble_orbits.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-insoluble_orbits.Tpo src/$(DEPDIR)/pq-insoluble_orbits.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/insoluble_orbits.c' object='src/pq-insoluble_orbits.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-insoluble_orbits.o `test -f 'src/insoluble_orbits.c' || echo '$(srcdir)/'`src/insoluble_orbits.c src/pq-insoluble_orbits.obj: src/insoluble_orbits.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-insoluble_orbits.obj -MD -MP -MF src/$(DEPDIR)/pq-insoluble_orbits.Tpo -c -o src/pq-insoluble_orbits.obj `if test -f 'src/insoluble_orbits.c'; then $(CYGPATH_W) 'src/insoluble_orbits.c'; else $(CYGPATH_W) '$(srcdir)/src/insoluble_orbits.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-insoluble_orbits.Tpo src/$(DEPDIR)/pq-insoluble_orbits.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/insoluble_orbits.c' object='src/pq-insoluble_orbits.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-insoluble_orbits.obj `if test -f 'src/insoluble_orbits.c'; then $(CYGPATH_W) 'src/insoluble_orbits.c'; else $(CYGPATH_W) '$(srcdir)/src/insoluble_orbits.c'; fi` src/pq-int_power.o: src/int_power.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-int_power.o -MD -MP -MF src/$(DEPDIR)/pq-int_power.Tpo -c -o src/pq-int_power.o `test -f 'src/int_power.c' || echo '$(srcdir)/'`src/int_power.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-int_power.Tpo src/$(DEPDIR)/pq-int_power.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/int_power.c' object='src/pq-int_power.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-int_power.o `test -f 'src/int_power.c' || echo '$(srcdir)/'`src/int_power.c src/pq-int_power.obj: src/int_power.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-int_power.obj -MD -MP -MF src/$(DEPDIR)/pq-int_power.Tpo -c -o src/pq-int_power.obj `if test -f 'src/int_power.c'; then $(CYGPATH_W) 'src/int_power.c'; else $(CYGPATH_W) '$(srcdir)/src/int_power.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-int_power.Tpo src/$(DEPDIR)/pq-int_power.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/int_power.c' object='src/pq-int_power.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-int_power.obj `if test -f 'src/int_power.c'; then $(CYGPATH_W) 'src/int_power.c'; else $(CYGPATH_W) '$(srcdir)/src/int_power.c'; fi` src/pq-interactive_pga.o: src/interactive_pga.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-interactive_pga.o -MD -MP -MF src/$(DEPDIR)/pq-interactive_pga.Tpo -c -o src/pq-interactive_pga.o `test -f 'src/interactive_pga.c' || echo '$(srcdir)/'`src/interactive_pga.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-interactive_pga.Tpo src/$(DEPDIR)/pq-interactive_pga.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/interactive_pga.c' object='src/pq-interactive_pga.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-interactive_pga.o `test -f 'src/interactive_pga.c' || echo '$(srcdir)/'`src/interactive_pga.c src/pq-interactive_pga.obj: src/interactive_pga.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-interactive_pga.obj -MD -MP -MF src/$(DEPDIR)/pq-interactive_pga.Tpo -c -o src/pq-interactive_pga.obj `if test -f 'src/interactive_pga.c'; then $(CYGPATH_W) 'src/interactive_pga.c'; else $(CYGPATH_W) '$(srcdir)/src/interactive_pga.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-interactive_pga.Tpo src/$(DEPDIR)/pq-interactive_pga.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/interactive_pga.c' object='src/pq-interactive_pga.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-interactive_pga.obj `if test -f 'src/interactive_pga.c'; then $(CYGPATH_W) 'src/interactive_pga.c'; else $(CYGPATH_W) '$(srcdir)/src/interactive_pga.c'; fi` src/pq-interactive_pq.o: src/interactive_pq.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-interactive_pq.o -MD -MP -MF src/$(DEPDIR)/pq-interactive_pq.Tpo -c -o src/pq-interactive_pq.o `test -f 'src/interactive_pq.c' || echo '$(srcdir)/'`src/interactive_pq.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-interactive_pq.Tpo src/$(DEPDIR)/pq-interactive_pq.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/interactive_pq.c' object='src/pq-interactive_pq.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-interactive_pq.o `test -f 'src/interactive_pq.c' || echo '$(srcdir)/'`src/interactive_pq.c src/pq-interactive_pq.obj: src/interactive_pq.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-interactive_pq.obj -MD -MP -MF src/$(DEPDIR)/pq-interactive_pq.Tpo -c -o src/pq-interactive_pq.obj `if test -f 'src/interactive_pq.c'; then $(CYGPATH_W) 'src/interactive_pq.c'; else $(CYGPATH_W) '$(srcdir)/src/interactive_pq.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-interactive_pq.Tpo src/$(DEPDIR)/pq-interactive_pq.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/interactive_pq.c' object='src/pq-interactive_pq.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-interactive_pq.obj `if test -f 'src/interactive_pq.c'; then $(CYGPATH_W) 'src/interactive_pq.c'; else $(CYGPATH_W) '$(srcdir)/src/interactive_pq.c'; fi` src/pq-invert.o: src/invert.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-invert.o -MD -MP -MF src/$(DEPDIR)/pq-invert.Tpo -c -o src/pq-invert.o `test -f 'src/invert.c' || echo '$(srcdir)/'`src/invert.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-invert.Tpo src/$(DEPDIR)/pq-invert.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/invert.c' object='src/pq-invert.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-invert.o `test -f 'src/invert.c' || echo '$(srcdir)/'`src/invert.c src/pq-invert.obj: src/invert.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-invert.obj -MD -MP -MF src/$(DEPDIR)/pq-invert.Tpo -c -o src/pq-invert.obj `if test -f 'src/invert.c'; then $(CYGPATH_W) 'src/invert.c'; else $(CYGPATH_W) '$(srcdir)/src/invert.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-invert.Tpo src/$(DEPDIR)/pq-invert.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/invert.c' object='src/pq-invert.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-invert.obj `if test -f 'src/invert.c'; then $(CYGPATH_W) 'src/invert.c'; else $(CYGPATH_W) '$(srcdir)/src/invert.c'; fi` src/pq-invert_auts.o: src/invert_auts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-invert_auts.o -MD -MP -MF src/$(DEPDIR)/pq-invert_auts.Tpo -c -o src/pq-invert_auts.o `test -f 'src/invert_auts.c' || echo '$(srcdir)/'`src/invert_auts.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-invert_auts.Tpo src/$(DEPDIR)/pq-invert_auts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/invert_auts.c' object='src/pq-invert_auts.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-invert_auts.o `test -f 'src/invert_auts.c' || echo '$(srcdir)/'`src/invert_auts.c src/pq-invert_auts.obj: src/invert_auts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-invert_auts.obj -MD -MP -MF src/$(DEPDIR)/pq-invert_auts.Tpo -c -o src/pq-invert_auts.obj `if test -f 'src/invert_auts.c'; then $(CYGPATH_W) 'src/invert_auts.c'; else $(CYGPATH_W) '$(srcdir)/src/invert_auts.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-invert_auts.Tpo src/$(DEPDIR)/pq-invert_auts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/invert_auts.c' object='src/pq-invert_auts.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-invert_auts.obj `if test -f 'src/invert_auts.c'; then $(CYGPATH_W) 'src/invert_auts.c'; else $(CYGPATH_W) '$(srcdir)/src/invert_auts.c'; fi` src/pq-invert_modp.o: src/invert_modp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-invert_modp.o -MD -MP -MF src/$(DEPDIR)/pq-invert_modp.Tpo -c -o src/pq-invert_modp.o `test -f 'src/invert_modp.c' || echo '$(srcdir)/'`src/invert_modp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-invert_modp.Tpo src/$(DEPDIR)/pq-invert_modp.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/invert_modp.c' object='src/pq-invert_modp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-invert_modp.o `test -f 'src/invert_modp.c' || echo '$(srcdir)/'`src/invert_modp.c src/pq-invert_modp.obj: src/invert_modp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-invert_modp.obj -MD -MP -MF src/$(DEPDIR)/pq-invert_modp.Tpo -c -o src/pq-invert_modp.obj `if test -f 'src/invert_modp.c'; then $(CYGPATH_W) 'src/invert_modp.c'; else $(CYGPATH_W) '$(srcdir)/src/invert_modp.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-invert_modp.Tpo src/$(DEPDIR)/pq-invert_modp.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/invert_modp.c' object='src/pq-invert_modp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-invert_modp.obj `if test -f 'src/invert_modp.c'; then $(CYGPATH_W) 'src/invert_modp.c'; else $(CYGPATH_W) '$(srcdir)/src/invert_modp.c'; fi` src/pq-is_genlim_exceeded.o: src/is_genlim_exceeded.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-is_genlim_exceeded.o -MD -MP -MF src/$(DEPDIR)/pq-is_genlim_exceeded.Tpo -c -o src/pq-is_genlim_exceeded.o `test -f 'src/is_genlim_exceeded.c' || echo '$(srcdir)/'`src/is_genlim_exceeded.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-is_genlim_exceeded.Tpo src/$(DEPDIR)/pq-is_genlim_exceeded.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/is_genlim_exceeded.c' object='src/pq-is_genlim_exceeded.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-is_genlim_exceeded.o `test -f 'src/is_genlim_exceeded.c' || echo '$(srcdir)/'`src/is_genlim_exceeded.c src/pq-is_genlim_exceeded.obj: src/is_genlim_exceeded.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-is_genlim_exceeded.obj -MD -MP -MF src/$(DEPDIR)/pq-is_genlim_exceeded.Tpo -c -o src/pq-is_genlim_exceeded.obj `if test -f 'src/is_genlim_exceeded.c'; then $(CYGPATH_W) 'src/is_genlim_exceeded.c'; else $(CYGPATH_W) '$(srcdir)/src/is_genlim_exceeded.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-is_genlim_exceeded.Tpo src/$(DEPDIR)/pq-is_genlim_exceeded.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/is_genlim_exceeded.c' object='src/pq-is_genlim_exceeded.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-is_genlim_exceeded.obj `if test -f 'src/is_genlim_exceeded.c'; then $(CYGPATH_W) 'src/is_genlim_exceeded.c'; else $(CYGPATH_W) '$(srcdir)/src/is_genlim_exceeded.c'; fi` src/pq-is_space_exhausted.o: src/is_space_exhausted.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-is_space_exhausted.o -MD -MP -MF src/$(DEPDIR)/pq-is_space_exhausted.Tpo -c -o src/pq-is_space_exhausted.o `test -f 'src/is_space_exhausted.c' || echo '$(srcdir)/'`src/is_space_exhausted.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-is_space_exhausted.Tpo src/$(DEPDIR)/pq-is_space_exhausted.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/is_space_exhausted.c' object='src/pq-is_space_exhausted.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-is_space_exhausted.o `test -f 'src/is_space_exhausted.c' || echo '$(srcdir)/'`src/is_space_exhausted.c src/pq-is_space_exhausted.obj: src/is_space_exhausted.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-is_space_exhausted.obj -MD -MP -MF src/$(DEPDIR)/pq-is_space_exhausted.Tpo -c -o src/pq-is_space_exhausted.obj `if test -f 'src/is_space_exhausted.c'; then $(CYGPATH_W) 'src/is_space_exhausted.c'; else $(CYGPATH_W) '$(srcdir)/src/is_space_exhausted.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-is_space_exhausted.Tpo src/$(DEPDIR)/pq-is_space_exhausted.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/is_space_exhausted.c' object='src/pq-is_space_exhausted.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-is_space_exhausted.obj `if test -f 'src/is_space_exhausted.c'; then $(CYGPATH_W) 'src/is_space_exhausted.c'; else $(CYGPATH_W) '$(srcdir)/src/is_space_exhausted.c'; fi` src/pq-isom_options.o: src/isom_options.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-isom_options.o -MD -MP -MF src/$(DEPDIR)/pq-isom_options.Tpo -c -o src/pq-isom_options.o `test -f 'src/isom_options.c' || echo '$(srcdir)/'`src/isom_options.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-isom_options.Tpo src/$(DEPDIR)/pq-isom_options.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/isom_options.c' object='src/pq-isom_options.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-isom_options.o `test -f 'src/isom_options.c' || echo '$(srcdir)/'`src/isom_options.c src/pq-isom_options.obj: src/isom_options.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-isom_options.obj -MD -MP -MF src/$(DEPDIR)/pq-isom_options.Tpo -c -o src/pq-isom_options.obj `if test -f 'src/isom_options.c'; then $(CYGPATH_W) 'src/isom_options.c'; else $(CYGPATH_W) '$(srcdir)/src/isom_options.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-isom_options.Tpo src/$(DEPDIR)/pq-isom_options.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/isom_options.c' object='src/pq-isom_options.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-isom_options.obj `if test -f 'src/isom_options.c'; then $(CYGPATH_W) 'src/isom_options.c'; else $(CYGPATH_W) '$(srcdir)/src/isom_options.c'; fi` src/pq-iteration.o: src/iteration.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-iteration.o -MD -MP -MF src/$(DEPDIR)/pq-iteration.Tpo -c -o src/pq-iteration.o `test -f 'src/iteration.c' || echo '$(srcdir)/'`src/iteration.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-iteration.Tpo src/$(DEPDIR)/pq-iteration.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/iteration.c' object='src/pq-iteration.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-iteration.o `test -f 'src/iteration.c' || echo '$(srcdir)/'`src/iteration.c src/pq-iteration.obj: src/iteration.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-iteration.obj -MD -MP -MF src/$(DEPDIR)/pq-iteration.Tpo -c -o src/pq-iteration.obj `if test -f 'src/iteration.c'; then $(CYGPATH_W) 'src/iteration.c'; else $(CYGPATH_W) '$(srcdir)/src/iteration.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-iteration.Tpo src/$(DEPDIR)/pq-iteration.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/iteration.c' object='src/pq-iteration.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-iteration.obj `if test -f 'src/iteration.c'; then $(CYGPATH_W) 'src/iteration.c'; else $(CYGPATH_W) '$(srcdir)/src/iteration.c'; fi` src/pq-jacobi.o: src/jacobi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-jacobi.o -MD -MP -MF src/$(DEPDIR)/pq-jacobi.Tpo -c -o src/pq-jacobi.o `test -f 'src/jacobi.c' || echo '$(srcdir)/'`src/jacobi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-jacobi.Tpo src/$(DEPDIR)/pq-jacobi.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/jacobi.c' object='src/pq-jacobi.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-jacobi.o `test -f 'src/jacobi.c' || echo '$(srcdir)/'`src/jacobi.c src/pq-jacobi.obj: src/jacobi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-jacobi.obj -MD -MP -MF src/$(DEPDIR)/pq-jacobi.Tpo -c -o src/pq-jacobi.obj `if test -f 'src/jacobi.c'; then $(CYGPATH_W) 'src/jacobi.c'; else $(CYGPATH_W) '$(srcdir)/src/jacobi.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-jacobi.Tpo src/$(DEPDIR)/pq-jacobi.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/jacobi.c' object='src/pq-jacobi.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-jacobi.obj `if test -f 'src/jacobi.c'; then $(CYGPATH_W) 'src/jacobi.c'; else $(CYGPATH_W) '$(srcdir)/src/jacobi.c'; fi` src/pq-label_to_subgroup.o: src/label_to_subgroup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-label_to_subgroup.o -MD -MP -MF src/$(DEPDIR)/pq-label_to_subgroup.Tpo -c -o src/pq-label_to_subgroup.o `test -f 'src/label_to_subgroup.c' || echo '$(srcdir)/'`src/label_to_subgroup.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-label_to_subgroup.Tpo src/$(DEPDIR)/pq-label_to_subgroup.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/label_to_subgroup.c' object='src/pq-label_to_subgroup.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-label_to_subgroup.o `test -f 'src/label_to_subgroup.c' || echo '$(srcdir)/'`src/label_to_subgroup.c src/pq-label_to_subgroup.obj: src/label_to_subgroup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-label_to_subgroup.obj -MD -MP -MF src/$(DEPDIR)/pq-label_to_subgroup.Tpo -c -o src/pq-label_to_subgroup.obj `if test -f 'src/label_to_subgroup.c'; then $(CYGPATH_W) 'src/label_to_subgroup.c'; else $(CYGPATH_W) '$(srcdir)/src/label_to_subgroup.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-label_to_subgroup.Tpo src/$(DEPDIR)/pq-label_to_subgroup.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/label_to_subgroup.c' object='src/pq-label_to_subgroup.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-label_to_subgroup.obj `if test -f 'src/label_to_subgroup.c'; then $(CYGPATH_W) 'src/label_to_subgroup.c'; else $(CYGPATH_W) '$(srcdir)/src/label_to_subgroup.c'; fi` src/pq-last_class.o: src/last_class.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-last_class.o -MD -MP -MF src/$(DEPDIR)/pq-last_class.Tpo -c -o src/pq-last_class.o `test -f 'src/last_class.c' || echo '$(srcdir)/'`src/last_class.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-last_class.Tpo src/$(DEPDIR)/pq-last_class.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/last_class.c' object='src/pq-last_class.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-last_class.o `test -f 'src/last_class.c' || echo '$(srcdir)/'`src/last_class.c src/pq-last_class.obj: src/last_class.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-last_class.obj -MD -MP -MF src/$(DEPDIR)/pq-last_class.Tpo -c -o src/pq-last_class.obj `if test -f 'src/last_class.c'; then $(CYGPATH_W) 'src/last_class.c'; else $(CYGPATH_W) '$(srcdir)/src/last_class.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-last_class.Tpo src/$(DEPDIR)/pq-last_class.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/last_class.c' object='src/pq-last_class.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-last_class.obj `if test -f 'src/last_class.c'; then $(CYGPATH_W) 'src/last_class.c'; else $(CYGPATH_W) '$(srcdir)/src/last_class.c'; fi` src/pq-list_commutators.o: src/list_commutators.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-list_commutators.o -MD -MP -MF src/$(DEPDIR)/pq-list_commutators.Tpo -c -o src/pq-list_commutators.o `test -f 'src/list_commutators.c' || echo '$(srcdir)/'`src/list_commutators.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-list_commutators.Tpo src/$(DEPDIR)/pq-list_commutators.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/list_commutators.c' object='src/pq-list_commutators.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-list_commutators.o `test -f 'src/list_commutators.c' || echo '$(srcdir)/'`src/list_commutators.c src/pq-list_commutators.obj: src/list_commutators.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-list_commutators.obj -MD -MP -MF src/$(DEPDIR)/pq-list_commutators.Tpo -c -o src/pq-list_commutators.obj `if test -f 'src/list_commutators.c'; then $(CYGPATH_W) 'src/list_commutators.c'; else $(CYGPATH_W) '$(srcdir)/src/list_commutators.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-list_commutators.Tpo src/$(DEPDIR)/pq-list_commutators.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/list_commutators.c' object='src/pq-list_commutators.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-list_commutators.obj `if test -f 'src/list_commutators.c'; then $(CYGPATH_W) 'src/list_commutators.c'; else $(CYGPATH_W) '$(srcdir)/src/list_commutators.c'; fi` src/pq-map_relations.o: src/map_relations.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-map_relations.o -MD -MP -MF src/$(DEPDIR)/pq-map_relations.Tpo -c -o src/pq-map_relations.o `test -f 'src/map_relations.c' || echo '$(srcdir)/'`src/map_relations.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-map_relations.Tpo src/$(DEPDIR)/pq-map_relations.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/map_relations.c' object='src/pq-map_relations.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-map_relations.o `test -f 'src/map_relations.c' || echo '$(srcdir)/'`src/map_relations.c src/pq-map_relations.obj: src/map_relations.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-map_relations.obj -MD -MP -MF src/$(DEPDIR)/pq-map_relations.Tpo -c -o src/pq-map_relations.obj `if test -f 'src/map_relations.c'; then $(CYGPATH_W) 'src/map_relations.c'; else $(CYGPATH_W) '$(srcdir)/src/map_relations.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-map_relations.Tpo src/$(DEPDIR)/pq-map_relations.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/map_relations.c' object='src/pq-map_relations.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-map_relations.obj `if test -f 'src/map_relations.c'; then $(CYGPATH_W) 'src/map_relations.c'; else $(CYGPATH_W) '$(srcdir)/src/map_relations.c'; fi` src/pq-matrix.o: src/matrix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-matrix.o -MD -MP -MF src/$(DEPDIR)/pq-matrix.Tpo -c -o src/pq-matrix.o `test -f 'src/matrix.c' || echo '$(srcdir)/'`src/matrix.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-matrix.Tpo src/$(DEPDIR)/pq-matrix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/matrix.c' object='src/pq-matrix.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-matrix.o `test -f 'src/matrix.c' || echo '$(srcdir)/'`src/matrix.c src/pq-matrix.obj: src/matrix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-matrix.obj -MD -MP -MF src/$(DEPDIR)/pq-matrix.Tpo -c -o src/pq-matrix.obj `if test -f 'src/matrix.c'; then $(CYGPATH_W) 'src/matrix.c'; else $(CYGPATH_W) '$(srcdir)/src/matrix.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-matrix.Tpo src/$(DEPDIR)/pq-matrix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/matrix.c' object='src/pq-matrix.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-matrix.obj `if test -f 'src/matrix.c'; then $(CYGPATH_W) 'src/matrix.c'; else $(CYGPATH_W) '$(srcdir)/src/matrix.c'; fi` src/pq-maxoccur.o: src/maxoccur.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-maxoccur.o -MD -MP -MF src/$(DEPDIR)/pq-maxoccur.Tpo -c -o src/pq-maxoccur.o `test -f 'src/maxoccur.c' || echo '$(srcdir)/'`src/maxoccur.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-maxoccur.Tpo src/$(DEPDIR)/pq-maxoccur.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/maxoccur.c' object='src/pq-maxoccur.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-maxoccur.o `test -f 'src/maxoccur.c' || echo '$(srcdir)/'`src/maxoccur.c src/pq-maxoccur.obj: src/maxoccur.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-maxoccur.obj -MD -MP -MF src/$(DEPDIR)/pq-maxoccur.Tpo -c -o src/pq-maxoccur.obj `if test -f 'src/maxoccur.c'; then $(CYGPATH_W) 'src/maxoccur.c'; else $(CYGPATH_W) '$(srcdir)/src/maxoccur.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-maxoccur.Tpo src/$(DEPDIR)/pq-maxoccur.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/maxoccur.c' object='src/pq-maxoccur.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-maxoccur.obj `if test -f 'src/maxoccur.c'; then $(CYGPATH_W) 'src/maxoccur.c'; else $(CYGPATH_W) '$(srcdir)/src/maxoccur.c'; fi` src/pq-multiply_word.o: src/multiply_word.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-multiply_word.o -MD -MP -MF src/$(DEPDIR)/pq-multiply_word.Tpo -c -o src/pq-multiply_word.o `test -f 'src/multiply_word.c' || echo '$(srcdir)/'`src/multiply_word.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-multiply_word.Tpo src/$(DEPDIR)/pq-multiply_word.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/multiply_word.c' object='src/pq-multiply_word.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-multiply_word.o `test -f 'src/multiply_word.c' || echo '$(srcdir)/'`src/multiply_word.c src/pq-multiply_word.obj: src/multiply_word.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-multiply_word.obj -MD -MP -MF src/$(DEPDIR)/pq-multiply_word.Tpo -c -o src/pq-multiply_word.obj `if test -f 'src/multiply_word.c'; then $(CYGPATH_W) 'src/multiply_word.c'; else $(CYGPATH_W) '$(srcdir)/src/multiply_word.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-multiply_word.Tpo src/$(DEPDIR)/pq-multiply_word.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/multiply_word.c' object='src/pq-multiply_word.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-multiply_word.obj `if test -f 'src/multiply_word.c'; then $(CYGPATH_W) 'src/multiply_word.c'; else $(CYGPATH_W) '$(srcdir)/src/multiply_word.c'; fi` src/pq-next_class.o: src/next_class.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-next_class.o -MD -MP -MF src/$(DEPDIR)/pq-next_class.Tpo -c -o src/pq-next_class.o `test -f 'src/next_class.c' || echo '$(srcdir)/'`src/next_class.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-next_class.Tpo src/$(DEPDIR)/pq-next_class.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/next_class.c' object='src/pq-next_class.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-next_class.o `test -f 'src/next_class.c' || echo '$(srcdir)/'`src/next_class.c src/pq-next_class.obj: src/next_class.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-next_class.obj -MD -MP -MF src/$(DEPDIR)/pq-next_class.Tpo -c -o src/pq-next_class.obj `if test -f 'src/next_class.c'; then $(CYGPATH_W) 'src/next_class.c'; else $(CYGPATH_W) '$(srcdir)/src/next_class.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-next_class.Tpo src/$(DEPDIR)/pq-next_class.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/next_class.c' object='src/pq-next_class.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-next_class.obj `if test -f 'src/next_class.c'; then $(CYGPATH_W) 'src/next_class.c'; else $(CYGPATH_W) '$(srcdir)/src/next_class.c'; fi` src/pq-options.o: src/options.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-options.o -MD -MP -MF src/$(DEPDIR)/pq-options.Tpo -c -o src/pq-options.o `test -f 'src/options.c' || echo '$(srcdir)/'`src/options.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-options.Tpo src/$(DEPDIR)/pq-options.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/options.c' object='src/pq-options.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-options.o `test -f 'src/options.c' || echo '$(srcdir)/'`src/options.c src/pq-options.obj: src/options.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-options.obj -MD -MP -MF src/$(DEPDIR)/pq-options.Tpo -c -o src/pq-options.obj `if test -f 'src/options.c'; then $(CYGPATH_W) 'src/options.c'; else $(CYGPATH_W) '$(srcdir)/src/options.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-options.Tpo src/$(DEPDIR)/pq-options.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/options.c' object='src/pq-options.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-options.obj `if test -f 'src/options.c'; then $(CYGPATH_W) 'src/options.c'; else $(CYGPATH_W) '$(srcdir)/src/options.c'; fi` src/pq-orbit_summary.o: src/orbit_summary.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-orbit_summary.o -MD -MP -MF src/$(DEPDIR)/pq-orbit_summary.Tpo -c -o src/pq-orbit_summary.o `test -f 'src/orbit_summary.c' || echo '$(srcdir)/'`src/orbit_summary.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-orbit_summary.Tpo src/$(DEPDIR)/pq-orbit_summary.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/orbit_summary.c' object='src/pq-orbit_summary.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-orbit_summary.o `test -f 'src/orbit_summary.c' || echo '$(srcdir)/'`src/orbit_summary.c src/pq-orbit_summary.obj: src/orbit_summary.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-orbit_summary.obj -MD -MP -MF src/$(DEPDIR)/pq-orbit_summary.Tpo -c -o src/pq-orbit_summary.obj `if test -f 'src/orbit_summary.c'; then $(CYGPATH_W) 'src/orbit_summary.c'; else $(CYGPATH_W) '$(srcdir)/src/orbit_summary.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-orbit_summary.Tpo src/$(DEPDIR)/pq-orbit_summary.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/orbit_summary.c' object='src/pq-orbit_summary.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-orbit_summary.obj `if test -f 'src/orbit_summary.c'; then $(CYGPATH_W) 'src/orbit_summary.c'; else $(CYGPATH_W) '$(srcdir)/src/orbit_summary.c'; fi` src/pq-permute_elements.o: src/permute_elements.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-permute_elements.o -MD -MP -MF src/$(DEPDIR)/pq-permute_elements.Tpo -c -o src/pq-permute_elements.o `test -f 'src/permute_elements.c' || echo '$(srcdir)/'`src/permute_elements.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-permute_elements.Tpo src/$(DEPDIR)/pq-permute_elements.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/permute_elements.c' object='src/pq-permute_elements.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-permute_elements.o `test -f 'src/permute_elements.c' || echo '$(srcdir)/'`src/permute_elements.c src/pq-permute_elements.obj: src/permute_elements.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-permute_elements.obj -MD -MP -MF src/$(DEPDIR)/pq-permute_elements.Tpo -c -o src/pq-permute_elements.obj `if test -f 'src/permute_elements.c'; then $(CYGPATH_W) 'src/permute_elements.c'; else $(CYGPATH_W) '$(srcdir)/src/permute_elements.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-permute_elements.Tpo src/$(DEPDIR)/pq-permute_elements.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/permute_elements.c' object='src/pq-permute_elements.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-permute_elements.obj `if test -f 'src/permute_elements.c'; then $(CYGPATH_W) 'src/permute_elements.c'; else $(CYGPATH_W) '$(srcdir)/src/permute_elements.c'; fi` src/pq-permute_subgroups.o: src/permute_subgroups.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-permute_subgroups.o -MD -MP -MF src/$(DEPDIR)/pq-permute_subgroups.Tpo -c -o src/pq-permute_subgroups.o `test -f 'src/permute_subgroups.c' || echo '$(srcdir)/'`src/permute_subgroups.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-permute_subgroups.Tpo src/$(DEPDIR)/pq-permute_subgroups.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/permute_subgroups.c' object='src/pq-permute_subgroups.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-permute_subgroups.o `test -f 'src/permute_subgroups.c' || echo '$(srcdir)/'`src/permute_subgroups.c src/pq-permute_subgroups.obj: src/permute_subgroups.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-permute_subgroups.obj -MD -MP -MF src/$(DEPDIR)/pq-permute_subgroups.Tpo -c -o src/pq-permute_subgroups.obj `if test -f 'src/permute_subgroups.c'; then $(CYGPATH_W) 'src/permute_subgroups.c'; else $(CYGPATH_W) '$(srcdir)/src/permute_subgroups.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-permute_subgroups.Tpo src/$(DEPDIR)/pq-permute_subgroups.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/permute_subgroups.c' object='src/pq-permute_subgroups.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-permute_subgroups.obj `if test -f 'src/permute_subgroups.c'; then $(CYGPATH_W) 'src/permute_subgroups.c'; else $(CYGPATH_W) '$(srcdir)/src/permute_subgroups.c'; fi` src/pq-pgroup.o: src/pgroup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-pgroup.o -MD -MP -MF src/$(DEPDIR)/pq-pgroup.Tpo -c -o src/pq-pgroup.o `test -f 'src/pgroup.c' || echo '$(srcdir)/'`src/pgroup.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-pgroup.Tpo src/$(DEPDIR)/pq-pgroup.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/pgroup.c' object='src/pq-pgroup.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-pgroup.o `test -f 'src/pgroup.c' || echo '$(srcdir)/'`src/pgroup.c src/pq-pgroup.obj: src/pgroup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-pgroup.obj -MD -MP -MF src/$(DEPDIR)/pq-pgroup.Tpo -c -o src/pq-pgroup.obj `if test -f 'src/pgroup.c'; then $(CYGPATH_W) 'src/pgroup.c'; else $(CYGPATH_W) '$(srcdir)/src/pgroup.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-pgroup.Tpo src/$(DEPDIR)/pq-pgroup.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/pgroup.c' object='src/pq-pgroup.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-pgroup.obj `if test -f 'src/pgroup.c'; then $(CYGPATH_W) 'src/pgroup.c'; else $(CYGPATH_W) '$(srcdir)/src/pgroup.c'; fi` src/pq-power.o: src/power.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-power.o -MD -MP -MF src/$(DEPDIR)/pq-power.Tpo -c -o src/pq-power.o `test -f 'src/power.c' || echo '$(srcdir)/'`src/power.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-power.Tpo src/$(DEPDIR)/pq-power.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/power.c' object='src/pq-power.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-power.o `test -f 'src/power.c' || echo '$(srcdir)/'`src/power.c src/pq-power.obj: src/power.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-power.obj -MD -MP -MF src/$(DEPDIR)/pq-power.Tpo -c -o src/pq-power.obj `if test -f 'src/power.c'; then $(CYGPATH_W) 'src/power.c'; else $(CYGPATH_W) '$(srcdir)/src/power.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-power.Tpo src/$(DEPDIR)/pq-power.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/power.c' object='src/pq-power.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-power.obj `if test -f 'src/power.c'; then $(CYGPATH_W) 'src/power.c'; else $(CYGPATH_W) '$(srcdir)/src/power.c'; fi` src/pq-pquotient.o: src/pquotient.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-pquotient.o -MD -MP -MF src/$(DEPDIR)/pq-pquotient.Tpo -c -o src/pq-pquotient.o `test -f 'src/pquotient.c' || echo '$(srcdir)/'`src/pquotient.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-pquotient.Tpo src/$(DEPDIR)/pq-pquotient.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/pquotient.c' object='src/pq-pquotient.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-pquotient.o `test -f 'src/pquotient.c' || echo '$(srcdir)/'`src/pquotient.c src/pq-pquotient.obj: src/pquotient.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-pquotient.obj -MD -MP -MF src/$(DEPDIR)/pq-pquotient.Tpo -c -o src/pq-pquotient.obj `if test -f 'src/pquotient.c'; then $(CYGPATH_W) 'src/pquotient.c'; else $(CYGPATH_W) '$(srcdir)/src/pquotient.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-pquotient.Tpo src/$(DEPDIR)/pq-pquotient.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/pquotient.c' object='src/pq-pquotient.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-pquotient.obj `if test -f 'src/pquotient.c'; then $(CYGPATH_W) 'src/pquotient.c'; else $(CYGPATH_W) '$(srcdir)/src/pquotient.c'; fi` src/pq-pretty_filter.o: src/pretty_filter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-pretty_filter.o -MD -MP -MF src/$(DEPDIR)/pq-pretty_filter.Tpo -c -o src/pq-pretty_filter.o `test -f 'src/pretty_filter.c' || echo '$(srcdir)/'`src/pretty_filter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-pretty_filter.Tpo src/$(DEPDIR)/pq-pretty_filter.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/pretty_filter.c' object='src/pq-pretty_filter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-pretty_filter.o `test -f 'src/pretty_filter.c' || echo '$(srcdir)/'`src/pretty_filter.c src/pq-pretty_filter.obj: src/pretty_filter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-pretty_filter.obj -MD -MP -MF src/$(DEPDIR)/pq-pretty_filter.Tpo -c -o src/pq-pretty_filter.obj `if test -f 'src/pretty_filter.c'; then $(CYGPATH_W) 'src/pretty_filter.c'; else $(CYGPATH_W) '$(srcdir)/src/pretty_filter.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-pretty_filter.Tpo src/$(DEPDIR)/pq-pretty_filter.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/pretty_filter.c' object='src/pq-pretty_filter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-pretty_filter.obj `if test -f 'src/pretty_filter.c'; then $(CYGPATH_W) 'src/pretty_filter.c'; else $(CYGPATH_W) '$(srcdir)/src/pretty_filter.c'; fi` src/pq-pretty_filterfns.o: src/pretty_filterfns.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-pretty_filterfns.o -MD -MP -MF src/$(DEPDIR)/pq-pretty_filterfns.Tpo -c -o src/pq-pretty_filterfns.o `test -f 'src/pretty_filterfns.c' || echo '$(srcdir)/'`src/pretty_filterfns.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-pretty_filterfns.Tpo src/$(DEPDIR)/pq-pretty_filterfns.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/pretty_filterfns.c' object='src/pq-pretty_filterfns.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-pretty_filterfns.o `test -f 'src/pretty_filterfns.c' || echo '$(srcdir)/'`src/pretty_filterfns.c src/pq-pretty_filterfns.obj: src/pretty_filterfns.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-pretty_filterfns.obj -MD -MP -MF src/$(DEPDIR)/pq-pretty_filterfns.Tpo -c -o src/pq-pretty_filterfns.obj `if test -f 'src/pretty_filterfns.c'; then $(CYGPATH_W) 'src/pretty_filterfns.c'; else $(CYGPATH_W) '$(srcdir)/src/pretty_filterfns.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-pretty_filterfns.Tpo src/$(DEPDIR)/pq-pretty_filterfns.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/pretty_filterfns.c' object='src/pq-pretty_filterfns.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-pretty_filterfns.obj `if test -f 'src/pretty_filterfns.c'; then $(CYGPATH_W) 'src/pretty_filterfns.c'; else $(CYGPATH_W) '$(srcdir)/src/pretty_filterfns.c'; fi` src/pq-print_arrays.o: src/print_arrays.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_arrays.o -MD -MP -MF src/$(DEPDIR)/pq-print_arrays.Tpo -c -o src/pq-print_arrays.o `test -f 'src/print_arrays.c' || echo '$(srcdir)/'`src/print_arrays.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_arrays.Tpo src/$(DEPDIR)/pq-print_arrays.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_arrays.c' object='src/pq-print_arrays.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_arrays.o `test -f 'src/print_arrays.c' || echo '$(srcdir)/'`src/print_arrays.c src/pq-print_arrays.obj: src/print_arrays.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_arrays.obj -MD -MP -MF src/$(DEPDIR)/pq-print_arrays.Tpo -c -o src/pq-print_arrays.obj `if test -f 'src/print_arrays.c'; then $(CYGPATH_W) 'src/print_arrays.c'; else $(CYGPATH_W) '$(srcdir)/src/print_arrays.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_arrays.Tpo src/$(DEPDIR)/pq-print_arrays.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_arrays.c' object='src/pq-print_arrays.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_arrays.obj `if test -f 'src/print_arrays.c'; then $(CYGPATH_W) 'src/print_arrays.c'; else $(CYGPATH_W) '$(srcdir)/src/print_arrays.c'; fi` src/pq-print_auts.o: src/print_auts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_auts.o -MD -MP -MF src/$(DEPDIR)/pq-print_auts.Tpo -c -o src/pq-print_auts.o `test -f 'src/print_auts.c' || echo '$(srcdir)/'`src/print_auts.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_auts.Tpo src/$(DEPDIR)/pq-print_auts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_auts.c' object='src/pq-print_auts.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_auts.o `test -f 'src/print_auts.c' || echo '$(srcdir)/'`src/print_auts.c src/pq-print_auts.obj: src/print_auts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_auts.obj -MD -MP -MF src/$(DEPDIR)/pq-print_auts.Tpo -c -o src/pq-print_auts.obj `if test -f 'src/print_auts.c'; then $(CYGPATH_W) 'src/print_auts.c'; else $(CYGPATH_W) '$(srcdir)/src/print_auts.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_auts.Tpo src/$(DEPDIR)/pq-print_auts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_auts.c' object='src/pq-print_auts.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_auts.obj `if test -f 'src/print_auts.c'; then $(CYGPATH_W) 'src/print_auts.c'; else $(CYGPATH_W) '$(srcdir)/src/print_auts.c'; fi` src/pq-print_level.o: src/print_level.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_level.o -MD -MP -MF src/$(DEPDIR)/pq-print_level.Tpo -c -o src/pq-print_level.o `test -f 'src/print_level.c' || echo '$(srcdir)/'`src/print_level.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_level.Tpo src/$(DEPDIR)/pq-print_level.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_level.c' object='src/pq-print_level.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_level.o `test -f 'src/print_level.c' || echo '$(srcdir)/'`src/print_level.c src/pq-print_level.obj: src/print_level.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_level.obj -MD -MP -MF src/$(DEPDIR)/pq-print_level.Tpo -c -o src/pq-print_level.obj `if test -f 'src/print_level.c'; then $(CYGPATH_W) 'src/print_level.c'; else $(CYGPATH_W) '$(srcdir)/src/print_level.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_level.Tpo src/$(DEPDIR)/pq-print_level.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_level.c' object='src/pq-print_level.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_level.obj `if test -f 'src/print_level.c'; then $(CYGPATH_W) 'src/print_level.c'; else $(CYGPATH_W) '$(srcdir)/src/print_level.c'; fi` src/pq-print_multiweight.o: src/print_multiweight.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_multiweight.o -MD -MP -MF src/$(DEPDIR)/pq-print_multiweight.Tpo -c -o src/pq-print_multiweight.o `test -f 'src/print_multiweight.c' || echo '$(srcdir)/'`src/print_multiweight.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_multiweight.Tpo src/$(DEPDIR)/pq-print_multiweight.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_multiweight.c' object='src/pq-print_multiweight.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_multiweight.o `test -f 'src/print_multiweight.c' || echo '$(srcdir)/'`src/print_multiweight.c src/pq-print_multiweight.obj: src/print_multiweight.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_multiweight.obj -MD -MP -MF src/$(DEPDIR)/pq-print_multiweight.Tpo -c -o src/pq-print_multiweight.obj `if test -f 'src/print_multiweight.c'; then $(CYGPATH_W) 'src/print_multiweight.c'; else $(CYGPATH_W) '$(srcdir)/src/print_multiweight.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_multiweight.Tpo src/$(DEPDIR)/pq-print_multiweight.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_multiweight.c' object='src/pq-print_multiweight.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_multiweight.obj `if test -f 'src/print_multiweight.c'; then $(CYGPATH_W) 'src/print_multiweight.c'; else $(CYGPATH_W) '$(srcdir)/src/print_multiweight.c'; fi` src/pq-print_presentation.o: src/print_presentation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_presentation.o -MD -MP -MF src/$(DEPDIR)/pq-print_presentation.Tpo -c -o src/pq-print_presentation.o `test -f 'src/print_presentation.c' || echo '$(srcdir)/'`src/print_presentation.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_presentation.Tpo src/$(DEPDIR)/pq-print_presentation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_presentation.c' object='src/pq-print_presentation.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_presentation.o `test -f 'src/print_presentation.c' || echo '$(srcdir)/'`src/print_presentation.c src/pq-print_presentation.obj: src/print_presentation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_presentation.obj -MD -MP -MF src/$(DEPDIR)/pq-print_presentation.Tpo -c -o src/pq-print_presentation.obj `if test -f 'src/print_presentation.c'; then $(CYGPATH_W) 'src/print_presentation.c'; else $(CYGPATH_W) '$(srcdir)/src/print_presentation.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_presentation.Tpo src/$(DEPDIR)/pq-print_presentation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_presentation.c' object='src/pq-print_presentation.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_presentation.obj `if test -f 'src/print_presentation.c'; then $(CYGPATH_W) 'src/print_presentation.c'; else $(CYGPATH_W) '$(srcdir)/src/print_presentation.c'; fi` src/pq-print_structure.o: src/print_structure.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_structure.o -MD -MP -MF src/$(DEPDIR)/pq-print_structure.Tpo -c -o src/pq-print_structure.o `test -f 'src/print_structure.c' || echo '$(srcdir)/'`src/print_structure.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_structure.Tpo src/$(DEPDIR)/pq-print_structure.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_structure.c' object='src/pq-print_structure.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_structure.o `test -f 'src/print_structure.c' || echo '$(srcdir)/'`src/print_structure.c src/pq-print_structure.obj: src/print_structure.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_structure.obj -MD -MP -MF src/$(DEPDIR)/pq-print_structure.Tpo -c -o src/pq-print_structure.obj `if test -f 'src/print_structure.c'; then $(CYGPATH_W) 'src/print_structure.c'; else $(CYGPATH_W) '$(srcdir)/src/print_structure.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_structure.Tpo src/$(DEPDIR)/pq-print_structure.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_structure.c' object='src/pq-print_structure.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_structure.obj `if test -f 'src/print_structure.c'; then $(CYGPATH_W) 'src/print_structure.c'; else $(CYGPATH_W) '$(srcdir)/src/print_structure.c'; fi` src/pq-print_word.o: src/print_word.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_word.o -MD -MP -MF src/$(DEPDIR)/pq-print_word.Tpo -c -o src/pq-print_word.o `test -f 'src/print_word.c' || echo '$(srcdir)/'`src/print_word.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_word.Tpo src/$(DEPDIR)/pq-print_word.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_word.c' object='src/pq-print_word.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_word.o `test -f 'src/print_word.c' || echo '$(srcdir)/'`src/print_word.c src/pq-print_word.obj: src/print_word.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-print_word.obj -MD -MP -MF src/$(DEPDIR)/pq-print_word.Tpo -c -o src/pq-print_word.obj `if test -f 'src/print_word.c'; then $(CYGPATH_W) 'src/print_word.c'; else $(CYGPATH_W) '$(srcdir)/src/print_word.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-print_word.Tpo src/$(DEPDIR)/pq-print_word.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/print_word.c' object='src/pq-print_word.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-print_word.obj `if test -f 'src/print_word.c'; then $(CYGPATH_W) 'src/print_word.c'; else $(CYGPATH_W) '$(srcdir)/src/print_word.c'; fi` src/pq-read.o: src/read.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read.o -MD -MP -MF src/$(DEPDIR)/pq-read.Tpo -c -o src/pq-read.o `test -f 'src/read.c' || echo '$(srcdir)/'`src/read.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read.Tpo src/$(DEPDIR)/pq-read.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read.c' object='src/pq-read.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read.o `test -f 'src/read.c' || echo '$(srcdir)/'`src/read.c src/pq-read.obj: src/read.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read.obj -MD -MP -MF src/$(DEPDIR)/pq-read.Tpo -c -o src/pq-read.obj `if test -f 'src/read.c'; then $(CYGPATH_W) 'src/read.c'; else $(CYGPATH_W) '$(srcdir)/src/read.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read.Tpo src/$(DEPDIR)/pq-read.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read.c' object='src/pq-read.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read.obj `if test -f 'src/read.c'; then $(CYGPATH_W) 'src/read.c'; else $(CYGPATH_W) '$(srcdir)/src/read.c'; fi` src/pq-read_auts.o: src/read_auts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read_auts.o -MD -MP -MF src/$(DEPDIR)/pq-read_auts.Tpo -c -o src/pq-read_auts.o `test -f 'src/read_auts.c' || echo '$(srcdir)/'`src/read_auts.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read_auts.Tpo src/$(DEPDIR)/pq-read_auts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read_auts.c' object='src/pq-read_auts.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read_auts.o `test -f 'src/read_auts.c' || echo '$(srcdir)/'`src/read_auts.c src/pq-read_auts.obj: src/read_auts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read_auts.obj -MD -MP -MF src/$(DEPDIR)/pq-read_auts.Tpo -c -o src/pq-read_auts.obj `if test -f 'src/read_auts.c'; then $(CYGPATH_W) 'src/read_auts.c'; else $(CYGPATH_W) '$(srcdir)/src/read_auts.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read_auts.Tpo src/$(DEPDIR)/pq-read_auts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read_auts.c' object='src/pq-read_auts.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read_auts.obj `if test -f 'src/read_auts.c'; then $(CYGPATH_W) 'src/read_auts.c'; else $(CYGPATH_W) '$(srcdir)/src/read_auts.c'; fi` src/pq-read_parameters.o: src/read_parameters.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read_parameters.o -MD -MP -MF src/$(DEPDIR)/pq-read_parameters.Tpo -c -o src/pq-read_parameters.o `test -f 'src/read_parameters.c' || echo '$(srcdir)/'`src/read_parameters.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read_parameters.Tpo src/$(DEPDIR)/pq-read_parameters.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read_parameters.c' object='src/pq-read_parameters.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read_parameters.o `test -f 'src/read_parameters.c' || echo '$(srcdir)/'`src/read_parameters.c src/pq-read_parameters.obj: src/read_parameters.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read_parameters.obj -MD -MP -MF src/$(DEPDIR)/pq-read_parameters.Tpo -c -o src/pq-read_parameters.obj `if test -f 'src/read_parameters.c'; then $(CYGPATH_W) 'src/read_parameters.c'; else $(CYGPATH_W) '$(srcdir)/src/read_parameters.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read_parameters.Tpo src/$(DEPDIR)/pq-read_parameters.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read_parameters.c' object='src/pq-read_parameters.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read_parameters.obj `if test -f 'src/read_parameters.c'; then $(CYGPATH_W) 'src/read_parameters.c'; else $(CYGPATH_W) '$(srcdir)/src/read_parameters.c'; fi` src/pq-read_relations.o: src/read_relations.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read_relations.o -MD -MP -MF src/$(DEPDIR)/pq-read_relations.Tpo -c -o src/pq-read_relations.o `test -f 'src/read_relations.c' || echo '$(srcdir)/'`src/read_relations.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read_relations.Tpo src/$(DEPDIR)/pq-read_relations.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read_relations.c' object='src/pq-read_relations.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read_relations.o `test -f 'src/read_relations.c' || echo '$(srcdir)/'`src/read_relations.c src/pq-read_relations.obj: src/read_relations.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read_relations.obj -MD -MP -MF src/$(DEPDIR)/pq-read_relations.Tpo -c -o src/pq-read_relations.obj `if test -f 'src/read_relations.c'; then $(CYGPATH_W) 'src/read_relations.c'; else $(CYGPATH_W) '$(srcdir)/src/read_relations.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read_relations.Tpo src/$(DEPDIR)/pq-read_relations.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read_relations.c' object='src/pq-read_relations.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read_relations.obj `if test -f 'src/read_relations.c'; then $(CYGPATH_W) 'src/read_relations.c'; else $(CYGPATH_W) '$(srcdir)/src/read_relations.c'; fi` src/pq-read_relator_file.o: src/read_relator_file.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read_relator_file.o -MD -MP -MF src/$(DEPDIR)/pq-read_relator_file.Tpo -c -o src/pq-read_relator_file.o `test -f 'src/read_relator_file.c' || echo '$(srcdir)/'`src/read_relator_file.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read_relator_file.Tpo src/$(DEPDIR)/pq-read_relator_file.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read_relator_file.c' object='src/pq-read_relator_file.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read_relator_file.o `test -f 'src/read_relator_file.c' || echo '$(srcdir)/'`src/read_relator_file.c src/pq-read_relator_file.obj: src/read_relator_file.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read_relator_file.obj -MD -MP -MF src/$(DEPDIR)/pq-read_relator_file.Tpo -c -o src/pq-read_relator_file.obj `if test -f 'src/read_relator_file.c'; then $(CYGPATH_W) 'src/read_relator_file.c'; else $(CYGPATH_W) '$(srcdir)/src/read_relator_file.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read_relator_file.Tpo src/$(DEPDIR)/pq-read_relator_file.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read_relator_file.c' object='src/pq-read_relator_file.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read_relator_file.obj `if test -f 'src/read_relator_file.c'; then $(CYGPATH_W) 'src/read_relator_file.c'; else $(CYGPATH_W) '$(srcdir)/src/read_relator_file.c'; fi` src/pq-read_value.o: src/read_value.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read_value.o -MD -MP -MF src/$(DEPDIR)/pq-read_value.Tpo -c -o src/pq-read_value.o `test -f 'src/read_value.c' || echo '$(srcdir)/'`src/read_value.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read_value.Tpo src/$(DEPDIR)/pq-read_value.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read_value.c' object='src/pq-read_value.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read_value.o `test -f 'src/read_value.c' || echo '$(srcdir)/'`src/read_value.c src/pq-read_value.obj: src/read_value.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read_value.obj -MD -MP -MF src/$(DEPDIR)/pq-read_value.Tpo -c -o src/pq-read_value.obj `if test -f 'src/read_value.c'; then $(CYGPATH_W) 'src/read_value.c'; else $(CYGPATH_W) '$(srcdir)/src/read_value.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read_value.Tpo src/$(DEPDIR)/pq-read_value.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read_value.c' object='src/pq-read_value.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read_value.obj `if test -f 'src/read_value.c'; then $(CYGPATH_W) 'src/read_value.c'; else $(CYGPATH_W) '$(srcdir)/src/read_value.c'; fi` src/pq-read_word.o: src/read_word.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read_word.o -MD -MP -MF src/$(DEPDIR)/pq-read_word.Tpo -c -o src/pq-read_word.o `test -f 'src/read_word.c' || echo '$(srcdir)/'`src/read_word.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read_word.Tpo src/$(DEPDIR)/pq-read_word.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read_word.c' object='src/pq-read_word.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read_word.o `test -f 'src/read_word.c' || echo '$(srcdir)/'`src/read_word.c src/pq-read_word.obj: src/read_word.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-read_word.obj -MD -MP -MF src/$(DEPDIR)/pq-read_word.Tpo -c -o src/pq-read_word.obj `if test -f 'src/read_word.c'; then $(CYGPATH_W) 'src/read_word.c'; else $(CYGPATH_W) '$(srcdir)/src/read_word.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-read_word.Tpo src/$(DEPDIR)/pq-read_word.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/read_word.c' object='src/pq-read_word.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-read_word.obj `if test -f 'src/read_word.c'; then $(CYGPATH_W) 'src/read_word.c'; else $(CYGPATH_W) '$(srcdir)/src/read_word.c'; fi` src/pq-reduce_matrix.o: src/reduce_matrix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-reduce_matrix.o -MD -MP -MF src/$(DEPDIR)/pq-reduce_matrix.Tpo -c -o src/pq-reduce_matrix.o `test -f 'src/reduce_matrix.c' || echo '$(srcdir)/'`src/reduce_matrix.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-reduce_matrix.Tpo src/$(DEPDIR)/pq-reduce_matrix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/reduce_matrix.c' object='src/pq-reduce_matrix.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-reduce_matrix.o `test -f 'src/reduce_matrix.c' || echo '$(srcdir)/'`src/reduce_matrix.c src/pq-reduce_matrix.obj: src/reduce_matrix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-reduce_matrix.obj -MD -MP -MF src/$(DEPDIR)/pq-reduce_matrix.Tpo -c -o src/pq-reduce_matrix.obj `if test -f 'src/reduce_matrix.c'; then $(CYGPATH_W) 'src/reduce_matrix.c'; else $(CYGPATH_W) '$(srcdir)/src/reduce_matrix.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-reduce_matrix.Tpo src/$(DEPDIR)/pq-reduce_matrix.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/reduce_matrix.c' object='src/pq-reduce_matrix.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-reduce_matrix.obj `if test -f 'src/reduce_matrix.c'; then $(CYGPATH_W) 'src/reduce_matrix.c'; else $(CYGPATH_W) '$(srcdir)/src/reduce_matrix.c'; fi` src/pq-reduced_covers.o: src/reduced_covers.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-reduced_covers.o -MD -MP -MF src/$(DEPDIR)/pq-reduced_covers.Tpo -c -o src/pq-reduced_covers.o `test -f 'src/reduced_covers.c' || echo '$(srcdir)/'`src/reduced_covers.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-reduced_covers.Tpo src/$(DEPDIR)/pq-reduced_covers.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/reduced_covers.c' object='src/pq-reduced_covers.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-reduced_covers.o `test -f 'src/reduced_covers.c' || echo '$(srcdir)/'`src/reduced_covers.c src/pq-reduced_covers.obj: src/reduced_covers.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-reduced_covers.obj -MD -MP -MF src/$(DEPDIR)/pq-reduced_covers.Tpo -c -o src/pq-reduced_covers.obj `if test -f 'src/reduced_covers.c'; then $(CYGPATH_W) 'src/reduced_covers.c'; else $(CYGPATH_W) '$(srcdir)/src/reduced_covers.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-reduced_covers.Tpo src/$(DEPDIR)/pq-reduced_covers.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/reduced_covers.c' object='src/pq-reduced_covers.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-reduced_covers.obj `if test -f 'src/reduced_covers.c'; then $(CYGPATH_W) 'src/reduced_covers.c'; else $(CYGPATH_W) '$(srcdir)/src/reduced_covers.c'; fi` src/pq-report_error.o: src/report_error.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-report_error.o -MD -MP -MF src/$(DEPDIR)/pq-report_error.Tpo -c -o src/pq-report_error.o `test -f 'src/report_error.c' || echo '$(srcdir)/'`src/report_error.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-report_error.Tpo src/$(DEPDIR)/pq-report_error.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/report_error.c' object='src/pq-report_error.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-report_error.o `test -f 'src/report_error.c' || echo '$(srcdir)/'`src/report_error.c src/pq-report_error.obj: src/report_error.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-report_error.obj -MD -MP -MF src/$(DEPDIR)/pq-report_error.Tpo -c -o src/pq-report_error.obj `if test -f 'src/report_error.c'; then $(CYGPATH_W) 'src/report_error.c'; else $(CYGPATH_W) '$(srcdir)/src/report_error.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-report_error.Tpo src/$(DEPDIR)/pq-report_error.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/report_error.c' object='src/pq-report_error.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-report_error.obj `if test -f 'src/report_error.c'; then $(CYGPATH_W) 'src/report_error.c'; else $(CYGPATH_W) '$(srcdir)/src/report_error.c'; fi` src/pq-restore_group.o: src/restore_group.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-restore_group.o -MD -MP -MF src/$(DEPDIR)/pq-restore_group.Tpo -c -o src/pq-restore_group.o `test -f 'src/restore_group.c' || echo '$(srcdir)/'`src/restore_group.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-restore_group.Tpo src/$(DEPDIR)/pq-restore_group.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/restore_group.c' object='src/pq-restore_group.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-restore_group.o `test -f 'src/restore_group.c' || echo '$(srcdir)/'`src/restore_group.c src/pq-restore_group.obj: src/restore_group.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-restore_group.obj -MD -MP -MF src/$(DEPDIR)/pq-restore_group.Tpo -c -o src/pq-restore_group.obj `if test -f 'src/restore_group.c'; then $(CYGPATH_W) 'src/restore_group.c'; else $(CYGPATH_W) '$(srcdir)/src/restore_group.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-restore_group.Tpo src/$(DEPDIR)/pq-restore_group.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/restore_group.c' object='src/pq-restore_group.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-restore_group.obj `if test -f 'src/restore_group.c'; then $(CYGPATH_W) 'src/restore_group.c'; else $(CYGPATH_W) '$(srcdir)/src/restore_group.c'; fi` src/pq-setup.o: src/setup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-setup.o -MD -MP -MF src/$(DEPDIR)/pq-setup.Tpo -c -o src/pq-setup.o `test -f 'src/setup.c' || echo '$(srcdir)/'`src/setup.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-setup.Tpo src/$(DEPDIR)/pq-setup.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/setup.c' object='src/pq-setup.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-setup.o `test -f 'src/setup.c' || echo '$(srcdir)/'`src/setup.c src/pq-setup.obj: src/setup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-setup.obj -MD -MP -MF src/$(DEPDIR)/pq-setup.Tpo -c -o src/pq-setup.obj `if test -f 'src/setup.c'; then $(CYGPATH_W) 'src/setup.c'; else $(CYGPATH_W) '$(srcdir)/src/setup.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-setup.Tpo src/$(DEPDIR)/pq-setup.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/setup.c' object='src/pq-setup.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-setup.obj `if test -f 'src/setup.c'; then $(CYGPATH_W) 'src/setup.c'; else $(CYGPATH_W) '$(srcdir)/src/setup.c'; fi` src/pq-setup_reps.o: src/setup_reps.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-setup_reps.o -MD -MP -MF src/$(DEPDIR)/pq-setup_reps.Tpo -c -o src/pq-setup_reps.o `test -f 'src/setup_reps.c' || echo '$(srcdir)/'`src/setup_reps.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-setup_reps.Tpo src/$(DEPDIR)/pq-setup_reps.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/setup_reps.c' object='src/pq-setup_reps.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-setup_reps.o `test -f 'src/setup_reps.c' || echo '$(srcdir)/'`src/setup_reps.c src/pq-setup_reps.obj: src/setup_reps.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-setup_reps.obj -MD -MP -MF src/$(DEPDIR)/pq-setup_reps.Tpo -c -o src/pq-setup_reps.obj `if test -f 'src/setup_reps.c'; then $(CYGPATH_W) 'src/setup_reps.c'; else $(CYGPATH_W) '$(srcdir)/src/setup_reps.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-setup_reps.Tpo src/$(DEPDIR)/pq-setup_reps.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/setup_reps.c' object='src/pq-setup_reps.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-setup_reps.obj `if test -f 'src/setup_reps.c'; then $(CYGPATH_W) 'src/setup_reps.c'; else $(CYGPATH_W) '$(srcdir)/src/setup_reps.c'; fi` src/pq-soluble_orbits.o: src/soluble_orbits.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-soluble_orbits.o -MD -MP -MF src/$(DEPDIR)/pq-soluble_orbits.Tpo -c -o src/pq-soluble_orbits.o `test -f 'src/soluble_orbits.c' || echo '$(srcdir)/'`src/soluble_orbits.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-soluble_orbits.Tpo src/$(DEPDIR)/pq-soluble_orbits.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/soluble_orbits.c' object='src/pq-soluble_orbits.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-soluble_orbits.o `test -f 'src/soluble_orbits.c' || echo '$(srcdir)/'`src/soluble_orbits.c src/pq-soluble_orbits.obj: src/soluble_orbits.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-soluble_orbits.obj -MD -MP -MF src/$(DEPDIR)/pq-soluble_orbits.Tpo -c -o src/pq-soluble_orbits.obj `if test -f 'src/soluble_orbits.c'; then $(CYGPATH_W) 'src/soluble_orbits.c'; else $(CYGPATH_W) '$(srcdir)/src/soluble_orbits.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-soluble_orbits.Tpo src/$(DEPDIR)/pq-soluble_orbits.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/soluble_orbits.c' object='src/pq-soluble_orbits.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-soluble_orbits.obj `if test -f 'src/soluble_orbits.c'; then $(CYGPATH_W) 'src/soluble_orbits.c'; else $(CYGPATH_W) '$(srcdir)/src/soluble_orbits.c'; fi` src/pq-solve_equation.o: src/solve_equation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-solve_equation.o -MD -MP -MF src/$(DEPDIR)/pq-solve_equation.Tpo -c -o src/pq-solve_equation.o `test -f 'src/solve_equation.c' || echo '$(srcdir)/'`src/solve_equation.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-solve_equation.Tpo src/$(DEPDIR)/pq-solve_equation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/solve_equation.c' object='src/pq-solve_equation.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-solve_equation.o `test -f 'src/solve_equation.c' || echo '$(srcdir)/'`src/solve_equation.c src/pq-solve_equation.obj: src/solve_equation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-solve_equation.obj -MD -MP -MF src/$(DEPDIR)/pq-solve_equation.Tpo -c -o src/pq-solve_equation.obj `if test -f 'src/solve_equation.c'; then $(CYGPATH_W) 'src/solve_equation.c'; else $(CYGPATH_W) '$(srcdir)/src/solve_equation.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-solve_equation.Tpo src/$(DEPDIR)/pq-solve_equation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/solve_equation.c' object='src/pq-solve_equation.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-solve_equation.obj `if test -f 'src/solve_equation.c'; then $(CYGPATH_W) 'src/solve_equation.c'; else $(CYGPATH_W) '$(srcdir)/src/solve_equation.c'; fi` src/pq-stabiliser.o: src/stabiliser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-stabiliser.o -MD -MP -MF src/$(DEPDIR)/pq-stabiliser.Tpo -c -o src/pq-stabiliser.o `test -f 'src/stabiliser.c' || echo '$(srcdir)/'`src/stabiliser.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-stabiliser.Tpo src/$(DEPDIR)/pq-stabiliser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/stabiliser.c' object='src/pq-stabiliser.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-stabiliser.o `test -f 'src/stabiliser.c' || echo '$(srcdir)/'`src/stabiliser.c src/pq-stabiliser.obj: src/stabiliser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-stabiliser.obj -MD -MP -MF src/$(DEPDIR)/pq-stabiliser.Tpo -c -o src/pq-stabiliser.obj `if test -f 'src/stabiliser.c'; then $(CYGPATH_W) 'src/stabiliser.c'; else $(CYGPATH_W) '$(srcdir)/src/stabiliser.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-stabiliser.Tpo src/$(DEPDIR)/pq-stabiliser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/stabiliser.c' object='src/pq-stabiliser.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-stabiliser.obj `if test -f 'src/stabiliser.c'; then $(CYGPATH_W) 'src/stabiliser.c'; else $(CYGPATH_W) '$(srcdir)/src/stabiliser.c'; fi` src/pq-stages.o: src/stages.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-stages.o -MD -MP -MF src/$(DEPDIR)/pq-stages.Tpo -c -o src/pq-stages.o `test -f 'src/stages.c' || echo '$(srcdir)/'`src/stages.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-stages.Tpo src/$(DEPDIR)/pq-stages.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/stages.c' object='src/pq-stages.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-stages.o `test -f 'src/stages.c' || echo '$(srcdir)/'`src/stages.c src/pq-stages.obj: src/stages.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-stages.obj -MD -MP -MF src/$(DEPDIR)/pq-stages.Tpo -c -o src/pq-stages.obj `if test -f 'src/stages.c'; then $(CYGPATH_W) 'src/stages.c'; else $(CYGPATH_W) '$(srcdir)/src/stages.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-stages.Tpo src/$(DEPDIR)/pq-stages.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/stages.c' object='src/pq-stages.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-stages.obj `if test -f 'src/stages.c'; then $(CYGPATH_W) 'src/stages.c'; else $(CYGPATH_W) '$(srcdir)/src/stages.c'; fi` src/pq-standard.o: src/standard.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-standard.o -MD -MP -MF src/$(DEPDIR)/pq-standard.Tpo -c -o src/pq-standard.o `test -f 'src/standard.c' || echo '$(srcdir)/'`src/standard.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-standard.Tpo src/$(DEPDIR)/pq-standard.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/standard.c' object='src/pq-standard.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-standard.o `test -f 'src/standard.c' || echo '$(srcdir)/'`src/standard.c src/pq-standard.obj: src/standard.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-standard.obj -MD -MP -MF src/$(DEPDIR)/pq-standard.Tpo -c -o src/pq-standard.obj `if test -f 'src/standard.c'; then $(CYGPATH_W) 'src/standard.c'; else $(CYGPATH_W) '$(srcdir)/src/standard.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-standard.Tpo src/$(DEPDIR)/pq-standard.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/standard.c' object='src/pq-standard.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-standard.obj `if test -f 'src/standard.c'; then $(CYGPATH_W) 'src/standard.c'; else $(CYGPATH_W) '$(srcdir)/src/standard.c'; fi` src/pq-start_group.o: src/start_group.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-start_group.o -MD -MP -MF src/$(DEPDIR)/pq-start_group.Tpo -c -o src/pq-start_group.o `test -f 'src/start_group.c' || echo '$(srcdir)/'`src/start_group.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-start_group.Tpo src/$(DEPDIR)/pq-start_group.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/start_group.c' object='src/pq-start_group.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-start_group.o `test -f 'src/start_group.c' || echo '$(srcdir)/'`src/start_group.c src/pq-start_group.obj: src/start_group.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-start_group.obj -MD -MP -MF src/$(DEPDIR)/pq-start_group.Tpo -c -o src/pq-start_group.obj `if test -f 'src/start_group.c'; then $(CYGPATH_W) 'src/start_group.c'; else $(CYGPATH_W) '$(srcdir)/src/start_group.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-start_group.Tpo src/$(DEPDIR)/pq-start_group.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/start_group.c' object='src/pq-start_group.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-start_group.obj `if test -f 'src/start_group.c'; then $(CYGPATH_W) 'src/start_group.c'; else $(CYGPATH_W) '$(srcdir)/src/start_group.c'; fi` src/pq-start_iteration.o: src/start_iteration.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-start_iteration.o -MD -MP -MF src/$(DEPDIR)/pq-start_iteration.Tpo -c -o src/pq-start_iteration.o `test -f 'src/start_iteration.c' || echo '$(srcdir)/'`src/start_iteration.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-start_iteration.Tpo src/$(DEPDIR)/pq-start_iteration.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/start_iteration.c' object='src/pq-start_iteration.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-start_iteration.o `test -f 'src/start_iteration.c' || echo '$(srcdir)/'`src/start_iteration.c src/pq-start_iteration.obj: src/start_iteration.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-start_iteration.obj -MD -MP -MF src/$(DEPDIR)/pq-start_iteration.Tpo -c -o src/pq-start_iteration.obj `if test -f 'src/start_iteration.c'; then $(CYGPATH_W) 'src/start_iteration.c'; else $(CYGPATH_W) '$(srcdir)/src/start_iteration.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-start_iteration.Tpo src/$(DEPDIR)/pq-start_iteration.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/start_iteration.c' object='src/pq-start_iteration.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-start_iteration.obj `if test -f 'src/start_iteration.c'; then $(CYGPATH_W) 'src/start_iteration.c'; else $(CYGPATH_W) '$(srcdir)/src/start_iteration.c'; fi` src/pq-step_range.o: src/step_range.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-step_range.o -MD -MP -MF src/$(DEPDIR)/pq-step_range.Tpo -c -o src/pq-step_range.o `test -f 'src/step_range.c' || echo '$(srcdir)/'`src/step_range.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-step_range.Tpo src/$(DEPDIR)/pq-step_range.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/step_range.c' object='src/pq-step_range.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-step_range.o `test -f 'src/step_range.c' || echo '$(srcdir)/'`src/step_range.c src/pq-step_range.obj: src/step_range.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-step_range.obj -MD -MP -MF src/$(DEPDIR)/pq-step_range.Tpo -c -o src/pq-step_range.obj `if test -f 'src/step_range.c'; then $(CYGPATH_W) 'src/step_range.c'; else $(CYGPATH_W) '$(srcdir)/src/step_range.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-step_range.Tpo src/$(DEPDIR)/pq-step_range.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/step_range.c' object='src/pq-step_range.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-step_range.obj `if test -f 'src/step_range.c'; then $(CYGPATH_W) 'src/step_range.c'; else $(CYGPATH_W) '$(srcdir)/src/step_range.c'; fi` src/pq-store_definition_sets.o: src/store_definition_sets.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-store_definition_sets.o -MD -MP -MF src/$(DEPDIR)/pq-store_definition_sets.Tpo -c -o src/pq-store_definition_sets.o `test -f 'src/store_definition_sets.c' || echo '$(srcdir)/'`src/store_definition_sets.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-store_definition_sets.Tpo src/$(DEPDIR)/pq-store_definition_sets.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/store_definition_sets.c' object='src/pq-store_definition_sets.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-store_definition_sets.o `test -f 'src/store_definition_sets.c' || echo '$(srcdir)/'`src/store_definition_sets.c src/pq-store_definition_sets.obj: src/store_definition_sets.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-store_definition_sets.obj -MD -MP -MF src/$(DEPDIR)/pq-store_definition_sets.Tpo -c -o src/pq-store_definition_sets.obj `if test -f 'src/store_definition_sets.c'; then $(CYGPATH_W) 'src/store_definition_sets.c'; else $(CYGPATH_W) '$(srcdir)/src/store_definition_sets.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-store_definition_sets.Tpo src/$(DEPDIR)/pq-store_definition_sets.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/store_definition_sets.c' object='src/pq-store_definition_sets.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-store_definition_sets.obj `if test -f 'src/store_definition_sets.c'; then $(CYGPATH_W) 'src/store_definition_sets.c'; else $(CYGPATH_W) '$(srcdir)/src/store_definition_sets.c'; fi` src/pq-strip_identities.o: src/strip_identities.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-strip_identities.o -MD -MP -MF src/$(DEPDIR)/pq-strip_identities.Tpo -c -o src/pq-strip_identities.o `test -f 'src/strip_identities.c' || echo '$(srcdir)/'`src/strip_identities.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-strip_identities.Tpo src/$(DEPDIR)/pq-strip_identities.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/strip_identities.c' object='src/pq-strip_identities.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-strip_identities.o `test -f 'src/strip_identities.c' || echo '$(srcdir)/'`src/strip_identities.c src/pq-strip_identities.obj: src/strip_identities.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-strip_identities.obj -MD -MP -MF src/$(DEPDIR)/pq-strip_identities.Tpo -c -o src/pq-strip_identities.obj `if test -f 'src/strip_identities.c'; then $(CYGPATH_W) 'src/strip_identities.c'; else $(CYGPATH_W) '$(srcdir)/src/strip_identities.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-strip_identities.Tpo src/$(DEPDIR)/pq-strip_identities.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/strip_identities.c' object='src/pq-strip_identities.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-strip_identities.obj `if test -f 'src/strip_identities.c'; then $(CYGPATH_W) 'src/strip_identities.c'; else $(CYGPATH_W) '$(srcdir)/src/strip_identities.c'; fi` src/pq-subgroup_to_label.o: src/subgroup_to_label.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-subgroup_to_label.o -MD -MP -MF src/$(DEPDIR)/pq-subgroup_to_label.Tpo -c -o src/pq-subgroup_to_label.o `test -f 'src/subgroup_to_label.c' || echo '$(srcdir)/'`src/subgroup_to_label.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-subgroup_to_label.Tpo src/$(DEPDIR)/pq-subgroup_to_label.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/subgroup_to_label.c' object='src/pq-subgroup_to_label.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-subgroup_to_label.o `test -f 'src/subgroup_to_label.c' || echo '$(srcdir)/'`src/subgroup_to_label.c src/pq-subgroup_to_label.obj: src/subgroup_to_label.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-subgroup_to_label.obj -MD -MP -MF src/$(DEPDIR)/pq-subgroup_to_label.Tpo -c -o src/pq-subgroup_to_label.obj `if test -f 'src/subgroup_to_label.c'; then $(CYGPATH_W) 'src/subgroup_to_label.c'; else $(CYGPATH_W) '$(srcdir)/src/subgroup_to_label.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-subgroup_to_label.Tpo src/$(DEPDIR)/pq-subgroup_to_label.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/subgroup_to_label.c' object='src/pq-subgroup_to_label.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-subgroup_to_label.obj `if test -f 'src/subgroup_to_label.c'; then $(CYGPATH_W) 'src/subgroup_to_label.c'; else $(CYGPATH_W) '$(srcdir)/src/subgroup_to_label.c'; fi` src/pq-system.o: src/system.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-system.o -MD -MP -MF src/$(DEPDIR)/pq-system.Tpo -c -o src/pq-system.o `test -f 'src/system.c' || echo '$(srcdir)/'`src/system.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-system.Tpo src/$(DEPDIR)/pq-system.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/system.c' object='src/pq-system.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-system.o `test -f 'src/system.c' || echo '$(srcdir)/'`src/system.c src/pq-system.obj: src/system.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-system.obj -MD -MP -MF src/$(DEPDIR)/pq-system.Tpo -c -o src/pq-system.obj `if test -f 'src/system.c'; then $(CYGPATH_W) 'src/system.c'; else $(CYGPATH_W) '$(srcdir)/src/system.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-system.Tpo src/$(DEPDIR)/pq-system.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/system.c' object='src/pq-system.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-system.obj `if test -f 'src/system.c'; then $(CYGPATH_W) 'src/system.c'; else $(CYGPATH_W) '$(srcdir)/src/system.c'; fi` src/pq-tail_info.o: src/tail_info.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-tail_info.o -MD -MP -MF src/$(DEPDIR)/pq-tail_info.Tpo -c -o src/pq-tail_info.o `test -f 'src/tail_info.c' || echo '$(srcdir)/'`src/tail_info.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-tail_info.Tpo src/$(DEPDIR)/pq-tail_info.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/tail_info.c' object='src/pq-tail_info.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-tail_info.o `test -f 'src/tail_info.c' || echo '$(srcdir)/'`src/tail_info.c src/pq-tail_info.obj: src/tail_info.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-tail_info.obj -MD -MP -MF src/$(DEPDIR)/pq-tail_info.Tpo -c -o src/pq-tail_info.obj `if test -f 'src/tail_info.c'; then $(CYGPATH_W) 'src/tail_info.c'; else $(CYGPATH_W) '$(srcdir)/src/tail_info.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-tail_info.Tpo src/$(DEPDIR)/pq-tail_info.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/tail_info.c' object='src/pq-tail_info.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-tail_info.obj `if test -f 'src/tail_info.c'; then $(CYGPATH_W) 'src/tail_info.c'; else $(CYGPATH_W) '$(srcdir)/src/tail_info.c'; fi` src/pq-tails.o: src/tails.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-tails.o -MD -MP -MF src/$(DEPDIR)/pq-tails.Tpo -c -o src/pq-tails.o `test -f 'src/tails.c' || echo '$(srcdir)/'`src/tails.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-tails.Tpo src/$(DEPDIR)/pq-tails.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/tails.c' object='src/pq-tails.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-tails.o `test -f 'src/tails.c' || echo '$(srcdir)/'`src/tails.c src/pq-tails.obj: src/tails.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-tails.obj -MD -MP -MF src/$(DEPDIR)/pq-tails.Tpo -c -o src/pq-tails.obj `if test -f 'src/tails.c'; then $(CYGPATH_W) 'src/tails.c'; else $(CYGPATH_W) '$(srcdir)/src/tails.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-tails.Tpo src/$(DEPDIR)/pq-tails.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/tails.c' object='src/pq-tails.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-tails.obj `if test -f 'src/tails.c'; then $(CYGPATH_W) 'src/tails.c'; else $(CYGPATH_W) '$(srcdir)/src/tails.c'; fi` src/pq-tails_filter.o: src/tails_filter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-tails_filter.o -MD -MP -MF src/$(DEPDIR)/pq-tails_filter.Tpo -c -o src/pq-tails_filter.o `test -f 'src/tails_filter.c' || echo '$(srcdir)/'`src/tails_filter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-tails_filter.Tpo src/$(DEPDIR)/pq-tails_filter.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/tails_filter.c' object='src/pq-tails_filter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-tails_filter.o `test -f 'src/tails_filter.c' || echo '$(srcdir)/'`src/tails_filter.c src/pq-tails_filter.obj: src/tails_filter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-tails_filter.obj -MD -MP -MF src/$(DEPDIR)/pq-tails_filter.Tpo -c -o src/pq-tails_filter.obj `if test -f 'src/tails_filter.c'; then $(CYGPATH_W) 'src/tails_filter.c'; else $(CYGPATH_W) '$(srcdir)/src/tails_filter.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-tails_filter.Tpo src/$(DEPDIR)/pq-tails_filter.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/tails_filter.c' object='src/pq-tails_filter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-tails_filter.obj `if test -f 'src/tails_filter.c'; then $(CYGPATH_W) 'src/tails_filter.c'; else $(CYGPATH_W) '$(srcdir)/src/tails_filter.c'; fi` src/pq-text.o: src/text.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-text.o -MD -MP -MF src/$(DEPDIR)/pq-text.Tpo -c -o src/pq-text.o `test -f 'src/text.c' || echo '$(srcdir)/'`src/text.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-text.Tpo src/$(DEPDIR)/pq-text.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/text.c' object='src/pq-text.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-text.o `test -f 'src/text.c' || echo '$(srcdir)/'`src/text.c src/pq-text.obj: src/text.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-text.obj -MD -MP -MF src/$(DEPDIR)/pq-text.Tpo -c -o src/pq-text.obj `if test -f 'src/text.c'; then $(CYGPATH_W) 'src/text.c'; else $(CYGPATH_W) '$(srcdir)/src/text.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-text.Tpo src/$(DEPDIR)/pq-text.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/text.c' object='src/pq-text.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-text.obj `if test -f 'src/text.c'; then $(CYGPATH_W) 'src/text.c'; else $(CYGPATH_W) '$(srcdir)/src/text.c'; fi` src/pq-update.o: src/update.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-update.o -MD -MP -MF src/$(DEPDIR)/pq-update.Tpo -c -o src/pq-update.o `test -f 'src/update.c' || echo '$(srcdir)/'`src/update.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-update.Tpo src/$(DEPDIR)/pq-update.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/update.c' object='src/pq-update.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-update.o `test -f 'src/update.c' || echo '$(srcdir)/'`src/update.c src/pq-update.obj: src/update.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-update.obj -MD -MP -MF src/$(DEPDIR)/pq-update.Tpo -c -o src/pq-update.obj `if test -f 'src/update.c'; then $(CYGPATH_W) 'src/update.c'; else $(CYGPATH_W) '$(srcdir)/src/update.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-update.Tpo src/$(DEPDIR)/pq-update.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/update.c' object='src/pq-update.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-update.obj `if test -f 'src/update.c'; then $(CYGPATH_W) 'src/update.c'; else $(CYGPATH_W) '$(srcdir)/src/update.c'; fi` src/pq-update_generators.o: src/update_generators.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-update_generators.o -MD -MP -MF src/$(DEPDIR)/pq-update_generators.Tpo -c -o src/pq-update_generators.o `test -f 'src/update_generators.c' || echo '$(srcdir)/'`src/update_generators.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-update_generators.Tpo src/$(DEPDIR)/pq-update_generators.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/update_generators.c' object='src/pq-update_generators.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-update_generators.o `test -f 'src/update_generators.c' || echo '$(srcdir)/'`src/update_generators.c src/pq-update_generators.obj: src/update_generators.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-update_generators.obj -MD -MP -MF src/$(DEPDIR)/pq-update_generators.Tpo -c -o src/pq-update_generators.obj `if test -f 'src/update_generators.c'; then $(CYGPATH_W) 'src/update_generators.c'; else $(CYGPATH_W) '$(srcdir)/src/update_generators.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-update_generators.Tpo src/$(DEPDIR)/pq-update_generators.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/update_generators.c' object='src/pq-update_generators.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-update_generators.obj `if test -f 'src/update_generators.c'; then $(CYGPATH_W) 'src/update_generators.c'; else $(CYGPATH_W) '$(srcdir)/src/update_generators.c'; fi` src/pq-update_name.o: src/update_name.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-update_name.o -MD -MP -MF src/$(DEPDIR)/pq-update_name.Tpo -c -o src/pq-update_name.o `test -f 'src/update_name.c' || echo '$(srcdir)/'`src/update_name.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-update_name.Tpo src/$(DEPDIR)/pq-update_name.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/update_name.c' object='src/pq-update_name.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-update_name.o `test -f 'src/update_name.c' || echo '$(srcdir)/'`src/update_name.c src/pq-update_name.obj: src/update_name.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-update_name.obj -MD -MP -MF src/$(DEPDIR)/pq-update_name.Tpo -c -o src/pq-update_name.obj `if test -f 'src/update_name.c'; then $(CYGPATH_W) 'src/update_name.c'; else $(CYGPATH_W) '$(srcdir)/src/update_name.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-update_name.Tpo src/$(DEPDIR)/pq-update_name.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/update_name.c' object='src/pq-update_name.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-update_name.obj `if test -f 'src/update_name.c'; then $(CYGPATH_W) 'src/update_name.c'; else $(CYGPATH_W) '$(srcdir)/src/update_name.c'; fi` src/pq-write.o: src/write.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-write.o -MD -MP -MF src/$(DEPDIR)/pq-write.Tpo -c -o src/pq-write.o `test -f 'src/write.c' || echo '$(srcdir)/'`src/write.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-write.Tpo src/$(DEPDIR)/pq-write.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/write.c' object='src/pq-write.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-write.o `test -f 'src/write.c' || echo '$(srcdir)/'`src/write.c src/pq-write.obj: src/write.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-write.obj -MD -MP -MF src/$(DEPDIR)/pq-write.Tpo -c -o src/pq-write.obj `if test -f 'src/write.c'; then $(CYGPATH_W) 'src/write.c'; else $(CYGPATH_W) '$(srcdir)/src/write.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-write.Tpo src/$(DEPDIR)/pq-write.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/write.c' object='src/pq-write.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-write.obj `if test -f 'src/write.c'; then $(CYGPATH_W) 'src/write.c'; else $(CYGPATH_W) '$(srcdir)/src/write.c'; fi` src/pq-main.o: src/main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-main.o -MD -MP -MF src/$(DEPDIR)/pq-main.Tpo -c -o src/pq-main.o `test -f 'src/main.c' || echo '$(srcdir)/'`src/main.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-main.Tpo src/$(DEPDIR)/pq-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/main.c' object='src/pq-main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-main.o `test -f 'src/main.c' || echo '$(srcdir)/'`src/main.c src/pq-main.obj: src/main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -MT src/pq-main.obj -MD -MP -MF src/$(DEPDIR)/pq-main.Tpo -c -o src/pq-main.obj `if test -f 'src/main.c'; then $(CYGPATH_W) 'src/main.c'; else $(CYGPATH_W) '$(srcdir)/src/main.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/pq-main.Tpo src/$(DEPDIR)/pq-main.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/main.c' object='src/pq-main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pq_CPPFLAGS) $(CPPFLAGS) $(pq_CFLAGS) $(CFLAGS) -c -o src/pq-main.obj `if test -f 'src/main.c'; then $(CYGPATH_W) 'src/main.c'; else $(CYGPATH_W) '$(srcdir)/src/main.c'; fi` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) all-local installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f src/$(DEPDIR)/$(am__dirstamp) -rm -f src/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-local mostlyclean-am distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f src/$(DEPDIR)/pq-AllocateSpace.Po -rm -f src/$(DEPDIR)/pq-CloseFile.Po -rm -f src/$(DEPDIR)/pq-Extend_Auts.Po -rm -f src/$(DEPDIR)/pq-FreeSpace.Po -rm -f src/$(DEPDIR)/pq-GAP.Po -rm -f src/$(DEPDIR)/pq-GAP_link_via_file.Po -rm -f src/$(DEPDIR)/pq-GAP_present.Po -rm -f src/$(DEPDIR)/pq-OpenFile.Po -rm -f src/$(DEPDIR)/pq-TemporaryFile.Po -rm -f src/$(DEPDIR)/pq-action.Po -rm -f src/$(DEPDIR)/pq-assemble_matrix.Po -rm -f src/$(DEPDIR)/pq-autgp_order.Po -rm -f src/$(DEPDIR)/pq-calculate_jacobi.Po -rm -f src/$(DEPDIR)/pq-central_auts.Po -rm -f src/$(DEPDIR)/pq-check_exponent.Po -rm -f src/$(DEPDIR)/pq-class1_eliminate.Po -rm -f src/$(DEPDIR)/pq-close_relations.Po -rm -f src/$(DEPDIR)/pq-close_subgroup.Po -rm -f src/$(DEPDIR)/pq-collect.Po -rm -f src/$(DEPDIR)/pq-collect_comm.Po -rm -f src/$(DEPDIR)/pq-collect_gen_word.Po -rm -f src/$(DEPDIR)/pq-collect_relations.Po -rm -f src/$(DEPDIR)/pq-collect_word.Po -rm -f src/$(DEPDIR)/pq-collectp2.Po -rm -f src/$(DEPDIR)/pq-commutator.Po -rm -f src/$(DEPDIR)/pq-commute_dgen.Po -rm -f src/$(DEPDIR)/pq-compact.Po -rm -f src/$(DEPDIR)/pq-compact_description.Po -rm -f src/$(DEPDIR)/pq-consistency.Po -rm -f src/$(DEPDIR)/pq-consistency_filter.Po -rm -f src/$(DEPDIR)/pq-consistency_info.Po -rm -f src/$(DEPDIR)/pq-construct.Po -rm -f src/$(DEPDIR)/pq-convert.Po -rm -f src/$(DEPDIR)/pq-defaults_pga.Po -rm -f src/$(DEPDIR)/pq-degree.Po -rm -f src/$(DEPDIR)/pq-delete_tables.Po -rm -f src/$(DEPDIR)/pq-down_class.Po -rm -f src/$(DEPDIR)/pq-echelon.Po -rm -f src/$(DEPDIR)/pq-echelonise_matrix.Po -rm -f src/$(DEPDIR)/pq-eliminate.Po -rm -f src/$(DEPDIR)/pq-expand_commutator.Po -rm -f src/$(DEPDIR)/pq-exponent_auts.Po -rm -f src/$(DEPDIR)/pq-exponent_info.Po -rm -f src/$(DEPDIR)/pq-extend_automorphisms.Po -rm -f src/$(DEPDIR)/pq-extend_matrix.Po -rm -f src/$(DEPDIR)/pq-extend_representation.Po -rm -f src/$(DEPDIR)/pq-extra_relations.Po -rm -f src/$(DEPDIR)/pq-find_allowable_subgroup.Po -rm -f src/$(DEPDIR)/pq-find_image.Po -rm -f src/$(DEPDIR)/pq-find_permutation.Po -rm -f src/$(DEPDIR)/pq-formula.Po -rm -f src/$(DEPDIR)/pq-generator_definition.Po -rm -f src/$(DEPDIR)/pq-get_definition_sets.Po -rm -f src/$(DEPDIR)/pq-identity.Po -rm -f src/$(DEPDIR)/pq-immediate_descendant.Po -rm -f src/$(DEPDIR)/pq-initialise_pcp.Po -rm -f src/$(DEPDIR)/pq-initialise_pga.Po -rm -f src/$(DEPDIR)/pq-insoluble_orbits.Po -rm -f src/$(DEPDIR)/pq-int_power.Po -rm -f src/$(DEPDIR)/pq-interactive_pga.Po -rm -f src/$(DEPDIR)/pq-interactive_pq.Po -rm -f src/$(DEPDIR)/pq-invert.Po -rm -f src/$(DEPDIR)/pq-invert_auts.Po -rm -f src/$(DEPDIR)/pq-invert_modp.Po -rm -f src/$(DEPDIR)/pq-is_genlim_exceeded.Po -rm -f src/$(DEPDIR)/pq-is_space_exhausted.Po -rm -f src/$(DEPDIR)/pq-isom_options.Po -rm -f src/$(DEPDIR)/pq-iteration.Po -rm -f src/$(DEPDIR)/pq-jacobi.Po -rm -f src/$(DEPDIR)/pq-label_to_subgroup.Po -rm -f src/$(DEPDIR)/pq-last_class.Po -rm -f src/$(DEPDIR)/pq-list_commutators.Po -rm -f src/$(DEPDIR)/pq-main.Po -rm -f src/$(DEPDIR)/pq-map_relations.Po -rm -f src/$(DEPDIR)/pq-matrix.Po -rm -f src/$(DEPDIR)/pq-maxoccur.Po -rm -f src/$(DEPDIR)/pq-multiply_word.Po -rm -f src/$(DEPDIR)/pq-next_class.Po -rm -f src/$(DEPDIR)/pq-options.Po -rm -f src/$(DEPDIR)/pq-orbit_summary.Po -rm -f src/$(DEPDIR)/pq-permute_elements.Po -rm -f src/$(DEPDIR)/pq-permute_subgroups.Po -rm -f src/$(DEPDIR)/pq-pgroup.Po -rm -f src/$(DEPDIR)/pq-power.Po -rm -f src/$(DEPDIR)/pq-pquotient.Po -rm -f src/$(DEPDIR)/pq-pretty_filter.Po -rm -f src/$(DEPDIR)/pq-pretty_filterfns.Po -rm -f src/$(DEPDIR)/pq-print_arrays.Po -rm -f src/$(DEPDIR)/pq-print_auts.Po -rm -f src/$(DEPDIR)/pq-print_level.Po -rm -f src/$(DEPDIR)/pq-print_multiweight.Po -rm -f src/$(DEPDIR)/pq-print_presentation.Po -rm -f src/$(DEPDIR)/pq-print_structure.Po -rm -f src/$(DEPDIR)/pq-print_word.Po -rm -f src/$(DEPDIR)/pq-read.Po -rm -f src/$(DEPDIR)/pq-read_auts.Po -rm -f src/$(DEPDIR)/pq-read_parameters.Po -rm -f src/$(DEPDIR)/pq-read_relations.Po -rm -f src/$(DEPDIR)/pq-read_relator_file.Po -rm -f src/$(DEPDIR)/pq-read_value.Po -rm -f src/$(DEPDIR)/pq-read_word.Po -rm -f src/$(DEPDIR)/pq-reduce_matrix.Po -rm -f src/$(DEPDIR)/pq-reduced_covers.Po -rm -f src/$(DEPDIR)/pq-report_error.Po -rm -f src/$(DEPDIR)/pq-restore_group.Po -rm -f src/$(DEPDIR)/pq-setup.Po -rm -f src/$(DEPDIR)/pq-setup_reps.Po -rm -f src/$(DEPDIR)/pq-soluble_orbits.Po -rm -f src/$(DEPDIR)/pq-solve_equation.Po -rm -f src/$(DEPDIR)/pq-stabiliser.Po -rm -f src/$(DEPDIR)/pq-stages.Po -rm -f src/$(DEPDIR)/pq-standard.Po -rm -f src/$(DEPDIR)/pq-start_group.Po -rm -f src/$(DEPDIR)/pq-start_iteration.Po -rm -f src/$(DEPDIR)/pq-step_range.Po -rm -f src/$(DEPDIR)/pq-store_definition_sets.Po -rm -f src/$(DEPDIR)/pq-strip_identities.Po -rm -f src/$(DEPDIR)/pq-subgroup_to_label.Po -rm -f src/$(DEPDIR)/pq-system.Po -rm -f src/$(DEPDIR)/pq-tail_info.Po -rm -f src/$(DEPDIR)/pq-tails.Po -rm -f src/$(DEPDIR)/pq-tails_filter.Po -rm -f src/$(DEPDIR)/pq-text.Po -rm -f src/$(DEPDIR)/pq-update.Po -rm -f src/$(DEPDIR)/pq-update_generators.Po -rm -f src/$(DEPDIR)/pq-update_name.Po -rm -f src/$(DEPDIR)/pq-write.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f src/$(DEPDIR)/pq-AllocateSpace.Po -rm -f src/$(DEPDIR)/pq-CloseFile.Po -rm -f src/$(DEPDIR)/pq-Extend_Auts.Po -rm -f src/$(DEPDIR)/pq-FreeSpace.Po -rm -f src/$(DEPDIR)/pq-GAP.Po -rm -f src/$(DEPDIR)/pq-GAP_link_via_file.Po -rm -f src/$(DEPDIR)/pq-GAP_present.Po -rm -f src/$(DEPDIR)/pq-OpenFile.Po -rm -f src/$(DEPDIR)/pq-TemporaryFile.Po -rm -f src/$(DEPDIR)/pq-action.Po -rm -f src/$(DEPDIR)/pq-assemble_matrix.Po -rm -f src/$(DEPDIR)/pq-autgp_order.Po -rm -f src/$(DEPDIR)/pq-calculate_jacobi.Po -rm -f src/$(DEPDIR)/pq-central_auts.Po -rm -f src/$(DEPDIR)/pq-check_exponent.Po -rm -f src/$(DEPDIR)/pq-class1_eliminate.Po -rm -f src/$(DEPDIR)/pq-close_relations.Po -rm -f src/$(DEPDIR)/pq-close_subgroup.Po -rm -f src/$(DEPDIR)/pq-collect.Po -rm -f src/$(DEPDIR)/pq-collect_comm.Po -rm -f src/$(DEPDIR)/pq-collect_gen_word.Po -rm -f src/$(DEPDIR)/pq-collect_relations.Po -rm -f src/$(DEPDIR)/pq-collect_word.Po -rm -f src/$(DEPDIR)/pq-collectp2.Po -rm -f src/$(DEPDIR)/pq-commutator.Po -rm -f src/$(DEPDIR)/pq-commute_dgen.Po -rm -f src/$(DEPDIR)/pq-compact.Po -rm -f src/$(DEPDIR)/pq-compact_description.Po -rm -f src/$(DEPDIR)/pq-consistency.Po -rm -f src/$(DEPDIR)/pq-consistency_filter.Po -rm -f src/$(DEPDIR)/pq-consistency_info.Po -rm -f src/$(DEPDIR)/pq-construct.Po -rm -f src/$(DEPDIR)/pq-convert.Po -rm -f src/$(DEPDIR)/pq-defaults_pga.Po -rm -f src/$(DEPDIR)/pq-degree.Po -rm -f src/$(DEPDIR)/pq-delete_tables.Po -rm -f src/$(DEPDIR)/pq-down_class.Po -rm -f src/$(DEPDIR)/pq-echelon.Po -rm -f src/$(DEPDIR)/pq-echelonise_matrix.Po -rm -f src/$(DEPDIR)/pq-eliminate.Po -rm -f src/$(DEPDIR)/pq-expand_commutator.Po -rm -f src/$(DEPDIR)/pq-exponent_auts.Po -rm -f src/$(DEPDIR)/pq-exponent_info.Po -rm -f src/$(DEPDIR)/pq-extend_automorphisms.Po -rm -f src/$(DEPDIR)/pq-extend_matrix.Po -rm -f src/$(DEPDIR)/pq-extend_representation.Po -rm -f src/$(DEPDIR)/pq-extra_relations.Po -rm -f src/$(DEPDIR)/pq-find_allowable_subgroup.Po -rm -f src/$(DEPDIR)/pq-find_image.Po -rm -f src/$(DEPDIR)/pq-find_permutation.Po -rm -f src/$(DEPDIR)/pq-formula.Po -rm -f src/$(DEPDIR)/pq-generator_definition.Po -rm -f src/$(DEPDIR)/pq-get_definition_sets.Po -rm -f src/$(DEPDIR)/pq-identity.Po -rm -f src/$(DEPDIR)/pq-immediate_descendant.Po -rm -f src/$(DEPDIR)/pq-initialise_pcp.Po -rm -f src/$(DEPDIR)/pq-initialise_pga.Po -rm -f src/$(DEPDIR)/pq-insoluble_orbits.Po -rm -f src/$(DEPDIR)/pq-int_power.Po -rm -f src/$(DEPDIR)/pq-interactive_pga.Po -rm -f src/$(DEPDIR)/pq-interactive_pq.Po -rm -f src/$(DEPDIR)/pq-invert.Po -rm -f src/$(DEPDIR)/pq-invert_auts.Po -rm -f src/$(DEPDIR)/pq-invert_modp.Po -rm -f src/$(DEPDIR)/pq-is_genlim_exceeded.Po -rm -f src/$(DEPDIR)/pq-is_space_exhausted.Po -rm -f src/$(DEPDIR)/pq-isom_options.Po -rm -f src/$(DEPDIR)/pq-iteration.Po -rm -f src/$(DEPDIR)/pq-jacobi.Po -rm -f src/$(DEPDIR)/pq-label_to_subgroup.Po -rm -f src/$(DEPDIR)/pq-last_class.Po -rm -f src/$(DEPDIR)/pq-list_commutators.Po -rm -f src/$(DEPDIR)/pq-main.Po -rm -f src/$(DEPDIR)/pq-map_relations.Po -rm -f src/$(DEPDIR)/pq-matrix.Po -rm -f src/$(DEPDIR)/pq-maxoccur.Po -rm -f src/$(DEPDIR)/pq-multiply_word.Po -rm -f src/$(DEPDIR)/pq-next_class.Po -rm -f src/$(DEPDIR)/pq-options.Po -rm -f src/$(DEPDIR)/pq-orbit_summary.Po -rm -f src/$(DEPDIR)/pq-permute_elements.Po -rm -f src/$(DEPDIR)/pq-permute_subgroups.Po -rm -f src/$(DEPDIR)/pq-pgroup.Po -rm -f src/$(DEPDIR)/pq-power.Po -rm -f src/$(DEPDIR)/pq-pquotient.Po -rm -f src/$(DEPDIR)/pq-pretty_filter.Po -rm -f src/$(DEPDIR)/pq-pretty_filterfns.Po -rm -f src/$(DEPDIR)/pq-print_arrays.Po -rm -f src/$(DEPDIR)/pq-print_auts.Po -rm -f src/$(DEPDIR)/pq-print_level.Po -rm -f src/$(DEPDIR)/pq-print_multiweight.Po -rm -f src/$(DEPDIR)/pq-print_presentation.Po -rm -f src/$(DEPDIR)/pq-print_structure.Po -rm -f src/$(DEPDIR)/pq-print_word.Po -rm -f src/$(DEPDIR)/pq-read.Po -rm -f src/$(DEPDIR)/pq-read_auts.Po -rm -f src/$(DEPDIR)/pq-read_parameters.Po -rm -f src/$(DEPDIR)/pq-read_relations.Po -rm -f src/$(DEPDIR)/pq-read_relator_file.Po -rm -f src/$(DEPDIR)/pq-read_value.Po -rm -f src/$(DEPDIR)/pq-read_word.Po -rm -f src/$(DEPDIR)/pq-reduce_matrix.Po -rm -f src/$(DEPDIR)/pq-reduced_covers.Po -rm -f src/$(DEPDIR)/pq-report_error.Po -rm -f src/$(DEPDIR)/pq-restore_group.Po -rm -f src/$(DEPDIR)/pq-setup.Po -rm -f src/$(DEPDIR)/pq-setup_reps.Po -rm -f src/$(DEPDIR)/pq-soluble_orbits.Po -rm -f src/$(DEPDIR)/pq-solve_equation.Po -rm -f src/$(DEPDIR)/pq-stabiliser.Po -rm -f src/$(DEPDIR)/pq-stages.Po -rm -f src/$(DEPDIR)/pq-standard.Po -rm -f src/$(DEPDIR)/pq-start_group.Po -rm -f src/$(DEPDIR)/pq-start_iteration.Po -rm -f src/$(DEPDIR)/pq-step_range.Po -rm -f src/$(DEPDIR)/pq-store_definition_sets.Po -rm -f src/$(DEPDIR)/pq-strip_identities.Po -rm -f src/$(DEPDIR)/pq-subgroup_to_label.Po -rm -f src/$(DEPDIR)/pq-system.Po -rm -f src/$(DEPDIR)/pq-tail_info.Po -rm -f src/$(DEPDIR)/pq-tails.Po -rm -f src/$(DEPDIR)/pq-tails_filter.Po -rm -f src/$(DEPDIR)/pq-text.Po -rm -f src/$(DEPDIR)/pq-update.Po -rm -f src/$(DEPDIR)/pq-update_generators.Po -rm -f src/$(DEPDIR)/pq-update_name.Po -rm -f src/$(DEPDIR)/pq-write.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am all-local am--depfiles am--refresh \ check check-am clean clean-binPROGRAMS clean-cscope \ clean-generic clean-local cscope cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-hdr \ distclean-local distclean-tags dvi dvi-am html html-am info \ info-am install install-am install-binPROGRAMS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile all-local: pq$(EXEEXT) $(mkdir_p) $(top_srcdir)/$(BINARCHDIR) rm -f $(abs_top_srcdir)/$(BINARCHDIR)/pq$(EXEEXT) cp pq$(EXEEXT) $(abs_top_srcdir)/$(BINARCHDIR) @echo "SUCCESS!" clean-local: rm -rf $(BINARCHDIR) (cd doc && rm -f *.aux *.bbl *.blg *.brf *.idx *.ilg *.ind *.log *.out *.pnr *.toc) (cd standalone-doc && rm -rf *.aux *.log *.toc) distclean-local: (cd examples; make distclean) rm -rf standalone/bin doc: $(GAP_EXEC) -A --quitonbreak -b -q < makedoc.g .PHONY: doc #test: # (cd examples; make) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: anupq-3.3.0/aclocal.m4000644 000766 000024 00000125740 14355420746 015013 0ustar00mhornstaff000000 000000 # generated automatically by aclocal 1.16.5 -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, [m4_warning([this file was generated for autoconf 2.71. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.16.5], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.16.5])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE="gmake" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking is enabled. # This creates each '.Po' and '.Plo' makefile fragment that we'll need in # order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl m4_ifdef([_$0_ALREADY_INIT], [m4_fatal([$0 expanded multiple times ]m4_defn([_$0_ALREADY_INIT]))], [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi AC_SUBST([CTAGS]) if test -z "$ETAGS"; then ETAGS=etags fi AC_SUBST([ETAGS]) if test -z "$CSCOPE"; then CSCOPE=cscope fi AC_SUBST([CSCOPE]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/find_gap.m4]) anupq-3.3.0/read.g000644 000766 000024 00000001601 14355420571 014217 0ustar00mhornstaff000000 000000 ############################################################################# ## #W read.g ANUPQ package Werner Nickel #W Greg Gamble ## ############################################################################# ## #R Read the install files. ## ReadPackage( "anupq", "lib/anupqhead.gi" ); ReadPackage( "anupq", "lib/anupqprop.gi" ); ReadPackage( "anupq", "lib/anupq.gi" ); ReadPackage( "anupq", "lib/anupga.gi" ); ReadPackage( "anupq", "lib/anusp.gi" ); ReadPackage( "anupq", "lib/anupqopt.gi" ); ReadPackage( "anupq", "lib/anupqios.gi" ); ReadPackage( "anupq", "lib/anupqi.gi" ); ReadPackage( "anupq", "lib/anupqid.gi" ); ReadPackage( "anupq", "lib/anustab.gi" ); ReadPackage( "anupq", "lib/anupqxdesc.gi" ); #E read.g . . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/autogen.sh000755 000766 000024 00000000055 14355420571 015137 0ustar00mhornstaff000000 000000 #!/bin/sh -ex autoreconf -vif `dirname "$0"` anupq-3.3.0/src/000755 000766 000024 00000000000 14355420571 013725 5ustar00mhornstaff000000 000000 anupq-3.3.0/src/update_name.c000644 000766 000024 00000001405 14355420571 016353 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A update_name.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" /* update the name of the immediate descendant by appending to the name, string, of the parent a ' #' followed by its number, x, in the sequence of immediate descendants constructed, a '; ', and step size */ void update_name(char *string, int x, int step_size) { register int length; if ((length = strlen(string)) < MAXIDENT - 15) sprintf(string + length, " #%d;%d", x, step_size); } anupq-3.3.0/src/soluble_orbits.c000644 000766 000024 00000012253 14355420571 017123 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A soluble_orbits.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "pq_functions.h" /* compute the orbits of the allowable subgroups, where the permutation group is soluble */ void compute_orbits(int **a, int **b, char **c, int **perms, struct pga_vars *pga) { register int alpha; int perm_number; /* set up space for orbit and stabiliser information */ space_for_orbits(a, b, c, pga); /* now compute the orbits */ for (alpha = 1; alpha <= pga->m; ++alpha) { if ((perm_number = pga->map[alpha]) != 0) orbits(perms[perm_number], *a, *b, *c, pga); else process_identity_perm(*a, *b, *c, pga); } } /* allocate and initialise space for orbit and stabiliser calculations */ void space_for_orbits(int **a, int **b, char **c, struct pga_vars *pga) { register int i; register int Degree = pga->Degree; *a = allocate_vector(Degree, 1, FALSE); *b = allocate_vector(Degree, 1, TRUE); *c = allocate_char_vector(Degree, 1, FALSE); for (i = 1; i <= Degree; ++i) { *(*a + i) = i; *(*c + i) = 1; } } /* process identity permutation -- we need only to update c[j] which is the number of times j has been last image in orbit with leading term a[j] */ void process_identity_perm(int *a, int *b, char *c, struct pga_vars *pga) { register int Degree = pga->Degree; int j, last, element; /* find the last entry, last, for each orbit, and increment c[last] */ for (j = 1; j <= Degree; ++j) { if (a[j] == j) { /* trace this orbit */ last = j; element = j; while (element != 0) { last = element; element = b[element]; } ++c[last]; } } } /* trace the action of the supplied permutation on the existing orbits where a[j] = leading term of existing orbit containing j b[j] = next term in existing orbit containing j c[j] = number of times j has been last image in orbit with leading term a[j] */ void orbits(int *permutation, int *a, int *b, char *c, struct pga_vars *pga) { register int j; for (j = 1; j <= pga->Degree; ++j) if (a[j] == j) trace_action(permutation, j, a, b, c); } /* trace the action of the permutation on the orbit whose leading term is j */ void trace_action(int *permutation, int j, int *a, int *b, char *c) { register int k, lead, image; Logical merge; /* find the last term, k, in the orbit of j */ k = j; while (b[k] != 0) k = b[k]; /* while the image of k lies outside the orbit whose leading term is j, merge the existing orbit of k with that of j by running through each element of the existing orbit of k and updating its entry in array a so that it now lies in the orbit with leading term j; let k be the last entry of the existing orbit */ merge = TRUE; while (merge) { image = permutation[k]; lead = a[image]; if (lead != j) { b[k] = lead; while (b[k] != 0) { a[b[k]] = j; c[b[k]] = 0; k = b[k]; } } else { ++c[k]; merge = FALSE; } } } /* list the orbit with leading term j and return its length */ int soluble_list_orbit(int j, int *b, struct pga_vars *pga) { register int orbit_length = 0; while (j != 0) { ++orbit_length; if (pga->print_orbits) printf("%d ", j); j = b[j]; } return orbit_length; } /* find the orbit representatives, number of orbits, and orbit lengths; also list the individual orbits */ int *soluble_find_orbit_reps(int *a, int *b, struct pga_vars *pga) { register int j; register int counter = 0; int *orbit_length; /* find the number of orbits */ pga->nmr_orbits = 0; for (j = 1; j <= pga->Degree; ++j) if (a[j] == j) ++pga->nmr_orbits; /* set up space to store orbit representatives and orbit lengths */ pga->rep = allocate_vector(pga->nmr_orbits, 1, 0); orbit_length = allocate_vector(pga->nmr_orbits, 1, 0); /* list the elements of each orbit and find its length */ for (j = 1; j <= pga->Degree && counter <= pga->nmr_orbits; ++j) { if (a[j] == j) { ++counter; pga->rep[counter] = j; if (pga->print_orbits) printf("\nOrbit %d:\n", counter); orbit_length[counter] = soluble_list_orbit(j, b, pga); if (pga->print_orbits) printf("\nLength is %d\n", orbit_length[counter]); } } return orbit_length; } /* print out contents of three arrays created during orbit calculation */ void print_orbit_information(int *a, int *b, char *c, struct pga_vars *pga) { printf("The array A is \n"); print_array(a, 1, pga->nmr_subgroups + 1); printf("The array B is \n"); print_array(b, 1, pga->nmr_subgroups + 1); printf("The array C is \n"); print_chars(c, 1, pga->nmr_subgroups + 1); } anupq-3.3.0/src/OpenFile.c000644 000766 000024 00000002103 14355420571 015566 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A OpenFile.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" /* fopen file */ FILE *OpenFile(const char *file_name, const char *mode) { FILE *fp = fopen(file_name, mode); if (fp == NULL) { fprintf(stderr, "Cannot open %s\n", file_name); if (!isatty(0)) exit(FAILURE); } return fp; } FILE *OpenFileOutput(const char *file_name) { return OpenFile(file_name, "w"); } FILE *OpenFileInput(const char *file_name) { return OpenFile(file_name, "r"); } /* open file for fread and fwrite */ FILE *OpenSystemFile(const char *file_name, const char *mode) { FILE *fp; if ((fp = fopen(file_name, mode)) == NULL) { perror(NULL); printf("Cannot open %s\n", file_name); exit(FAILURE); } setbuf(fp, NULL); return fp; } anupq-3.3.0/src/commutator.c000644 000766 000024 00000010554 14355420571 016270 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A commutator.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pretty_filterfns.h" #include "word_types.h" #include "constants.h" /* calculate a solution, x, to the equation u_1 * v_1 * x = u_2 * v_2 where u_1, v_1, u_2, v_2 are exponent vectors with base addresses cp1, cp2, cp3, cp4, respectively; the result is stored as an exponent vector with address result; with appropriate initial values, this procedure may be used to calculate a commutator; the algorithm finds a solution generator by generator */ void find_commutator( int cp1, int cp2, int cp3, int cp4, int result, struct pcp_vars *pcp) { register int *y = y_address; int r; int exp; register int i; int str = pcp->lused + 1; register int p = pcp->p; register int lastg = pcp->lastg; #include "access.h" y[str] = 1; for (i = 1; i <= lastg; ++i) { /* compute r and adjust its value mod p */ r = (y[cp3 + i] + y[cp4 + i]) - (y[cp1 + i] + y[cp2 + i]); while (r < 0) r += p; while (r >= p) r -= p; /* store the exponent of generator i in x */ y[result + i] = r; /* now compute the new u_2 */ if (y[cp4 + i] != 0) { y[str + 1] = PACK2(y[cp4 + i], i); collect(-str + 1, cp3, pcp); y[cp3 + i] = 0; } /* compute the residue mod p */ exp = y[cp2 + i] + r; while (exp < 0) exp += p; exp %= p; /* now compute the new v_1 */ if (y[cp2 + i] + r >= p) y[cp2 + i] = p - r; if (r != 0) { y[str + 1] = PACK2(r, i); collect(-str + 1, cp2, pcp); } /* now compute the new u_1 */ if (y[cp1 + i] + exp >= p) y[cp2 + i] = p - exp; if (exp != 0) { y[str + 1] = PACK2(exp, i); collect(-str + 1, cp1, pcp); } } } /* copy a section of the array, y, to another part of y */ void copy(int old, int length, int new, struct pcp_vars *pcp) { register int *y = y_address; for (; length > 0; --length) y[new + length] = y[old + length]; } /* calculate a power of a left-normed commutator of supplied depth by repeated calls to find_commutator; set up the result as an exponent vector with base address pcp->lused in order to permit the result to be handed to echelon easily */ void calculate_commutator(int format, struct pcp_vars *pcp) { register int *y = y_address; register int ptr, cp1, cp2, cp3, cp4, result; register int lastg = pcp->lastg; register int total; int disp = 0; int type; int depth; int exp; total = 6 * lastg + 6; if (is_space_exhausted(total, pcp)) return; cp1 = pcp->submlg - lastg - 2; cp2 = cp1 - lastg; cp3 = cp2 - lastg; cp4 = cp3 - lastg; result = cp4 - lastg; ptr = pcp->lused + 1; /* fudge the value of submlg because of possible call to power */ pcp->submlg -= total; read_value(TRUE, "Input number of components of commutator: ", &depth, 2); /* read in a and set it up at cp2 and cp3 */ type = FIRST_ENTRY; if (format == BASIC) read_word(stdin, disp, type, pcp); else pretty_read_word(stdin, disp, type, pcp); collect_word(ptr, cp2, pcp); copy(cp2, lastg, cp3, pcp); type = NEXT_ENTRY; disp = y[ptr] + 1; while (--depth > 0) { /* read in next component, b, and set it up at cp1 and cp4 */ if (format == BASIC) read_word(stdin, disp, type, pcp); else pretty_read_word(stdin, disp, type, pcp); collect_word(ptr + disp, cp1, pcp); copy(cp1, lastg, cp4, pcp); /* solve the equation (ba) * x = ab to obtain [a, b] */ find_commutator(cp1, cp2, cp3, cp4, result, pcp); copy(result, lastg, cp2, pcp); copy(result, lastg, cp3, pcp); } read_value(TRUE, "Input required power of this commutator: ", &exp, 1); power(exp, result, pcp); /* print the commutator */ setup_word_to_print("commutator", result, ptr, pcp); /* copy result to pcp->lused */ copy(result, lastg, pcp->lused, pcp); /* reset the value of submlg */ pcp->submlg += total; } anupq-3.3.0/src/assemble_matrix.c000644 000766 000024 00000001614 14355420571 017252 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A assemble_matrix.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" /* assemble a t x t matrix, A, which represents the action of the automorphism described by a 2-dimensional array, auts, on an initial-segment rank t subgroup of the p-multiplicator; note that the indices of auts start at 1, not 0 */ void assemble_matrix(int **A, int t, int **auts, struct pcp_vars *pcp) { register int *y = y_address; register int i, j; register int offset = y[pcp->clend + pcp->cc - 1] + 1; for (i = 0; i < t; ++i) for (j = 0; j < t; ++j) A[i][j] = auts[offset + i][offset + j]; } anupq-3.3.0/src/print_structure.c000644 000766 000024 00000007126 14355420571 017353 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A print_structure.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" /* print structure of generator with base address pointer */ void print_generator(int generator, int pointer, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int address = -pointer + 1; register int length = y[address]; #include "access.h" printf("%d = ", generator); for (i = 1; i <= length; ++i) printf("%d^%d ", FIELD2(y[address + i]), FIELD1(y[address + i])); printf("\n"); } /* find the definition of generator of supplied weight and set it up with address pointer */ int find_definition(int generator, int pointer, int weight, struct pcp_vars *pcp) { register int *y = y_address; register int u, v; register int structure = pcp->structure; #include "access.h" pointer += weight + 1; do { u = PART2(y[structure + generator]); v = PART3(y[structure + generator]); /* deal with case where generator is a defining generator */ if (generator < v) v = generator; if (u == 0) y[--pointer] = v; else { if (v == 0) { /* definition is a power, u^p */ v = 2; while (u > y[pcp->clend + 1]) { ++v; u = PART2(y[structure + u]); } for (; v > 0; --v) y[--pointer] = u; return pointer; } else { /* definition is a commutator [v, u] */ y[--pointer] = v; generator = u; } } } while (u != 0); return pointer; } /* what layer of the lower exponent-p central series is generator in? */ int layer(int generator, struct pcp_vars *pcp) { register int *y = y_address; int i; for (i = 1; i <= pcp->cc && y[pcp->clend + i] != 0 && generator > y[pcp->clend + i]; ++i) ; return MIN(i, pcp->cc); } /* print the structure of each of the pcp generators, numbered from first to last inclusive */ void print_structure(int first, int last, struct pcp_vars *pcp) { register int *y = y_address; register int structure = pcp->structure; register int u, v; register int gen, i; register int previous = 0; register int current; int value; int weight; int pointer; #include "access.h" for (gen = first; gen <= last; ++gen) { pointer = y[structure + gen]; weight = WT(pointer); if ((current = layer(gen, pcp)) != previous) { printf("Class %d\n", current); previous = current; } if (pointer <= 0) { printf("%d = ", gen); print_word(pointer, pcp); } else { u = PART2(pointer); v = PART3(pointer); if (u == 0) printf("%d is defined on image of defining generator %d\n", gen, v); else { for (i = 1; i <= weight; ++i) y[pcp->lused + i] = 0; find_definition(gen, pcp->lused, weight, pcp); if (v == 0) printf("%d is defined on %d^%d = ", gen, u, pcp->p); else printf("%d is defined on [%d, %d] = ", gen, u, v); for (i = 1; i <= weight; ++i) if ((value = y[pcp->lused + i]) != 0) printf("%d ", value); printf("\n"); } } } } anupq-3.3.0/src/identity.c000644 000766 000024 00000001061 14355420571 015720 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A identity.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pga_vars.h" /* set up the identity permutation */ void setup_identity_perm(int *permutation, struct pga_vars *pga) { register int i; for (i = 1; i <= pga->Degree; ++i) permutation[i] = i; } anupq-3.3.0/src/strip_identities.c000644 000766 000024 00000003115 14355420571 017453 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A strip_identities.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "pq_functions.h" /* find the non-identity permutations in the soluble subgroup of the automorphism group generated by the central automorphisms and record the correspondence from the non-identity automorphisms to the non-identity permutations */ void strip_identities(int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { register int alpha; int **A; /* automorphism matrix */ int nmr_soluble = pga->nmr_soluble; pga->nmr_of_perms = 0; /* set up space for automorphism matrix */ A = allocate_matrix(pga->q, pga->q, 0, FALSE); pga->map = allocate_vector(pga->m, 1, TRUE); for (alpha = 1; alpha <= pga->m; ++alpha) { if (alpha <= nmr_soluble) assemble_matrix(A, pga->q, auts[alpha], pcp); if (alpha > nmr_soluble || !is_identity(A, pga->q, 0)) { ++pga->nmr_of_perms; pga->map[alpha] = pga->nmr_of_perms; } } /* EOB - new 26/7/00 */ pga->nmr_of_perms = 0; for (alpha = 1; alpha <= pga->m; ++alpha) { ++pga->nmr_of_perms; pga->map[alpha] = pga->nmr_of_perms; } /* printf ("The map from auts to perms is "); print_array (pga->map, 1, pga->m + 1); */ free_matrix(A, pga->q, 0); } anupq-3.3.0/src/collect_word.c000644 000766 000024 00000005055 14355420571 016556 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A collect_word.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" #include "constants.h" #include "word_types.h" /* collect word in pcp generators of group; word has base address ptr; set up the result as exponent vector with base address cp */ void collect_word(int ptr, int cp, struct pcp_vars *pcp) { register int *y = y_address; int temp; int gen, exp; register int i; register int lastg = pcp->lastg; register int length = y[ptr]; /* zero out lastg entries in array in order to store result */ for (i = 1; i <= lastg; ++i) y[cp + i] = 0; /* collect the word */ for (i = 2; i <= length; ++i) { if ((gen = y[ptr + i]) > 0) collect(gen, cp, pcp); else invert_generator(-gen, 1, cp, pcp); } /* now calculate the appropriate power of the collected part */ if ((exp = y[ptr + 1]) != 1) { temp = ptr + y[ptr] + 1; calculate_power(exp, temp, cp, pcp); } } /* calculate the exp power of word stored as exponent-vector at cp; ptr is index of free position for temporary storage in y */ void calculate_power(int exp, int ptr, int cp, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int lastg = pcp->lastg; power(abs(exp), cp, pcp); /* if necessary, calculate the inverse */ if (exp < 0) { ++ptr; vector_to_word(cp, ptr, pcp); for (i = 1; i <= lastg; ++i) y[cp + i] = 0; invert_word(ptr, cp, pcp); } } /* collect a word in pcp generators which may be already stored or is read in as string with base address ptr; store the result as an exponent vector at cp; convert exponent vector to string with base address ptr; and print out result */ void setup_word_to_collect( FILE *file, int format, int type, int cp, struct pcp_vars *pcp) { int disp = pcp->lastg + 2; register int ptr; ptr = pcp->lused + 1 + disp; if (type != FIRST_ENTRY && type != NEXT_ENTRY) { if (format == BASIC) read_word(file, disp, type, pcp); else pretty_read_word(file, disp, type, pcp); } collect_word(ptr, cp, pcp); if (type == VALUE_A || type == VALUE_B || file != stdin) return; setup_word_to_print("result of collection", cp, ptr, pcp); } anupq-3.3.0/src/collect.c000644 000766 000024 00000035356 14355420571 015532 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A collect.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" #define MAXEXP (1 << 30) void stack_overflow(void); void integer_overflow(void); void add_string(int string, int length, int exponent, int collected_part, struct pcp_vars *pcp); /* an exponent vector with base address collected_part is multiplied on the right by a string with base address pointer; the string is assumed to be normal this routine follows the algorithm devised by M.R. Vaughan-Lee for collection from the left; step numbers correspond to step numbers in "Collection from the Left" by M.R. Vaughan-Lee, J. Symbolic Computation (1990) 9, 725-733 this version embodies a simpler form of combinatorial collection as described on page 733, which lessens the chance of integer overflow; it also incorporates recursion when adding strings and generators to the exponent vector during the collection algorithm, pointers to a number of strings are stored on a stack; theoretically, the stack depth could get as large as (p - 1) * pcp->lastg * pcp->cc, but, in practice, depths this large do not arise; however, it could be necessary to increase the dimensions of the stack arrays for some calculations with large groups; STACK_SIZE is the maximum depth of the stack; this constant is declared in the constants header file; overflow is tested in this algorithm integer overflow is also tested for, although it can only arise if p^3 > 2^31; if p^2 > 2^31, integer overflow can arise which is not tested for if either overflow arises, a message is printed out and the program terminates; ##################################################################### note the sections in this code enclosed within #ifndef EXPONENT_P #endif if you insert as part of the header material of this file #define EXPONENT_P or supply EXPONENT_P as a -D flag to the compiler, then the resulting collector assumes that all generators of the pcp have order p and does not execute these portions of the code */ /* stack size on Apollo causes problems */ #ifdef APOLLO static t_int strstk[STACK_SIZE]; /* string stack */ static t_int lenstk[STACK_SIZE]; /* length stack */ static t_int expstk[STACK_SIZE]; /* exponent stack */ #endif /* if Lie program, use different collect routine */ #if defined(GROUP) void collect(int pointer, int collected_part, struct pcp_vars *pcp) { register int *y = y_address; register int p1; /* string pointer */ register int ce; /* collected exponent */ register int cg; /* collected generator */ register int ug; /* uncollected generator */ register int ue; /* uncollected exponent */ register int sp = 0; /* stack pointer */ register int exp; /* exponent */ register int len = 1; /* length */ register int str; /* string pointer */ register int halfwt; /* last generator with weight <= cc/2 */ register int thirdwt; /* last generator with weight <= cc/3 */ register int weight_diff; /* current class - weight of ug */ register int entry; /* value to be inserted in collected part */ register int firstcg; /* first collected generator for loop counter */ register int lastcg; /* last collected generator for loop counter */ register int maxexp; /* max exponent allowed in call to add_string */ register int cp = collected_part; register int class_end = pcp->clend; register int current_class = pcp->cc; register int prime = pcp->p; register int pm1 = pcp->pm1; register int p_pcomm = pcp->ppcomm; register int p_power = pcp->ppower; register int structure = pcp->structure; #ifndef APOLLO int strstk[STACK_SIZE]; /* string stack */ int lenstk[STACK_SIZE]; /* length stack */ int expstk[STACK_SIZE]; /* exponent stack */ #endif register int i; #include "access.h" /* if prime is 2, use special collector */ if (prime == 2) { collectp2(pointer, collected_part, pcp); return; } /* Step (0) -- initialize collector */ if (pointer < 0) lenstk[0] = y[-pointer + 1]; else if (pointer == 0) return; strstk[0] = pointer; expstk[0] = 1; maxexp = (MAXEXP / prime) * 2; halfwt = y[class_end + current_class / 2]; thirdwt = y[class_end + current_class / 3]; /* Step (1) -- process next word on stack */ while (sp >= 0) { str = strstk[sp]; exp = expstk[sp]; /* check if str is a string or a generator */ if (str < 0) { /* we have a genuine string */ len = lenstk[sp]; sp--; /* get first generator exponent pair from string */ i = y[-str + 2]; ug = FIELD2(i); /* if ug > halfwt, the string can be added to the collected part without creating any commutators */ if (ug > halfwt) { add_string(str, len, exp, cp, pcp); continue; } /* ug <= halfwt and so exp must equal 1; stack remainder of string */ ue = FIELD1(i); if (len != 1) { strstk[++sp] = str - 1; lenstk[sp] = len - 1; } } else { /* str is a generator */ ug = str; ue = exp; sp--; /* if ug > halfwt, ug commutes with all higher generators */ if (ug > halfwt) { add_string(ug, 1, ue, cp, pcp); continue; } } /* ug <= halfwt; if ug > thirdwt, any commutators arising in collecting ug commute with all generators after ug, so ug can be collected without stacking up collected part */ if (ug <= thirdwt) { /* Step (2) -- combinatorial collection; scan collected part towards the left; bypass generators we know must commute with ug; when 2 * WT(cg) + WT(ug) > current_class, all generators occurring in [cg, ug] commute with each other; [cg^ce, ug] = [cg, ug]^ce; if cg1,..., cgk all satisfy this weight condition then [cg1 * ... * cgk, ug] = [cg1, ug] ... [cgk, ug] */ if (ue != 1) { /* we only move one ug at a time; stack ug^(ue - 1) */ if (++sp >= STACK_SIZE) stack_overflow(); strstk[sp] = ug; expstk[sp] = ue - 1; ue = 1; } weight_diff = current_class - WT(y[structure + ug]); firstcg = y[class_end + weight_diff]; lastcg = y[class_end + weight_diff / 2]; /* scan collected part to the left, bypassing generators which must commute with ug; the collected part between lastcg and firstcg contains a word w; we add in [w, ug] */ for (cg = firstcg; cg > ug; cg--) { ce = y[cp + cg]; if (ce != 0) { /* add [cg, ug]^ce to the collected part */ p1 = y[p_pcomm + cg] + ug; p1 = y[p1]; if (p1 != 0) { if (cg <= lastcg) break; if (p1 < 0) len = y[-p1 + 1]; add_string(p1, len, ce, cp, pcp); } } } if (cg == ug) { /* we have reached ug position during combinatorial collection; add 1 to ug entry of collected part without stacking any entries if appropriate */ if (y[cp + ug] == pm1) { if (y[p_power + ug] == 0) { y[cp + ug] = 0; continue; } } else { ++y[cp + ug]; continue; } } /* we have now added in [w, ug]; stack up collected part between firstcg and cg + 1 */ for (i = firstcg; i > cg; i--) { ce = y[cp + i]; if (ce != 0) { y[cp + i] = 0; if (++sp >= STACK_SIZE) stack_overflow(); strstk[sp] = i; expstk[sp] = ce; } } /* Step (3) -- ordinary collection; we have moved ug to the cg position; continue scanning to the left */ for (; cg > ug; cg--) { ce = y[cp + cg]; if (ce != 0) { /* zero the cg entry of collected part */ y[cp + cg] = 0; /* get [cg, ug] */ p1 = y[p_pcomm + cg] + ug; p1 = y[p1]; if (p1 == 0) { /* cg commutes with ug so stack cg^ce */ if (++sp >= STACK_SIZE) stack_overflow(); strstk[sp] = cg; expstk[sp] = ce; } else { /* cg does not commute with ug; we can only move ug past one cg at a time; stack [cg, ug] and then cg a total of ce times */ if (sp + ce + ce >= STACK_SIZE) stack_overflow(); if (p1 < 0) len = y[-p1 + 1]; for (; ce > 0; --ce) { strstk[++sp] = p1; lenstk[sp] = len; expstk[sp] = 1; strstk[++sp] = cg; expstk[sp] = 1; } } } } /* we have moved ug to the correct position; add 1 to the ug entry of collected part */ add_string(ug, 1, 1, cp, pcp); continue; } /* ug <= thirdwt */ /* Step (6) -- ug > thirdwt; move ug^ue past entries in the collected part, adding commutators directly to the collected part; scan collected part towards the left, bypassing generators we know must commute with ug; if the cg position in the collected part contains an entry ce then this represents cg^ce; [cg^ce, ug^ue] = [cg, ug]^(ce * ue), and we add the ce * ue power of [cg, ug] directly to the collected part */ weight_diff = current_class - WT(y[structure + ug]); firstcg = y[class_end + weight_diff]; for (cg = firstcg; cg > ug; cg--) { ce = y[cp + cg]; if (ce != 0) { /* add [cg, ug]^(ce * ue) directly to the collected part */ p1 = y[p_pcomm + cg]; p1 = y[p1 + ug]; if (p1 != 0) { exp = ce * ue; if (exp > maxexp) integer_overflow(); if (p1 < 0) len = y[-p1 + 1]; add_string(p1, len, exp, cp, pcp); } } } /* add ue to the ug entry of collected part */ entry = y[cp + ug] + ue; if (entry < prime) { y[cp + ug] = entry; continue; } else { y[cp + ug] = entry - prime; p1 = y[p_power + ug]; if (p1 == 0) continue; } /* adding ue to the ug entry has created an entry >= prime; we have to stack some of collected part */ for (cg = firstcg; cg > ug; cg--) { ce = y[cp + cg]; if (ce != 0) { /* set entry to zero and stack cg^ce */ y[cp + cg] = 0; if (++sp >= STACK_SIZE) stack_overflow(); strstk[sp] = cg; expstk[sp] = ce; } } /* add in ug^p; p1 is a pointer to ug^p */ if (p1 < 0) len = y[-p1 + 1]; add_string(p1, len, 1, cp, pcp); continue; } } #endif /* GROUP*/ /* add exponent times the string with address string and length length directly to the collected part with base address collected_part, recursively adding powers as required */ void add_string(int string, int length, int exponent, int collected_part, struct pcp_vars *pcp) { register int *y = y_address; register int cp = collected_part; register int exp = exponent; register int len = length; register int str = string; register int entry; register int ug; register int ue; register int power; register int class_begin = pcp->ccbeg; register int prime = pcp->p; register int p_power = pcp->ppower; register int i; int lower, upper; #include "access.h" if (str > 0) { /* Step (4) -- we have moved generator str to the correct position; add exp to the str entry of the collected part; reduce entry modulo p and add a power of str^p to the collected part if necessary */ entry = y[cp + str] + exp; y[cp + str] = entry % prime; if (str < class_begin) { exp = entry / prime; #ifndef EXPONENT_P if (exp != 0) { /* we need to recursively add in (str^p)^exp */ str = y[p_power + str]; if (str != 0) { if (str < 0) len = y[-str + 1]; add_string(str, len, exp, cp, pcp); } } #endif } } else { /* Step (5) -- add string with base address -str and length len directly to the collected part exp times; if this creates an entry >= prime we reduce the entry modulo prime and add in the appropriate power */ lower = -str + 2; upper = -str + len + 1; /* get one generator exponent pair at a time from string */ for (i = lower; i <= upper; i++) { ug = FIELD2(y[i]); ue = FIELD1(y[i]) * exp; entry = y[cp + ug] + ue; /* add ue to ug entry of the collected part and reduce mod p */ y[cp + ug] = entry % prime; #ifndef EXPONENT_P /* we need to recursively add in (ug^p)^power */ if (ug < class_begin) { power = entry / prime; if (power != 0) { str = y[p_power + ug]; if (str != 0) { if (str < 0) len = y[-str + 1]; add_string(str, len, power, cp, pcp); } } } #endif } } } /* stack is not big enough */ void stack_overflow(void) { printf("Stack overflow in collection routine; you should increase\n"); printf("value of STACK_SIZE in constants.h and recompile.\n"); exit(FAILURE); } /* arithmetic overflow */ void integer_overflow(void) { printf("Arithmetic overflow may occur in collection "); printf("routine. Results may be invalid.\n"); exit(FAILURE); } anupq-3.3.0/src/extra_relations.c000644 000766 000024 00000045327 14355420571 017307 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A extra_relations.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" #include "pq_functions.h" #include "exp_vars.h" #if defined(GROUP) /* this procedure collect extra relations which hold in the group; it may be used as an exponent check routine for certain Burnside computations; if pcp->extra_relations = 0 there are no extra relations; if pcp->extra_relations > 0, the extra relations specify that certain pcp words have exponent pcp->extra_relations -- those normal pcp words with weights from pcp->start_wt to end_class; if pcp->end_wt > 0, end_class is set to the minimum of pcp->cc and this value; if both pcp->end_wt and pcp->start_wt are 0, this ensures that the group has exponent pcp->extra_relations; if ALL_WORDS is chosen, then the routine generates a complete list of the normal words needed in exponent checking whose weights lie within the chosen bounds; if REDUCED_LIST is chosen, it is assumed that all redundant relations in the queue are later closed under supplied automorphisms which must contain a generating set for the appropriate general linear group; if INITIAL_SEGMENT is chosen, the routine will read in a word and only generate all those words needed for exponent checking which have this word as a proper initial segment; any redundancies obtained by echelonising the members of this list are added to the supplied queue; there are a number of options in this code which are selected according to the value of the following variables: if exp_flag->process is FALSE, generate the list of words but do not process the elements; if diagnostic output, then print out all words which will be collected; if exp_flag->complete is TRUE and diagnostic output is chosen, then print out all of the words of the appropriate weight generated and not just those which survive the conjugacy and other tests; hence, if you want a listing of all of the words generated using the back-track search, you should set both flags TRUE; if exp_flag->partitions is TRUE, print the weight partitions of the generated words; */ #define MCLASS 10000 int initial_length; /* length of initial segment */ int least_weight; /* lower bound on weight of remaining letters */ int max_weight; /* upper bound on weight of remaining letters */ int initial_weight; /* weight of initial segment */ int first_entry; /* lower bound on new letters in word */ int least_entry; /* lower bound on remaining new letters in word */ int max_entry; /* upper bound on new letters in word */ /* read in the initial segment to be used in generating the words */ static void read_initial_segment(int *initial, int *initial_coeff, struct pcp_vars *pcp) { register int *y = y_address; register int i; int lower_bound; /* lower bound on next letter in word */ int lower_bound_weight; /* lower bound on weight of next letter */ #include "access.h" /* read in details of the initial segment of the words to be processed */ read_value( TRUE, "Input length of initial segment of words: ", &initial_length, 0); lower_bound = 0; if (initial_length != 0) { printf("Input initial segment of words as a generator exponent list: "); for (i = 1; i < initial_length; ++i) { read_value(FALSE, "", &initial[i], lower_bound + 1); read_value(FALSE, "", &initial_coeff[i], 1); lower_bound = initial[i]; } read_value(FALSE, "", &initial[i], lower_bound + 1); read_value(TRUE, "", &initial_coeff[i], 1); lower_bound = initial[i]; } /* find initial weight */ initial_weight = 0; for (i = 1; i <= initial_length; ++i) initial_weight += initial_coeff[i] * WT(y[pcp->structure + initial[i]]); /* all other entries in this word must have weight as least as great as the last letter of the initial segment */ if (lower_bound == 0) lower_bound_weight = 1; else lower_bound_weight = MAX(1, WT(y[pcp->structure + lower_bound])); read_value(TRUE, "Input lower bound for weight of remaining letters: ", &least_weight, lower_bound_weight); /* first entry in the remainder of word */ first_entry = y[pcp->clend + MIN(least_weight - 1, pcp->cc)]; /* the first new letter must be larger than the last letter of the initial segment */ first_entry = MAX(lower_bound, first_entry); /* if using automorphisms and initial segment has length 0, we skip all but first of those pcp generators of weight 1 */ least_entry = (pcp->m != 0 && initial_length == 0) ? y[pcp->clend + 1] : first_entry; read_value(TRUE, "Input upper bound for weight of remaining letters: ", &max_weight, least_weight); max_entry = pcp->ccbeg; if (max_weight < pcp->cc) max_entry = y[pcp->clend + max_weight] + 1; } void extra_relations(struct exp_vars *exp_flag, struct pcp_vars *pcp) { register int *y = y_address; register int nmr_words; /* number of normal words powered in class */ register int length; /* number of generators in normal word */ register int exp_length; /* sum of exponents in normal word */ register int nextg; /* next generator added to normal word */ register int w; /* weight of generator in normal word */ register int weight; /* weight of normal word */ register int wt_gen1; /* weight of first generator in normal word */ register int gen_i; /* ith generator in normal word */ register Logical exit; /* exit from loop? */ int gen[MCLASS + 1]; /* generators of normal word */ int coeff[MCLASS + 1]; /* exponents of these generators */ int initial[MCLASS + 1]; /* generators of initial normal word */ int initial_coeff[MCLASS + 1]; /* exponents of these generators */ register int extra_relations = pcp->extra_relations; register int structure = pcp->structure; register int lastg = pcp->lastg; register int prime = pcp->p; register int pm1 = pcp->pm1; register int end_class; /* end class for check */ register int class; register int entry; register int i, j; int *queue; char *s; FILE *RelationList = 0; #include "access.h" if (extra_relations == 0) return; /* relation file */ if (exp_flag->word_list) RelationList = OpenFile("Relation_list", "w"); /* determine whether the supplied exponent is valid and what classes must be checked */ i = 0; j = extra_relations; while (j > 1) { if (MOD(j, prime) != 0) { text(14, extra_relations, 0, 0, 0); pcp->valid = FALSE; return; } ++i; j /= prime; } if (pcp->cc <= i) return; end_class = pcp->cc; if (pcp->end_wt != 0) end_class = MIN(end_class, pcp->end_wt); if (exp_flag->list == ALL_WORDS || exp_flag->list == REDUCED_LIST) { initial_length = 0; initial_weight = 0; first_entry = 0; least_entry = (exp_flag->list == REDUCED_LIST) ? y[pcp->clend + 1] : 0; max_entry = pcp->ccbeg; } else { read_initial_segment(initial, initial_coeff, pcp); } queue = exp_flag->queue; /* process each relevant class in turn -- using a backtrack process, build up normal words in the pcp generators of the group which have weight equal to class; each word has the general form gen[1]^coeff[1] * gen[2]^coeff[2] * ... * gen[length]^coeff[length] where gen[1], ..., gen[length] are pcp generators with gen[1] < gen[2] < ... < gen[length], coeff[1] = 1, and 0 < coeff[i] < prime for i = 2,...,length; we generate only all words with weight equal to class and coeff[1] = 1; normal words with coeff[1] > 1 are powers of normal words with coeff[1] = 1, and so they have the same orders as those with coeff[1] = 1; if REDUCED_LIST is chosen, we enforce the additional requirement that gen[i] has weight at least 2 for all i >= 2, and gen[1] = 1 or gen[1] has weight at least 2; if INITIAL_SEGMENT is chosen, we enforce the additional requirement that each word has the supplied proper initial segment; we apply some commutator calculus to eliminate some of the words; those not eliminated are raised to the power extra_relations and then the result is echelonised */ for (class = MAX(1, pcp->start_wt); class <= end_class; ++class) { nmr_words = 0; length = initial_length; weight = initial_weight; /* set up the initial-segment of the word */ for (i = 1; i <= initial_length; ++i) { gen[i] = initial[i]; coeff[i] = initial_coeff[i]; } nextg = first_entry + 1; w = WT(y[structure + nextg]); do { /* backtrack process -- start to construct the next normal word */ exit = FALSE; while (weight + w > class || nextg >= max_entry) { /* if length = 0, we have finished this class */ exit = (length == initial_length); if (exit) break; /* strip off last generator from the normal word and decrease the weight of the word accordingly */ nextg = gen[length]; if (--coeff[length] == 0) --length; weight -= WT(y[structure + nextg]); if (nextg >= 1 && nextg < least_entry) /* nextg should now start with first generator of next weight */ nextg = least_entry + 1; else ++nextg; w = WT(y[structure + nextg]); } if (exit) break; /* add in nextg as last pcp generator with exponent one of normal word; increase weight accordingly */ coeff[++length] = 1; if (nextg > 1 && nextg <= least_entry) { /* nextg should now start with first generator of weight 2 */ nextg = least_entry + 1; w = WT(y[structure + nextg]); } gen[length] = nextg; weight += w; /* keep extending normal word as long as its weight is < class */ while (weight < class) { if (coeff[length] == pm1 || length == 1) { /* add in a new pcp generator with exponent 1 */ coeff[++length] = 1; ++nextg; if (nextg > 1 && nextg <= least_entry) /* nextg now starts with first generator of next weight */ nextg = least_entry + 1; gen[length] = nextg; w = WT(y[structure + nextg]); } else /* add in another copy of nextg */ ++coeff[length]; /* update weight for new word */ weight += w; } /* if weight > class, we have extended the normal word too far, and we need to backtrack */ if (weight > class) continue; /* if appropriate, print out weight partitions */ if (exp_flag->partitions) { printf("seq ("); for (i = 1; i < length; ++i) for (j = 1; j <= coeff[i]; ++j) printf("%d, ", WT(y[structure + gen[i]])); for (j = 1; j < coeff[length]; ++j) printf("%d, ", WT(y[structure + gen[length]])); printf("%d),\n", WT(y[structure + gen[length]])); } if (exp_flag->complete) { printf("Seek to collect power %d of the following word: ", extra_relations); for (i = 1; i <= length; ++i) printf("%d^%d ", gen[i], coeff[i]); printf("\n"); } /* we now have a normal word of weight class; run a number of checks to establish if it is necessary to exponentiate it; first, use commutator identities to possibly eliminate it; if the conditions in the if clause below are satisfied, then the normal closure of nextg has prime exponent; if this is the case, we can express the normal word in the form u * nextg, where u is a normal word of lower weight; we assume by induction that u^extra_relations = 1, and this, together with the fact that the normal closure of nextg has exponent prime, implies that (u * nextg)^extra_relations is a product of commutators which have length at least extra_relations and which have entries gen[1],..., gen[length]; we may also assume that gen[i] occurs at least coeff[i] times for i = 1, ..., length in each of these commutators; let exp_length = sum of coeff[i] for i = 1, ..., length; if extra_relations > exp_length then these commutators have extra entries of weight at least wt_gen1; check whether the extra entries make the total weight of the commutators exceed the current class; if so, the power of this word is trivial */ wt_gen1 = WT(y[structure + gen[1]]); if (prime * w >= pcp->cc && y[pcp->ppower + nextg] == 0) { /* find the sum of the coefficients */ for (i = 1, exp_length = 0; i <= length; ++i) exp_length += coeff[i]; if (weight + (extra_relations - exp_length) * wt_gen1 > pcp->cc) { if (exp_flag->filter) { printf("Filtered from list using normal closure\n"); } continue; } } /* seek to eliminate conjugates and powers of words which are tested at other times; the Felsch-Neubueser conjugacy class algorithm provides a list of class representatives for a group described by a pcp; these representatives have the property that if a word occurs in the list, then any of its subwords also occurs as a representative; the calculations listed below allow us to recognise that certain words would not occur in the list; if we can deduce that our normal word, w, would not occur, we do not power w; in the iteration listed below, if gen_i = PART2(entry) or PART3(entry) then gen[j] is a commutator or power of gen_i; this means that our normal word, w, is a conjugate or a power of another normal word which starts off with the same first i generator-exponent pairs as w, but which does not have gen[j] anywhere in it; note that this reduction is critically sensitive to the way in which generators are numbered, and to the way eliminations are carried out in this program; Michael Vaughan-Lee provided this refinement */ /* first, find last generator in normal word with weight = wt_gen1 */ for (i = length; WT(y[structure + gen[i]]) > wt_gen1; --i) ; if (i != length) { exit = FALSE; gen_i = gen[i]; for (j = i + 1; j <= length && !exit; ++j) { entry = y[structure + gen[j]]; exit = (gen_i == PART2(entry) || gen_i == PART3(entry)); } if (exit) { if (exp_flag->filter == TRUE) printf("Filtered from list using conjugacy checks\n"); continue; } } /* we have a word to exponentiate */ ++nmr_words; /* we may want to save all test words generated to a relation file for later processing */ if (RelationList) { fprintf(RelationList, "%d ", extra_relations); for (i = 1; i <= length; ++i) for (j = 1; j <= coeff[i]; ++j) fprintf(RelationList, "%d ", gen[i]); fprintf(RelationList, ";\n"); } /* space is required for three collected parts set up in power */ if (is_space_exhausted(6 * lastg + 6, pcp)) return; structure = pcp->structure; /* put one copy of word into collected part in exponent-vector form */ for (i = 1; i <= lastg; ++i) y[pcp->lused + i] = 0; for (i = 1; i <= length; ++i) { nextg = gen[i]; y[pcp->lused + nextg] = coeff[i]; } /* if process flag is true, and the number of the word is higher than supplied value, power the word and echelonise the result */ if (exp_flag->process && nmr_words >= exp_flag->start_process) { power(extra_relations, pcp->lused, pcp); /* is the result trivial? if not, group has larger exponent */ if (exp_flag->check_exponent == TRUE) { i = 1; while (i <= lastg && exp_flag->all_trivial) { exp_flag->all_trivial = (y[pcp->lused + i] == 0); ++i; } if (exp_flag->all_trivial == FALSE) return; } /* set second collected part trivial for echelonisation */ for (i = 1; i <= lastg; ++i) y[pcp->lused + lastg + i] = 0; echelon(pcp); } /* if appropriate, print out the normal word */ if (((pcp->fullop && pcp->eliminate_flag) || (pcp->diagn && exp_flag->process) || (pcp->diagn && !exp_flag->process && !exp_flag->filter)) && nmr_words >= exp_flag->start_process) { s = exp_flag->process ? "Collected" : "Will collect"; printf("%s power %d of the following word: ", s, extra_relations); for (i = 1; i <= length; ++i) printf("%d^%d ", gen[i], coeff[i]); printf("\n"); } if (pcp->redgen != 0 && pcp->m != 0) queue[++exp_flag->queue_length] = pcp->redgen; /* report intermediate statistics */ if (exp_flag->report_unit && nmr_words % exp_flag->report_unit == 0) { s = nmr_words == 1 ? "" : "s"; printf( "%d relation%s of class %d collected\n", nmr_words, s, class); } if (pcp->overflow || pcp->complete != 0 || pcp->newgen == 0) return; } while (length != 0); /* if appropriate, report the number of words raised to power */ if (!exp_flag->process || exp_flag->report_unit || pcp->fullop || pcp->diagn) text(13, nmr_words, class, exp_flag->process, 0); } if (RelationList) CloseFile(RelationList); } #endif anupq-3.3.0/src/collectp2.c000644 000766 000024 00000016456 14355420571 015774 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A collectp2.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" void add_p2string(int string, int length, int collected_part, struct pcp_vars *pcp); /* collection procedure for the prime 2; this routine is documented in the file collect.c */ void collectp2(int pointer, int collected_part, struct pcp_vars *pcp) { register int *y = y_address; register int p1; /* string pointer */ register int cg; /* collected generator */ register int ug; /* uncollected generator */ register int sp = 0; /* stack pointer */ register int len = 1; /* length */ register int str; /* string pointer */ register int halfwt; /* last generator with weight <= cc/2 */ register int weight_diff; /* current class - weight of ug */ register int firstcg; /* first collected generator for loop counter */ register int lastcg; /* last collected generator for loop counter */ register int cp = collected_part; register int class_end = pcp->clend; register int current_class = pcp->cc; register int p_pcomm = pcp->ppcomm; register int p_power = pcp->ppower; register int structure = pcp->structure; int strstk[STACK_SIZE]; /* string stack */ int lenstk[STACK_SIZE]; /* length stack */ register int i; #include "access.h" /* Step (0) -- initialize collector */ if (pointer < 0) lenstk[0] = y[-pointer + 1]; else if (pointer == 0) return; halfwt = y[class_end + current_class / 2]; strstk[0] = pointer; /* Step (1) -- process next word on stack */ while (sp >= 0) { str = strstk[sp]; if (str < 0) { /* we have a genuine string */ len = lenstk[sp]; sp--; /* get first generator from string */ i = y[-str + 2]; ug = FIELD2(i); /* if ug > halfwt, whole string can be added to the collected part without creating any commutators */ if (ug > halfwt) { add_p2string(str, len, cp, pcp); continue; } if (len != 1) { /* stack remainder of string */ strstk[++sp] = str - 1; lenstk[sp] = len - 1; } } else { /* str is a generator */ ug = str; sp--; /* if ug > halfwt, ug commutes with all higher generators */ if (ug > halfwt) { add_p2string(ug, 1, cp, pcp); continue; } } /* Step (2) -- combinatorial collection; move ug past entries in the collected part, adding commutators directly to the collected part; if 2 * WT(cg) + WT(ug) > current_class then [cg, ug] commutes with all generators k such that k >= cg; scan collected part towards the left, bypassing generators we know must commute with ug */ weight_diff = current_class - WT(y[structure + ug]); firstcg = y[class_end + weight_diff]; lastcg = y[class_end + weight_diff / 2]; for (cg = firstcg; cg > ug; cg--) { if (y[cp + cg] != 0) { /* add [cg, ug] directly to the collected part */ p1 = y[p_pcomm + cg]; p1 = y[p1 + ug]; if (p1 != 0) { if (cg <= lastcg) break; if (p1 < 0) len = y[-p1 + 1]; add_p2string(p1, len, cp, pcp); } } } if (cg == ug) { /* we have reached the ug position during combinatorial collection; check whether we can avoid stacking collected part */ if (y[cp + ug] == 0) { y[cp + ug] = 1; continue; } else { if (y[p_power + ug] == 0) { y[cp + ug] = 0; continue; } } } /* we do have to stack some of the collected part */ for (i = firstcg; i > cg; i--) { if (y[cp + i] != 0) { /* set entry to zero and stack i */ y[cp + i] = 0; if (++sp >= STACK_SIZE) stack_overflow(); strstk[sp] = i; } } /* Step (3) -- ordinary collection; continue scanning towards the left, stacking up commutators and entries in collected part until we reach ug position */ for (; cg > ug; cg--) { if (y[cp + cg] != 0) { /* zero the cg entry of collected part */ y[cp + cg] = 0; /* get [cg, ug] */ p1 = y[p_pcomm + cg]; p1 = y[p1 + ug]; /* move ug past cg stacking [cg, ug] and cg */ if (sp + 2 >= STACK_SIZE) stack_overflow(); if (p1 != 0) { /* stack [cg, ug] if it is non-trivial */ strstk[++sp] = p1; if (p1 < 0) lenstk[sp] = y[-p1 + 1]; } /* stack cg */ strstk[++sp] = cg; } } add_p2string(ug, 1, cp, pcp); continue; } } /* prime = 2; add the string with address string and length length directly to the collected part with base address collected_part, recursively adding powers as required */ void add_p2string(int string, int length, int collected_part, struct pcp_vars *pcp) { register int *y = y_address; register int cp = collected_part; register int str = string; register int len = length; register int ug; register int class_begin = pcp->ccbeg; register int p_power = pcp->ppower; register int i; int lower, upper; #include "access.h" if (str > 0) { /* Step (4) -- we have moved generator str to the correct position; add 1 to the str entry of the collected part; reduce entry modulo 2 and add str^2 to collected part if necessary */ if (y[cp + str] == 0) y[cp + str] = 1; else { /* we need to recursively add in str^2 */ y[cp + str] = 0; if (str < class_begin) { str = y[p_power + str]; if (str != 0) { if (str < 0) len = y[-str + 1]; add_p2string(str, len, cp, pcp); } } } } else { /* Step (5) -- add string with base address -str and length len directly to the collected part; if this creates an entry >= 2, reduce entry modulo 2 and recursively add in the appropriate power */ lower = -str + 2; upper = -str + len + 1; /* get one generator exponent pair at a time from string */ for (i = lower; i <= upper; i++) { ug = FIELD2(y[i]); if (y[cp + ug] == 0) y[cp + ug] = 1; else { y[cp + ug] = 0; if (ug < class_begin) { /* we need to recursively add in ug^2 */ str = y[p_power + ug]; if (str != 0) { if (str < 0) len = y[-str + 1]; add_p2string(str, len, cp, pcp); } } } } } } anupq-3.3.0/src/stages.c000644 000766 000024 00000005034 14355420571 015361 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A stages.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "pq_functions.h" /* begin intermediate stage calculations; descendant_file contains the */ void start_stage(FILE *descendant_file, int k, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { int nmr_of_covers; FILE *covers_file; covers_file = TemporaryFile(); nmr_of_covers = reduced_covers(descendant_file, covers_file, k, auts, pga, pcp); if (pcp->overflow) exit(FAILURE); if (nmr_of_covers != 0) { RESET(covers_file); intermediate_stage(descendant_file, covers_file, nmr_of_covers, pga, pcp); } else CloseFile(covers_file); } /* input_file contains nmr_of_covers reduced p-covering groups from one intermediate stage of computations; process all of these, writing new reduced p-covering groups constructed (if any) to file covers_file; note that this procedure is called recursively */ void intermediate_stage(FILE *descendant_file, FILE *input_file, int nmr_of_covers, struct pga_vars *pga, struct pcp_vars *pcp) { register int i; int ***auts; int next_stage = 0; /* total number of covers constructed at next stage */ int nmr_of_descendants; int nmr_of_capables; int x_dim, y_dim; FILE *covers_file; covers_file = TemporaryFile(); for (i = 1; i <= nmr_of_covers; ++i) { nmr_of_descendants = pga->nmr_of_descendants; nmr_of_capables = pga->nmr_of_capables; restore_pcp(input_file, pcp); auts = restore_pga(input_file, pga, pcp); x_dim = pga->m; y_dim = pcp->lastg; pga->nmr_of_descendants = nmr_of_descendants; pga->nmr_of_capables = nmr_of_capables; next_stage += reduced_covers(descendant_file, covers_file, 0, auts, pga, pcp); if (pcp->overflow) exit(FAILURE); free_array(auts, x_dim, y_dim, 1); } CloseFile(input_file); if (next_stage != 0) { RESET(covers_file); intermediate_stage(descendant_file, covers_file, next_stage, pga, pcp); } else CloseFile(covers_file); } anupq-3.3.0/src/collect_relations.c000644 000766 000024 00000004376 14355420571 017610 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A collect_relations.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" /* collect defining relations and solve corresponding equations; a commutator relation is stored with a negative length */ void collect_relations(struct pcp_vars *pcp) { register int *y = y_address; register int i; register int j; register int k; register int p1; register int length; register int cp, cp1, cp2; register int relp = pcp->relp; register int ndrel = pcp->ndrel; register int lastg = pcp->lastg; for (i = 1; i <= ndrel; ++i) { /* space is required for two collected parts set up here and possibly for 5 * pcp->lastg in collect_def_comm */ if (is_space_exhausted(7 * lastg + 7, pcp)) return; cp1 = pcp->lused; cp2 = cp1 + lastg; /* original zero out -- bug reported by John Cannon October 1998 */ /* for (j = 1; j <= lastg; ++j) y[cp1 + j] = y[cp2 + j] = 0; */ for (j = 1; j <= 2; ++j) { p1 = y[++relp]; if (p1 != 0) { cp = (j == 1) ? cp1 : cp2; /* bug fix */ for (k = 1; k <= lastg; ++k) y[cp + k] = 0; length = y[p1]; /* is the relation a word or a commutator? */ if (length > 0) collect_gen_word(p1, length, cp, pcp); else if (length < 0) { /* we may need to update pcp->lused, as space immediately above it is used in commutator routines */ if (j == 2) pcp->lused += lastg; collect_def_comm(p1, cp, pcp); if (j == 2) pcp->lused -= lastg; } if (!pcp->valid) return; } } echelon(pcp); if ((pcp->fullop && pcp->eliminate_flag) || pcp->diagn) text(1, i, 0, 0, 0); if (pcp->overflow || pcp->complete != 0) return; } } anupq-3.3.0/src/degree.c000644 000766 000024 00000003124 14355420571 015324 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A degree.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pga_vars.h" #include "pq_functions.h" #include "constants.h" /* compute the number of allowable subgroups; also, set up powers, offset, and inverses arrays */ void compute_degree(struct pga_vars *pga) { register int i; register int maximum = 0; pga->Degree = 0; /* compute degree; store offset for each definition set */ for (i = 0; i < pga->nmr_def_sets; ++i) { pga->offset[i] = pga->Degree; /* this is a test to try to prevent integer overflow */ if (int_power(pga->p, pga->available[i]) > (INT_MAX - pga->Degree)) { text(19, 0, 0, 0, 0); if (!isatty(0)) exit(FAILURE); else return; } pga->Degree += int_power(pga->p, pga->available[i]); if (maximum < pga->available[i]) maximum = pga->available[i]; } /* store powers of prime */ pga->powers = allocate_vector(maximum + 1, 0, 0); for (i = 0; i <= maximum; ++i) pga->powers[i] = int_power(pga->p, i); /* store inverses of 1 .. p - 1 */ pga->inverse_modp = allocate_vector(pga->p, 0, 0); for (i = 1; i < pga->p; ++i) pga->inverse_modp[i] = invert_modp(i, pga->p); if (pga->print_degree) printf("Degree of permutation group is %d\n", pga->Degree); } anupq-3.3.0/src/standard.c000644 000766 000024 00000057444 14355420571 015707 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A standard.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" #include "pcp_vars.h" #include "pga_vars.h" #include "exp_vars.h" #include "constants.h" #include "pq_functions.h" #include "menus.h" #include "standard.h" #if defined(GROUP) && defined(STANDARD_PCP) static int map_array_size; static int output; static void enforce_exp_law(struct pcp_vars *pcp); static int **start_pga_run(Logical *identity_map, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp); static int ** group_completed(int ***auts, struct pga_vars *pga, struct pcp_vars *pcp); static int **finish_pga_run(Logical *identity_map, FILE *cover_tmp_file, FILE *group_file, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp); static int **find_stabiliser(Logical *identity_map, int non_standard, int ***auts, int **perms, int *a, int *b, char *c, int *orbit_length, struct pga_vars *pga, struct pcp_vars *pcp); static void trace(char *word_map, int *depth, int label, int *backptr, char *schreier); static char *find_word(int *word_length, Logical soluble_group, int **perms, int rep, int non_standard, int orbit_length, int *b, char *c, struct pga_vars *pga); static int **standard_map(char *word_map, int word_length, Logical *identity_map, int rep, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp); static int inverse_image(int l, int *perms, struct pga_vars *pga); static void list_subgroup(int rep, struct pga_vars *pga, struct pcp_vars *pcp); /* compute a standard presentation for a group; this procedure assumes that -- an arbitrary finite presentation has been supplied; -- a standard presentation has been computed for the class c p-quotient; -- a presentation for the p-covering group computed using this standard presentation has been set up before the call to this procedure; we will now compute the standard presentation for the class c + 1 p-quotient */ void standard_presentation(Logical *identity_map, int standard_output, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { int i; int **map; #if defined(TIME) int t; #endif output = standard_output; #if defined(TIME) t = runTime(); #endif map = start_pga_run(identity_map, auts, pga, pcp); if (map == NULL) return; #if defined(TIME) printf("time in start_pga is %.2f\n", (runTime() - t) * CLK_SCALE); #endif if (output == MAX_STANDARD_PRINT) { printf("The standard automorphism is:\n"); for (i = 1; i <= pga->ndgen; ++i) { printf("%d ---> ", i); print_array(map[i], 1, pcp->lastg + 1); } } #if defined(DEBUG) printf("Map identity? %d\n", *identity_map); #endif map_relations(map, pga, pcp); /* memory leakage September 1996 -- originally pcp->lastg */ free_matrix(map, map_array_size, 1); } /* enforce the exponent law, if any, on the group */ static void enforce_exp_law(struct pcp_vars *pcp) { register int *y = y_address; struct exp_vars exp_flag; if (pcp->extra_relations != 0) { initialise_exponent(&exp_flag, pcp); extra_relations(&exp_flag, pcp); /* are there redundant defining generators? if so, be careful about elimination -- see next_class for further information */ if (pcp->ndgen > y[pcp->clend + 1]) eliminate(TRUE, pcp); else eliminate(FALSE, pcp); } } /* commence a partial run of p-group generation in order to determine the standard presentation for this class */ static int **start_pga_run(Logical *identity_map, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { FILE *cover_file; /* store complete p-cover of group */ FILE *cover_tmp_file; /* store (reduced) p-cover of group */ FILE *group_file; /* store class c + 1 quotient of group */ int **map; /* automorphism to apply to presentation */ #if defined(TIME) int t = runTime(); #endif /* save (reduced) p-covering group presentation to temporary file */ cover_tmp_file = TemporaryFile(); save_pcp(cover_tmp_file, pcp); RESET(cover_tmp_file); /* we need compute the class c + 1 quotient only on the first time through or if the map applied to the previous presentation was not the identity; in these cases, before computing class c + 1 quotient, restore complete p-cover; we cannot use the reduced p-cover because a presentation having redundant generators can cause difficulties with interaction between update_generators and eliminate */ if (*identity_map == FALSE) { cover_file = OpenFile("ISOM_cover_file", "r"); restore_pcp(cover_file, pcp); CloseFile(cover_file); /* enforce exponent law on complete p-cover */ enforce_exp_law(pcp); /* now compute the presentation for the class c + 1 quotient */ pcp->multiplicator = FALSE; update_generators(pcp); collect_relations(pcp); eliminate(FALSE, pcp); if (pcp->overflow || !pcp->valid) exit(FAILURE); /* when relations are enforced, the group may complete */ if (pcp->complete) { map = group_completed(auts, pga, pcp); *identity_map = TRUE; CloseFile(cover_tmp_file); return map; } /* save presentation for class c + 1 quotient to file */ group_file = OpenFile("ISOM_group_file", "w+"); save_pcp(group_file, pcp); } else { /* we must restore the presentation to correctly determine step size */ group_file = OpenFile("ISOM_group_file", "r"); restore_pcp(group_file, pcp); } RESET(group_file); #if defined(TIME) t = runTime() - t; printf("Time to compute class c + 1 is %.2f seconds\n", t * CLK_SCALE); #endif /* note step size required for p-group generation */ pga->step_size = pcp->lastg - pcp->ccbeg + 1; map = finish_pga_run(identity_map, cover_tmp_file, group_file, auts, pga, pcp); CloseFile(group_file); CloseFile(cover_tmp_file); return map; } /* the group has completed when the relations are imposed; we write necessary files in order to have consistent behaviour pattern */ static int ** group_completed(int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { FILE *NextClass; FILE *Status; int i, j, k; int **standard; NextClass = OpenFile("ISOM_NextClass", "w+"); fprintf(NextClass, "%d\n", pga->m); fprintf(NextClass, "%d\n", pcp->lastg); for (i = 1; i <= pga->m; ++i) { for (j = 1; j <= pga->ndgen; ++j) { for (k = 1; k <= pcp->lastg; ++k) fprintf(NextClass, "%d ", auts[i][j][k]); fprintf(NextClass, "\n"); } } fprintf(NextClass, "%d\n", pga->fixed); fprintf(NextClass, "%d\n", pga->soluble); #ifdef HAVE_GMP mpz_out_str(NextClass, 10, &pga->aut_order); fprintf(NextClass, "\n"); #endif CloseFile(NextClass); Status = OpenFile("ISOM_Status", "w"); fprintf(Status, "%d ", END_OF_CLASS); fprintf(Status, "%d ", TERMINAL); CloseFile(Status); map_array_size = pcp->lastg; standard = allocate_matrix(pcp->lastg, pcp->lastg, 1, FALSE); for (i = 1; i <= pga->ndgen; ++i) for (j = 1; j <= pcp->lastg; ++j) standard[i][j] = (i == j) ? 1 : 0; return standard; } /* complete pga run to compute standard presentation for this class */ static int **finish_pga_run(Logical *identity_map, FILE *cover_tmp_file, FILE *group_file, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { int **perms; FILE *LINK_input = 0; int k; int upper_step; Logical soluble_group; #if defined(GAP_LINK) Logical process_fork = FALSE; /* has GAP process forked? */ #endif int *a; int *b; char *c; int *orbit_length; int **subgroup_matrix; int K; /* bit string representation of definition set */ int *subset; /* definition set */ int non_standard; /* label for allowable subgroup defining non-standard presentation */ int **map; /* automorphism to apply to presentation */ #if defined(TIME) int t; #endif restore_pcp(cover_tmp_file, pcp); RESET(cover_tmp_file); #if defined(DEBUG) printf("Now restore p-covering group\n"); print_presentation(FALSE, pcp); #endif pga->exponent_law = pcp->extra_relations; /* enforce_laws (pga, pga, pcp); */ extend_automorphisms(auts, pga->m, pcp); /* critical */ /* read_subgroup_rank (&k); */ /* if you want something other than default, change value of k */ k = 0; step_range(k, &pga->s, &upper_step, auts, pga, pcp); if (pga->s != upper_step) { pga->s = upper_step; /* first, find the valid relative step size, pga->s */ find_allowable_subgroup( RELATIVE, cover_tmp_file, group_file, &K, &subset, pga, pcp); } /* now find allowable subgroup which determines the class c + 1 quotient */ subgroup_matrix = find_allowable_subgroup( 2, cover_tmp_file, group_file, &K, &subset, pga, pcp); restore_pcp(cover_tmp_file, pcp); RESET(cover_tmp_file); #if defined(DEBUG) printf("Now restore p-covering group\n"); print_presentation(FALSE, pcp); #endif #if defined(DEBUG) printf("Rank of characteristic subgroup is %d\n", pga->q); #endif store_definition_sets(pga->r, pga->s, pga->s, pga); get_definition_sets(pga); #if defined(DEBUG) pga->print_degree = TRUE; #endif compute_degree(pga); pga->print_degree = FALSE; non_standard = subgroup_to_label(subgroup_matrix, K, subset, pga); /* memory leakage September 1996 */ free_vector(subset, 0); free_matrix(subgroup_matrix, pga->s, 0); if (output == MAX_STANDARD_PRINT) { printf("Non-standard label is %d\n", non_standard); printf("Required step size is %d\n", pga->step_size); printf("Relative step size is %d\n", pga->s); printf("Rank of characteristic subgroup is %d\n", pga->q); } strip_identities(auts, pga, pcp); soluble_group = (pga->soluble || pga->Degree == 1 || pga->nmr_of_perms == 0); if (!soluble_group) { #if defined(GAP_LINK) if (!process_fork) { start_GAP_file(auts, pga, pcp); process_fork = TRUE; } StartGapFile(pga); #elif defined(GAP_LINK_VIA_FILE) start_GAP_file(&LINK_input, auts, pga, pcp); #endif } #if defined(DEBUG) /* pga->print_permutation = TRUE; */ #endif #if defined(TIME) t = runTime(); #endif perms = permute_subgroups(LINK_input, &a, &b, &c, auts, pga, pcp); #if defined(TIME) t = runTime() - t; printf("Time to compute permutations is %.2f seconds\n", t * CLK_SCALE); #endif orbit_option(STANDARDISE, perms, &a, &b, &c, &orbit_length, pga); /* printf ("orbit length is %d \n", orbit_length); */ #if defined(GAP_LINK_VIA_FILE) if (!soluble_group) { CloseFile(LINK_input); } #endif map = find_stabiliser(identity_map, non_standard, auts, perms, a, b, c, orbit_length, pga, pcp); if (pga->final_stage && output >= DEFAULT_STANDARD_PRINT) { printf("\nThe standard presentation for the class %d %d-quotient is\n", pcp->cc, pcp->p); print_presentation(TRUE, pcp); #ifdef HAVE_GMP char *s = pga->upper_bound ? "at most " : ""; /* Originally pq checked the whole automorphism group. * Now it checks only coset reps. of inner automorphisms * i.e. those auts that are in 1-1 correspondence with outer auts. */ printf("Subset of automorphism group to check has order bound %s", s); mpz_out_str(stdout, 10, &(pga->aut_order)); printf("\n"); #endif } #if defined(GAP_LINK) if (process_fork) QuitGap(); #endif free_space(TRUE, perms, orbit_length, a, b, c, pga); /* memory leakage September 1996 */ free_vector(pga->list, 0); free_vector(pga->available, 0); free_vector(pga->offset, 0); return map; } /* find the stabiliser of the representative of the orbit which contains the non-standard allowable subgroup */ static int **find_stabiliser(Logical *identity_map, int non_standard, int ***auts, int **perms, int *a, int *b, char *c, int *orbit_length, struct pga_vars *pga, struct pcp_vars *pcp) { FILE *Status; FILE *OutputFile; Logical soluble_group; int rep[2]; int length[2]; int **map; int i; int word_length = 0; char *word_map; #if defined(TIME) int t = runTime(); #endif soluble_group = (pga->soluble || pga->Degree == 1 || pga->nmr_of_perms == 0); /* what is the orbit representative of non_standard? */ if (soluble_group) rep[1] = abs(a[non_standard]); else { if (a[non_standard] < 0) rep[1] = pga->rep[abs(a[non_standard])]; else rep[1] = abs(a[non_standard]); } /* find the length of the orbit having this representative */ for (i = 1; i <= pga->nmr_orbits && pga->rep[i] != rep[1]; ++i) ; if (pga->rep[i] == rep[1]) { length[1] = orbit_length[i]; if (output == MAX_STANDARD_PRINT) printf("The non-standard subgroup %d has orbit representative %d\n", non_standard, pga->rep[i]); } else { printf("%d is not an orbit representative\n", rep[1]); exit(FAILURE); } /* printf ("True Orbit length is %d\n", length[1]); */ word_map = find_word(&word_length, soluble_group, perms, rep[1], non_standard, length[1], b, c, pga); /* now process this representative and find its stabiliser */ OutputFile = OpenFile("ISOM_XX", "w+"); pga->final_stage = (pga->q == pga->multiplicator_rank); pga->nmr_of_descendants = 0; pga->nmr_of_capables = 0; pga->terminal = TRUE; setup_reps( rep, 1, length, perms, a, b, c, auts, OutputFile, OutputFile, pga, pcp); /* now evaluate the action of standard map on pcp */ map = standard_map( word_map, word_length, identity_map, rep[1], auts, pga, pcp); #if defined(TIME) t = runTime() - t; printf("Time to process representative is %.2f seconds\n", t * CLK_SCALE); #endif RESET(OutputFile); restore_pcp(OutputFile, pcp); if (!pcp->complete) last_class(pcp); Status = OpenFile("ISOM_Status", "w"); if (pga->final_stage) fprintf(Status, "%d ", END_OF_CLASS); else fprintf(Status, "%d ", MIDDLE_OF_CLASS); if (pcp->newgen == 0) fprintf(Status, "%d ", TERMINAL); else fprintf(Status, "%d ", CAPABLE); CloseFile(Status); CloseFile(OutputFile); return map; } void trace(char *word_map, int *depth, int label, int *backptr, char *schreier) { if (schreier[label] != 0) { word_map[++*depth] = schreier[label]; trace(word_map, depth, backptr[label], backptr, schreier); } } /* find word in defining permutations which maps orbit representative to label; store each component of the word of length word_length in array word */ static char *find_word(int *word_length, Logical soluble_group, int **perms, int rep, int non_standard, int orbit_length, int *b, char *c, struct pga_vars *pga) { int perm_number; char *word_map; char *word_perm; int i, l; char *d; char temp; word_map = allocate_char_vector(orbit_length, 1, FALSE); /* we store word which maps non-standard label to orbit representative; in image_of_generator, the word is evaluated starting from the last letter -- hence after computing the word, we reverse it */ if (soluble_group) { d = find_permutation(b, c, pga); l = non_standard; while (l != rep) { word_map[++*word_length] = d[l]; if ((perm_number = pga->map[(int)d[l]]) != 0) l = inverse_image(l, perms[perm_number], pga); } /* reverse word */ for (i = 1; i <= *word_length / 2; ++i) { temp = word_map[i]; word_map[i] = word_map[*word_length - i + 1]; word_map[*word_length - i + 1] = temp; } free_char_vector(d, 1); } else { word_perm = allocate_char_vector(orbit_length, 1, FALSE); trace(word_perm, word_length, non_standard, b, c); for (i = 1; i <= *word_length; ++i) word_map[i] = preimage(word_perm[*word_length - i + 1], pga); free_char_vector(word_perm, 1); } return word_map; } /* compute the automorphism which maps the non-standard subgroup, non_standard, to the orbit representative, rep; the word and its length are supplied as word_map and word_length */ static int **standard_map(char *word_map, int word_length, Logical *identity_map, int rep, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; int nmr_of_generators = y[pcp->clend + pcp->cc - 1] + pga->s; register int pointer = pcp->lused + 1; int cp = pcp->lused; int **standard; int i, j; /* copy the word into y */ for (i = 1; i <= word_length; ++i) y[pointer + i] = word_map[i]; free_char_vector(word_map, 1); y[pointer] = word_length; #if defined(DEBUG) printf("The word is "); print_array(y, pointer, pointer + word_length + 1); #endif pcp->lused += word_length + 1; cp = pcp->lused; map_array_size = pcp->lastg; standard = allocate_matrix(pcp->lastg, nmr_of_generators, 1, FALSE); if (word_length == 0) { for (i = 1; i <= pga->ndgen; ++i) for (j = 1; j <= nmr_of_generators; ++j) standard[i][j] = (i == j) ? 1 : 0; *identity_map = TRUE; } else { for (i = 1; i <= pga->ndgen; ++i) { /* compute image of defining generator i under standard map */ image_of_generator(i, pointer, auts, pga, pcp); /* copy restriction of result into standard array */ for (j = 1; j <= nmr_of_generators; ++j) { standard[i][j] = y[cp + j]; } } *identity_map = FALSE; } y[pointer] = 0; if (!pga->final_stage) list_subgroup(rep, pga, pcp); return standard; } /* find the image of l under the inverse of the supplied permutation */ static int inverse_image(int l, int *perms, struct pga_vars *pga) { register int i; for (i = 1; i <= pga->Degree && perms[i] != l; ++i) ; return i; } /* write a description of the automorphism group of the group presented by the standard presentation to file */ void print_aut_description(int ***central, int ***stabiliser, struct pga_vars *pga, struct pcp_vars *pcp) { FILE *NextClass; int i, j, k; NextClass = OpenFile("ISOM_NextClass", "w+"); fprintf(NextClass, "%d\n", pga->nmr_centrals + pga->nmr_stabilisers); fprintf(NextClass, "%d\n", pcp->lastg); for (i = 1; i <= pga->nmr_centrals; ++i) { for (j = 1; j <= pga->ndgen; ++j) { for (k = 1; k <= pcp->lastg; ++k) fprintf(NextClass, "%d ", central[i][j][k]); fprintf(NextClass, "\n"); } } for (i = 1; i <= pga->nmr_stabilisers; ++i) for (j = 1; j <= pga->ndgen; ++j) { for (k = 1; k <= pcp->lastg; ++k) fprintf(NextClass, "%d ", stabiliser[i][j][k]); fprintf(NextClass, "\n"); } fprintf(NextClass, "%d\n", pga->fixed); fprintf(NextClass, "%d\n", pga->soluble); #ifdef HAVE_GMP mpz_out_str(NextClass, 10, &pga->aut_order); fprintf(NextClass, "\n"); #endif CloseFile(NextClass); } /* list orbit representative as generators of subgroup to factor from p-covering group */ static void list_subgroup(int rep, struct pga_vars *pga, struct pcp_vars *pcp) { register int lastg = pcp->lastg; register int i, j, k; FILE *Subgroup; int word[MAXWORD]; int *subset; int **S; int index; int length = 0; if (pga->s == pga->q) return; Subgroup = OpenFile("ISOM_Subgroup", "a+"); S = label_to_subgroup(&index, &subset, rep, pga); #if defined(DEBUG) printf("The standard matrix is\n"); print_matrix(S, pga->s, pga->q); #endif for (i = 0; i < pga->q; ++i) { if (1 << i & pga->list[index]) continue; for (j = 1; j <= lastg; ++j) word[j] = 0; for (j = 0; j < pga->s; ++j) if (S[j][i] != 0) word[pcp->ccbeg + subset[j]] = pga->p - S[j][i]; word[pcp->ccbeg + i] = 1; #if defined(DEBUG) printf("The subgroup generator is "); print_array(word, pcp->ccbeg, pcp->ccbeg + pga->q); #endif length = 0; for (k = pcp->ccbeg; k <= lastg; ++k) if (word[k] != 0) ++length; fprintf(Subgroup, "%d\n", COLLECT); for (k = pcp->ccbeg; k <= lastg; ++k) { if (word[k] != 0) { fprintf(Subgroup, "x%d^%d", k, word[k]); if (--length != 0) fprintf(Subgroup, " * "); } } fprintf(Subgroup, ";\n"); } /* memory leakage September 1996 */ free_matrix(S, pga->s, 0); free_vector(subset, 0); /* write out flag to indicate that we should now eliminate redundant generators */ fprintf(Subgroup, "%d\n", ELIMINATE); CloseFile(Subgroup); } /* for each automorphism in turn, read its actions on each of the pcp generators of the Frattini quotient */ int ***read_auts_from_file(FILE *file, int *nmr_of_auts, struct pcp_vars *pcp) { register int *y = y_address; register int i, j, k; int ***auts; int nmr_of_exponents, nmr_of_generators; int nmr_items; nmr_items = fscanf(file, "%d", nmr_of_auts); verify_read(nmr_items, 1); nmr_items = fscanf(file, "%d", &nmr_of_exponents); verify_read(nmr_items, 1); nmr_of_generators = y[pcp->clend + 1]; auts = allocate_array(*nmr_of_auts, pcp->lastg, pcp->lastg, TRUE); for (i = 1; i <= *nmr_of_auts; ++i) { for (j = 1; j <= nmr_of_generators; ++j) { for (k = 1; k <= nmr_of_exponents; ++k) nmr_items = fscanf(file, "%d", &auts[i][j][k]); verify_read(nmr_items, 1); } } return auts; } #endif anupq-3.3.0/src/setup_reps.c000644 000766 000024 00000016455 14355420571 016275 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A setup_reps.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "pq_functions.h" #include "global.h" #include "standard.h" /* factor out the allowable subgroups whose labels are listed in the array reps; assemble the necessary automorphism information and save the descriptions to file */ void setup_reps(int *reps, int nmr_of_reps, int *orbit_length, int **perms, int *a, int *b, char *c, int ***auts, FILE *descendant_file, FILE *covers_file, struct pga_vars *pga, struct pcp_vars *pcp) { char *d = 0; /* used in stabiliser computation */ FILE *tmp_file; struct pga_vars original; /* copy of pga structure */ register int i; Logical soluble_group; /* indicates that stabilisers may be computed using soluble machinery */ #ifdef HAVE_GMP MP_INT original_aut; /* copy of automorphism order */ #endif soluble_group = (pga->soluble || pga->Degree == 1 || pga->nmr_of_perms == 0); tmp_file = TemporaryFile(); save_pcp(tmp_file, pcp); if (soluble_group) { d = find_permutation(b, c, pga); if (pga->print_stabiliser_array) { printf("The array D is \n"); print_chars(d, 1, pga->nmr_subgroups + 1); } } #ifdef HAVE_GMP /* first record current automorphism group order */ mpz_init_set(&original_aut, &pga->aut_order); mpz_clear(&pga->aut_order); #endif /* keep copy of pga */ original = *pga; #ifdef HAVE_GMP /* now reset automorphism order in pga */ mpz_init_set(&pga->aut_order, &original_aut); #endif for (i = 1; i <= nmr_of_reps; ++i) { pga->fixed = pga->s; if (pga->final_stage) { ++original.nmr_of_descendants; update_name(pcp->ident, original.nmr_of_descendants, pga->s); } process_rep(perms, a, b, c, d, auts, reps[i], orbit_length[i], tmp_file, descendant_file, covers_file, pga, pcp); if (pga->final_stage && pga->capable) { ++original.nmr_of_capables; if (pga->trace) printf("Capable group #%d\n", original.nmr_of_capables); } /* revert to original pga structure */ if (!StandardPresentation) { #ifdef HAVE_GMP mpz_clear(&pga->aut_order); #endif *pga = original; #ifdef HAVE_GMP mpz_init_set(&pga->aut_order, &original_aut); #endif } } if (soluble_group) free(++d); #ifdef HAVE_GMP mpz_clear(&original_aut); #endif CloseFile(tmp_file); } /* process orbit representative; if reduced p-covering group, save description to covers_file, otherwise to descendant file */ void process_rep(int **perms, int *a, int *b, char *c, char *d, int ***auts, int rep, int orbit_length, FILE *tmp_file, FILE *descendant_file, FILE *covers_file, struct pga_vars *pga, struct pcp_vars *pcp) { int index; int *subset; int ***central = 0; int ***stabiliser = 0; int **S = 0; int *seq = 0; FILE *file = 0; FILE *GAP_library = 0; int lused, rank_of_cover; /* construct the presentation for the descendant and assemble the necessary automorphism information */ S = label_to_subgroup(&index, &subset, rep, pga); if (pga->print_subgroup) { printf("The standard matrix for the allowable subgroup is:\n"); print_matrix(S, pga->s, pga->q); } factorise_subgroup(S, index, subset, pga, pcp); free_matrix(S, pga->s, 0); free_vector(subset, 0); if ((pga->print_group && pga->final_stage) || pga->print_reduced_cover) { print_presentation(FALSE, pcp); print_structure(1, pcp->lastg, pcp); print_pcp_relations(pcp); printf("\n"); } if (pga->final_stage) { central = immediate_descendant(descendant_file, pga, pcp); /* should we write a compact description to file? */ if ((pga->capable || pga->terminal) && (Compact_Description == TRUE && (Compact_Order <= pcp->lastg || Compact_Order == 0))) { seq = compact_description(TRUE, pcp); free_vector(seq, 1); } /* should we write a description of group to GAP file? */ if (pga->capable || pga->terminal) { if (Group_library == GAP_LIBRARY) { if (Group_library_file != NULL) GAP_library = OpenFile(Group_library_file, "a+"); else GAP_library = OpenFile("GAP_library", "a+"); write_GAP_library(GAP_library, pcp); CloseFile(GAP_library); } } /* if the group is not capable and we do not want to process terminal groups, we are finished */ if (!pga->capable && !pga->terminal) { /* first restore the original p-covering group */ RESET(tmp_file); restore_pcp(tmp_file, pcp); return; } } else { save_pcp(covers_file, pcp); /* if characteristic subgroup in nucleus, revise the nuclear rank */ if (pga->s < pcp->newgen) pcp->newgen = pga->nuclear_rank + pga->s - pga->q; set_values(pga, pcp); pga->nmr_centrals = 0; } #ifdef HAVE_GMP update_autgp_order(orbit_length, pga, pcp); #endif /* restore the original p-covering group before computing stabiliser */ RESET(tmp_file); restore_pcp(tmp_file, pcp); /* note following information before computing stabiliser */ rank_of_cover = pcp->lastg; lused = pcp->lused; stabiliser = stabiliser_of_rep(perms, rep, orbit_length, a, b, c, d, auts, pga, pcp); #ifdef HAVE_GMP if (pga->final_stage) report_autgp_order(pga, pcp); #endif if (pga->final_stage && (pga->capable || pga->terminal)) { if (Group_library == GAP_LIBRARY) { GAP_library = OpenFile("GAP_library", "a+"); GAP_auts(GAP_library, central, stabiliser, pga, pcp); CloseFile(GAP_library); } } if (pga->final_stage) { if (StandardPresentation) pga->fixed = 0; else initialise_pga(pga, pcp); pga->step_size = 0; } /* save structure + automorphism information */ file = (pga->final_stage ? descendant_file : covers_file); save_pga(file, central, stabiliser, pga, pcp); #if defined(GROUP) #if defined(STANDARD_PCP) if (StandardPresentation) print_aut_description(central, stabiliser, pga, pcp); #endif #endif if (pga->nmr_centrals != 0) free_array(central, pga->nmr_centrals, pga->ndgen, 1); if (pga->nmr_stabilisers != 0) { free_array(stabiliser, pga->nmr_stabilisers, pga->ndgen, 1); } pcp->lastg = rank_of_cover; pcp->lused = lused; } anupq-3.3.0/src/exponent_info.c000644 000766 000024 00000006253 14355420571 016752 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A exponent_info.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" #include "pcp_vars.h" #include "exp_vars.h" #include "pq_functions.h" /* read information for exponent checking */ void exponent_info(struct exp_vars *exp_flag, struct pcp_vars *pcp) { Logical reading = TRUE; Logical Default; read_value(TRUE, "Accept default exponent checking? ", &Default, INT_MIN); if (Default) { exp_flag->list = (pcp->m == 0) ? ALL_WORDS : REDUCED_LIST; exp_flag->process = TRUE; exp_flag->complete = FALSE; exp_flag->partitions = FALSE; exp_flag->filter = FALSE; exp_flag->start_process = 0; exp_flag->report_unit = 0; exp_flag->word_list = FALSE; exp_flag->all_trivial = TRUE; exp_flag->check_exponent = FALSE; return; } while (reading) { read_value(TRUE, "Complete list (1), reduced list (2), or word list (3)? ", &exp_flag->list, 1); reading = !(exp_flag->list == ALL_WORDS || exp_flag->list == REDUCED_LIST || exp_flag->list == INITIAL_SEGMENT); if (reading) printf("Supplied value must be one of %d, %d, or %d\n", ALL_WORDS, REDUCED_LIST, INITIAL_SEGMENT); } read_value(TRUE, "Power valid words and echelonise results? ", &exp_flag->process, INT_MIN); if (exp_flag->process) { read_value(TRUE, "Input number of the first valid word to process? ", &exp_flag->start_process, 0); read_value(TRUE, "Report after collecting how many words (0 for no report)? ", &exp_flag->report_unit, 0); } else { exp_flag->start_process = 0; exp_flag->report_unit = 0; } read_value(TRUE, "Print list prior to applying filters? ", &exp_flag->complete, INT_MIN); read_value(TRUE, "Identify filter applied to remove word? ", &exp_flag->filter, INT_MIN); read_value(TRUE, "Write list of test words to relation file? ", &exp_flag->word_list, INT_MIN); exp_flag->partitions = FALSE; } /* default exponent flag settings */ void initialise_exponent(struct exp_vars *exp_flag, struct pcp_vars *pcp) { int length; exp_flag->list = ALL_WORDS; exp_flag->process = TRUE; exp_flag->complete = FALSE; exp_flag->partitions = FALSE; exp_flag->filter = FALSE; exp_flag->start_process = 0; exp_flag->report_unit = 0; exp_flag->word_list = FALSE; exp_flag->all_trivial = TRUE; exp_flag->check_exponent = FALSE; if (pcp->m != 0) { length = MAX(1, pcp->lastg - pcp->ccbeg + 1); exp_flag->queue = allocate_vector(length, 1, FALSE); exp_flag->queue_length = 0; } } anupq-3.3.0/src/exponent_auts.c000644 000766 000024 00000011705 14355420571 016771 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A exponent_auts.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" /* save description of automorphisms used in exponent checking to file */ void save_auts(FILE *ofp, int *head, int *list, struct pcp_vars *pcp) { register int alpha; register int offset; register int required_offset; register int prev = 0; register int m = pcp->m; register int required_ptr, stored_ptr; int required_length, stored_length; register int original, diff; register int j; int list_length; int retain; int nmr_items; int *copy_head; /* the action on more than lastg generators may be stored in list; if this is the case, establish how many entries from the array list must be stored in order to retain the description of the automorphisms on lastg generators */ original = head[0]; if (head[0] > pcp->lastg) { copy_head = allocate_vector(pcp->lastg * m + 1, 0, FALSE); list_length = 0; retain = pcp->lastg; diff = 0; for (alpha = 1; alpha <= m; ++alpha) { offset = (alpha - 1) * original; required_offset = (alpha - 1) * retain; for (j = 1; j <= retain; ++j) copy_head[required_offset + j] = head[offset + j] - diff; required_ptr = head[offset + retain]; stored_ptr = head[offset + original]; stored_length = stored_ptr + list[stored_ptr + 1] + 1 - prev; required_length = required_ptr + list[required_ptr + 1] + 1 - prev; diff += stored_length - required_length; list_length += required_length; prev += stored_length; } } else { copy_head = head; retain = head[0]; list_length = list[0]; } prev = 0; nmr_items = fwrite(&retain, sizeof(int), 1, ofp); verify_read(nmr_items, 1); nmr_items = fwrite(&list_length, sizeof(int), 1, ofp); verify_read(nmr_items, 1); for (alpha = 1; alpha <= m; ++alpha) { offset = (alpha - 1) * original; required_offset = (alpha - 1) * retain; nmr_items = fwrite(copy_head + required_offset + 1, sizeof(int), retain, ofp); verify_read(nmr_items, retain); required_ptr = head[offset + retain]; stored_ptr = head[offset + original]; stored_length = stored_ptr + list[stored_ptr + 1] + 1 - prev; required_length = required_ptr + list[required_ptr + 1] + 1 - prev; nmr_items = fwrite(&required_length, sizeof(int), 1, ofp); verify_read(nmr_items, 1); nmr_items = fwrite(list + prev + 1, sizeof(int), required_length, ofp); verify_read(nmr_items, required_length); prev += stored_length; } if (original != retain) free_vector(copy_head, 0); RESET(ofp); } /* restore automorphisms used in exponent checking from file ifp; nmr_saved = nmr of generators whose images have been saved to file; retain = nmr of generators whose images are to be retained; new_index = index of last used position in array list */ int restore_auts(FILE *ifp, int offset, int nmr_saved, int retain, int *new_index, int *head, int *list) { int alpha_length; /* length of the automorphism description */ int i, add; int nmr_items; nmr_items = fread(head + offset + 1, sizeof(int), nmr_saved, ifp); verify_read(nmr_items, nmr_saved); add = *new_index - head[offset + 1]; for (i = 1; i <= nmr_saved; ++i) head[offset + i] += add; nmr_items = fread(&alpha_length, sizeof(int), 1, ifp); verify_read(nmr_items, 1); nmr_items = fread(list + *new_index + 1, sizeof(int), alpha_length, ifp); verify_read(nmr_items, alpha_length); *new_index = head[offset + retain] + list[head[offset + retain] + 1] + 1; return alpha_length; } /* restore automorphisms used in exponent checking from file */ void restore_automorphisms(FILE *ifp, int **head, int **list, struct pcp_vars *pcp) { int new_index = 0; int offset; register int alpha; int nmr_saved; int list_length; int retain; int nmr_items; nmr_items = fread(&nmr_saved, sizeof(int), 1, ifp); verify_read(nmr_items, 1); nmr_items = fread(&list_length, sizeof(int), 1, ifp); verify_read(nmr_items, 1); *head = allocate_vector(nmr_saved * pcp->m + 1, 0, FALSE); (*head)[0] = nmr_saved; *list = allocate_vector(list_length + 1, 0, FALSE); (*list)[0] = list_length; retain = MIN(pcp->lastg, nmr_saved); for (alpha = 1; alpha <= pcp->m; ++alpha) { offset = (alpha - 1) * retain; restore_auts(ifp, offset, nmr_saved, retain, &new_index, *head, *list); } (*head)[0] = retain; printf("Automorphisms read from file\n"); } anupq-3.3.0/src/TemporaryFile.c000644 000766 000024 00000001402 14355420571 016650 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A TemporaryFile.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pq_functions.h" #include "constants.h" /* set up a temporary file and return an appropriate FILE * indicator; if in Unix environment, open temporary file in directory specified by value of environment variable TMPDIR, else on /var/tmp */ FILE *TemporaryFile(void) { FILE *file = tmpfile(); if (file == NULL) { perror("Cannot open temporary file"); exit(FAILURE); } return file; } anupq-3.3.0/src/stabiliser.c000644 000766 000024 00000030441 14355420571 016234 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A stabiliser.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "pq_functions.h" #include "constants.h" /*static int ***setup_identity_auts (int nmr_of_generators, int ***auts, struct * pga_vars *pga);*/ static void evaluate_generators(int pointer, int nmr_of_generators, int ***stabiliser, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp); /* find the stabiliser of the representative, rep; all of the permutations are stored in perms; nmr_of_generators is the number of pcp generators in the descendant */ int ***stabiliser_of_rep(int **perms, int rep, int orbit_length, int *a, int *b, char *c, char *d, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; int ***stabiliser = 0; int pointer = pcp->lused + 1; Logical soluble_group = (pga->soluble || pga->Degree == 1 || pga->nmr_of_perms == 0); int nmr_of_generators; int restriction; int j; int *relative; nmr_of_generators = pga->final_stage ? y[pcp->clend + pcp->cc - 1] + pga->s : pcp->lastg + pga->s - pga->q; pga->nmr_stabilisers = 0; /* if necessary, compute the stabiliser of the representative in the insoluble portion using a system call to GAP -- this is done before setting up the remainder of the automorphisms to minimise the size of the workspace created by the system call */ if (!soluble_group) { #if defined(GAP_LINK) || defined(GAP_LINK_VIA_FILE) insoluble_stab_gens(rep, orbit_length, pga, pcp); #else printf("To compute stabilisers in insoluble automorphism groups, "); printf("you must compile pq\nwith the compiler flag GAP_LINK set\n"); exit(FAILURE); #endif } /* determine the generators for the stabiliser if soluble */ if (soluble_group) { stabiliser_generators(perms, rep, a, b, c, d, auts, pga, pcp); /* allocate space for stabiliser */ stabiliser = allocate_array( pga->nmr_stabilisers, pga->ndgen, nmr_of_generators, TRUE); /* construct the generators of the stabiliser in the soluble group as automorphisms */ if (pga->nmr_stabilisers != 0 && soluble_group) { restriction = pga->final_stage ? y[pcp->clend + pcp->cc - 1] + pga->s : y[pcp->clend + pcp->cc - 1]; evaluate_generators(pointer, restriction, stabiliser, auts, pga, pcp); } } else { /* read in the generators of the stabiliser in the insoluble case -- these were computed using GAP */ #if defined(GAP_LINK) || defined(GAP_LINK_VIA_FILE) stabiliser = read_stabiliser_gens(nmr_of_generators, stabiliser, pga, pcp); #endif } pcp->lastg = nmr_of_generators; if (pga->final_stage) { /* include relative orders for central generators */ relative = allocate_vector(pga->nmr_soluble + pga->nmr_centrals, 1, 0); for (j = pga->nmr_soluble; j >= 1; --j) relative[pga->nmr_centrals + j] = pga->relative[j]; for (j = 1; j <= pga->nmr_centrals; ++j) relative[j] = pga->p; /* free_vector (pga->relative, 1); */ pga->relative = relative; pga->nmr_soluble += pga->nmr_centrals; } if (pga->print_automorphisms && pga->final_stage) { /* if (pga->print_automorphisms) { */ printf("Number of stabiliser generators is %d\n", pga->nmr_stabilisers); print_auts(pga->nmr_stabilisers, pga->ndgen, stabiliser, pcp); } pga->m = pga->nmr_centrals + pga->nmr_stabilisers; return stabiliser; } /* find generators for the stabiliser for orbit representative, rep; store each word in y, preceded by its length */ void stabiliser_generators(int **perms, int rep, int *a, int *b, char *c, char *d, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; register int alpha, k, next; register int word_length; register int pointer = pcp->lused + 1; int index; int perm_number; /* let k run over the elements of orbit with representative rep; if c[k] >= 2, then some permutation did not extend the orbit of k; hence, there is some product of subsequent permutations which stabilises the representative a[k] */ k = rep; while (k != 0) { if (c[k] >= 2) { for (alpha = d[k] + 1; alpha <= d[k] + c[k] - 1; ++alpha) { ++pga->nmr_stabilisers; word_length = 1; y[pointer + word_length] = alpha; /* does automorphism alpha induce a trivial permutation? */ if ((perm_number = pga->map[alpha]) == 0) next = a[k]; else { next = pga->space_efficient ? find_image(a[k], auts[alpha], pga, pcp) : perms[perm_number][a[k]]; } while (next != a[k]) { index = d[next]; ++word_length; y[pointer + word_length] = index; if ((perm_number = pga->map[index]) != 0) { next = pga->space_efficient ? find_image(next, auts[index], pga, pcp) : perms[perm_number][next]; } } y[pointer] = word_length; pointer += word_length + 1; } } k = b[k]; } pcp->lused = pointer; } /* evaluate the action of a stabiliser of a representative on the defining generators of the group; each stabiliser generator is stored as a word in the automorphisms, auts, of the parent, where y[pointer] = length of word defining first generator */ static void evaluate_generators(int pointer, int nmr_of_generators, int ***stabiliser, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; register int i, j; register int gamma; int cp = pcp->lused; for (gamma = 1; gamma <= pga->nmr_stabilisers; ++gamma) { for (i = 1; i <= pga->ndgen; ++i) { /* compute image of defining generator i under generator gamma of stabiliser */ image_of_generator(i, pointer, auts, pga, pcp); /* copy restriction of result into stabiliser array */ for (j = 1; j <= nmr_of_generators; ++j) stabiliser[gamma][i][j] = y[cp + j]; } pointer += y[pointer] + 1; } } /* compute the image of group generator under a stabiliser generator, whose definition as a word in the automorphisms, auts, of the parent is stored at y[pointer + 1], .., y[pointer + y[pointer]] */ void image_of_generator(int generator, int pointer, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; register int i, j, k, l; register int alpha, letter; register int length, exp; int cp = pcp->lused; int ptr = cp + pcp->lastg; int nmr_of_letters = y[pointer]; register int bound; /* alpha is the last letter in the stabiliser generator word */ alpha = y[pointer + nmr_of_letters]; /* set up the image of gen under the action of alpha at cp */ for (i = 1; i <= pcp->lastg; ++i) y[cp + i] = auts[alpha][generator][i]; /* for each remaining letter in the generator word, set up as a word its action on each of the elements of the image under alpha */ for (letter = nmr_of_letters - 1; letter >= 1; --letter) { alpha = y[pointer + letter]; /* set up image under alpha */ length = 0; for (i = 1; i <= pcp->lastg; ++i) { if ((exp = y[cp + i]) > 0) { /* set up exp copies of the image of generator i under action of automorphism alpha */ for (j = 1; j <= exp; ++j) { for (k = 1; k <= pcp->lastg; ++k) { bound = auts[alpha][i][k]; for (l = 1; l <= bound; ++l) { ++length; y[ptr + length] = k; } } } } } /* now zero out previous result */ for (i = 1; i <= pcp->lastg; ++i) y[cp + i] = 0; /* now collect the result of the composition of maps so far to cp */ for (l = 1; l <= length; ++l) collect(y[ptr + l], cp, pcp); } } /* find which automorphism, alpha, induces the permutation with index perm */ int preimage(int perm, struct pga_vars *pga) { int alpha; for (alpha = 1; alpha <= pga->m; ++alpha) if (pga->map[alpha] == perm) return alpha; printf("*** Error in function preimage ***\n"); exit(FAILURE); } /* set up those automorphisms which induced the identity on the p-multiplicator as the leading elements of the stabiliser */ /* static int ***setup_identity_auts (int nmr_of_generators, int ***auts, struct pga_vars *pga) { int alpha, i = 0, j, k; int ***stabiliser; stabiliser = allocate_array (pga->nmr_stabilisers, pga->ndgen, nmr_of_generators, TRUE); for (alpha = 1; alpha <= pga->m; ++alpha) { if (pga->map[alpha] == 0) { ++i; for (j = 1; j <= pga->ndgen; ++j) for (k = 1; k <= nmr_of_generators; ++k) stabiliser[i][j][k] = auts[alpha][j][k]; } } return stabiliser; } */ #if defined(GAP_LINK_VIA_FILE) /* read the insoluble stabiliser generators from LINK file; each list of stabilisers is preceded by a list of integers -- the first indicates whether the stabiliser is soluble; the second is the number of soluble generators for the stabiliser; for each soluble generator, its relative order is now listed; finally the total number of generators is listed */ int ***read_stabiliser_gens(int nmr_of_generators, int ***soluble_generators, struct pga_vars *pga, struct pcp_vars *pcp) { register int ndgen = pga->ndgen; register int gamma, i, j; FILE *LINK_output; int ***stabiliser; int nmr_items; int temp; LINK_output = OpenFileInput("LINK_output"); nmr_items = fscanf(LINK_output, "%d", &pga->soluble); verify_read(nmr_items, 1); nmr_items = fscanf(LINK_output, "%d", &pga->nmr_soluble); verify_read(nmr_items, 1); pga->relative = allocate_vector(pga->nmr_soluble, 1, 0); for (j = 1; j <= pga->nmr_soluble; ++j) { nmr_items = fscanf(LINK_output, "%d", &temp); verify_read(nmr_items, 1); pga->relative[j] = temp; } nmr_items = fscanf(LINK_output, "%d", &pga->nmr_stabilisers); verify_read(nmr_items, 1); #ifdef DEBUG1 printf("Nmr of soluble gens for stabiliser is %d\n", pga->nmr_soluble); printf("FROM GAP Relative orders are "); for (i = 1; i <= pga->nmr_soluble; ++i) printf("%d ", pga->relative[i]); printf("\n"); printf("Total Nmr of gens for stabiliser is %d\n", pga->nmr_stabilisers); #endif stabiliser = allocate_array(pga->nmr_stabilisers, ndgen, nmr_of_generators, TRUE); /* now read in the insoluble generators */ for (gamma = 1; gamma <= pga->nmr_stabilisers; ++gamma) for (i = 1; i <= ndgen; ++i) for (j = 1; j <= pcp->ccbeg - 1; ++j) { nmr_items = fscanf(LINK_output, "%d", &stabiliser[gamma][i][j]); verify_read(nmr_items, 1); } CloseFile(LINK_output); return stabiliser; } #endif anupq-3.3.0/src/pgroup.c000644 000766 000024 00000014232 14355420571 015407 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A pgroup.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "menus.h" #include "pq_functions.h" #include "standard.h" #if defined(CARANTI) #define CARANTI_DISPLAY 7 #define MAX_PGA_OPTION 8 #else #define MAX_PGA_OPTION 7 #endif /* coordinating routine for the pgroup generation part of the program; group_present flag indicates whether a group description has been constructed or restored in previous menu */ void pgroup_generation(Logical *group_present, struct pcp_vars *pcp) { register int *y = y_address; struct pga_vars pga; struct pga_vars flag; int option = 0; int subgroup_rank = 0; // EVIL HACK: preserve StartName across invocations of this function. // Fixes https://github.com/gap-packages/anupq/issues/26 static char *StartName = 0; FILE *StartFile = 0; int ***auts = 0; int t; int group_nmr = 1; int *step_sequence = NULL; int class_bound, order_bound; int nmr_of_exponents; Logical new_group = FALSE; StandardPresentation = FALSE; initialise_pga(&pga, pcp); pga.m = 0; pga.nmr_soluble = 0; if (*group_present) { pga.ndgen = y[pcp->clend + 1]; set_values(&pga, pcp); /* it's possible that the complete flag may be set */ pcp->complete = FALSE; } list_pga_menu(); do { option = read_option(MAX_PGA_OPTION); switch (option) { case -1: list_pga_menu(); break; case SUPPLY_AUTOMORPHISMS: auts = read_auts(PGA, &pga.m, &nmr_of_exponents, pcp); #ifdef HAVE_GMP autgp_order(&pga, pcp); #endif new_group = TRUE; read_value( TRUE, "Input number of soluble generators for automorphism group: ", &pga.nmr_soluble, INT_MIN); if (pga.nmr_soluble > 0) { int k; pga.relative = allocate_vector(pga.nmr_soluble, 1, FALSE); for (k = 1; k <= pga.nmr_soluble; ++k) { printf("Input relative order of soluble generator %d: ", k); read_value(TRUE, "", &pga.relative[k], 0); } } start_group(&StartFile, auts, &pga, pcp); break; case EXTEND_AUTOMORPHISMS: extend_automorphisms(auts, pga.m, pcp); print_auts(pga.m, pcp->lastg, auts, pcp); break; case RESTORE_GROUP: StartName = GetString("Enter input file name: "); StartFile = OpenFileInput(StartName); new_group = FALSE; if (StartFile != NULL) { read_value(TRUE, "Which group? ", &group_nmr, 0); auts = restore_group(TRUE, StartFile, group_nmr, &pga, pcp); RESET(StartFile); *group_present = TRUE; } CloseFile(StartFile); break; case DISPLAY_GROUP: print_presentation(FALSE, pcp); print_structure(1, pcp->lastg, pcp); print_pcp_relations(pcp); break; case ITERATION: t = runTime(); /* it's possible that the complete flag may be set */ pcp->complete = FALSE; if (pcp->newgen == 0) { --pcp->cc; print_group_details(&pga, pcp); invalid_group(pcp); if (!isatty(0)) exit(FAILURE); } else { if (new_group) start_group(&StartFile, auts, &pga, pcp); else StartFile = OpenFile(StartName, "r"); /* free_array (auts, pga.m, pcp->lastg, 1); */ pga.nmr_of_perms = pga.m; iteration_information(&subgroup_rank, &flag, &class_bound, &order_bound, &step_sequence, &pga, pcp); iteration(1, step_sequence, subgroup_rank, &flag, StartFile, group_nmr, class_bound, order_bound, &pga, pcp); if (!new_group) { StartFile = OpenFile(StartName, "r"); auts = restore_group(TRUE, StartFile, group_nmr, &pga, pcp); } else { RESET(StartFile); auts = restore_group(TRUE, StartFile, 1, &pga, pcp); } t = runTime() - t; printf("Construction of descendants took %.2f seconds\n", t * CLK_SCALE); } CloseFile(StartFile); break; case INTERACTIVE_PGA: interactive_pga(*group_present, StartFile, group_nmr, auts, &pga, pcp); break; #ifdef CARANTI case CARANTI_DISPLAY: if (!pcp->complete) last_class(pcp); print_structure(1, pcp->lastg, pcp); print_pcp_relations(pcp); print_auts(pga.m, pcp->ndgen, auts, pcp); break; #endif case EXIT: case MAX_PGA_OPTION: printf("Exiting from p-group generation\n"); break; } /* switch */ } while (option != EXIT && option != MAX_PGA_OPTION); } /* list available menu options */ void list_pga_menu(void) { printf("\nMenu for p-Group Generation\n"); printf("-----------------------------\n"); printf("%d. Read automorphism information for starting group\n", SUPPLY_AUTOMORPHISMS); printf("%d. Extend and display automorphisms\n", EXTEND_AUTOMORPHISMS); printf("%d. Specify input file and group number\n", RESTORE_GROUP); printf("%d. List group presentation\n", DISPLAY_GROUP); printf("%d. Construct descendants\n", ITERATION); printf("%d. Advanced p-group generation menu\n", INTERACTIVE_PGA); printf("%d. Exit to basic menu\n", MAX_PGA_OPTION); } anupq-3.3.0/src/store_definition_sets.c000644 000766 000024 00000002373 14355420571 020500 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A store_definition_sets.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pga_vars.h" #include "pq_functions.h" /* set up the maximum storage space required for the definition sets -- this is the maximum of r choose s where lower_step <= s <= upper_step */ void store_definition_sets(int r, int lower_step, int upper_step, struct pga_vars *pga) { int s, nmr_of_sets = 0; for (s = lower_step; s <= upper_step; ++s) nmr_of_sets = MAX(nmr_of_sets, choose(r, s)); pga->list = allocate_vector(nmr_of_sets, 0, FALSE); pga->available = allocate_vector(nmr_of_sets, 0, FALSE); pga->offset = allocate_vector(nmr_of_sets, 0, FALSE); } /* calculate r choose s */ int choose(int r, int s) { register int i; int binom = 1; for (i = 1; i <= s; ++i) { /* after the ith pass of the loop binom == binom(r, i) */ binom *= (r + 1 - i); binom /= i; } return binom; } anupq-3.3.0/src/report_error.c000644 000766 000024 00000001315 14355420571 016615 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A report_error.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" /* print a run-time error message -- it usually occurs when a relation references an unknown generator */ void report_error(int a, int b, int c) { printf("The program has a run-time error. Please "); printf("check that all generators\nused in the relations "); printf("are declared in the generator list.\n"); exit(INPUT_ERROR); } anupq-3.3.0/src/step_range.c000644 000766 000024 00000002403 14355420571 016217 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A step_range.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" /* find the range of permitted step sizes */ void step_range(int k, int *lower_step, int *upper_step, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { /* the k-initial segment subgroup must include those generators previously fixed */ k = MAX(k, pga->fixed); /* find the rank of the characteristic closure of k-initial segment subgroup of the p-multiplicator */ pga->q = close_subgroup(k, auts, pga, pcp); /* what is the rank of the relative nucleus? */ pga->r = MIN(pga->q, pga->nuclear_rank); /* is the rank of the subgroup < nuclear rank? */ if (pga->q < pga->nuclear_rank) *lower_step = MAX(pga->fixed, pga->step_size + pga->q - pga->nuclear_rank); else *lower_step = pga->step_size; *upper_step = MIN(pga->step_size, pga->q); } anupq-3.3.0/src/CloseFile.c000644 000766 000024 00000000755 14355420571 015745 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A CloseFile.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" /* close file */ void CloseFile(FILE *file) { if (fclose(file) != 0) { perror(NULL); exit(FAILURE); } } anupq-3.3.0/src/close_subgroup.c000644 000766 000024 00000002631 14355420571 017126 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A close_subgroup.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" /* return the rank, t, of the smallest characteristic, k-initial segment subgroup in the p-multiplicator */ int close_subgroup(int k, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; register int alpha, i, j; int t = MIN(k + 1, pga->multiplicator_rank); /* least possible rank value */ int n = y[pcp->clend + pcp->cc - 1]; /* number of pcp generators of group */ Logical complete = (t == pga->multiplicator_rank); int start = t; for (alpha = 1; alpha <= pga->m && !complete; ++alpha) { i = n; while (i < n + t && !complete) { ++i; j = y[pcp->clend + pcp->cc]; /* find the last non-zero entry in the image of generator i */ while (auts[alpha][i][j] == 0 && j > n + t) --j; t = j - n; complete = (t == pga->multiplicator_rank); } } /* if rank of closure has increased, must now close new subgroup */ if (t != start) t = close_subgroup(t - 1, auts, pga, pcp); return t; } anupq-3.3.0/src/pquotient.c000644 000766 000024 00000005717 14355420571 016133 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A pquotient.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" static int check_for_error(struct pcp_vars *pcp); /* coordinating routine for calculation of power-commutator presentation */ int pquotient( int max_class, int output, FILE *file, int format, struct pcp_vars *pcp) /* maximum class of p-quotient to be constructed */ /* determines level of output */ /* file containing input presentation */ /* input format for data */ { int *auts; Logical report; /* read parameters for computation */ if (format == BASIC || format == PRETTY) { read_parameters(format, &max_class, &output, pcp); if (!pcp->valid) { if (isatty(0)) return FAILURE; else exit(INPUT_ERROR); } } else if (format == FILE_INPUT) { if (pretty_filter(file, &max_class, &output, pcp) == INPUT_ERROR) { if (isatty(0)) return FAILURE; else exit(INPUT_ERROR); } if (!pcp->valid) { if (isatty(0)) return FAILURE; else exit(INPUT_ERROR); } } /* if appropriate, print start message for pq */ if (output > 0 && pcp->cc == 1 && file == stdin) { printf("\nLower exponent-%d central series for %s\n", pcp->p, pcp->ident); } /* now calculate the pcp, proceeding class by class */ do { report = pcp->complete; next_class(FALSE, &auts, &auts, pcp); if (check_for_error(pcp)) return FAILURE; if (output != 0 && !pcp->complete) print_presentation(pcp->diagn, pcp); if (report || (output == 1 && pcp->complete) || pcp->lastg < 1) text(5, pcp->cc, pcp->p, pcp->lastg, 0); if ((pcp->cc > 1 && pcp->cc == pcp->nocset) || pcp->complete) break; } while (pcp->cc < max_class); /* if necessary, calculate p-multiplicator */ if (pcp->cover) { pcp->multiplicator = TRUE; next_class(FALSE, &auts, &auts, pcp); /* reset flag which affects next_class computation */ pcp->multiplicator = FALSE; if (check_for_error(pcp)) return FAILURE; text(12, pcp->p, pcp->lastg - pcp->ccbeg + 1, 0, 0); if (output != 0) print_presentation(pcp->fullop, pcp); } return SUCCESS; } static int check_for_error(struct pcp_vars *pcp) { /* insufficient space */ if (pcp->overflow) { /* text (11, pcp->newgen, 0, 0, 0); */ if (!isatty(0)) exit(FAILURE); else return 1; } /* validity error */ if (!pcp->valid) { text(16, 0, 0, 0, 0); if (!isatty(0)) exit(INPUT_ERROR); else return 1; } return 0; } anupq-3.3.0/src/multiply_word.c000644 000766 000024 00000001644 14355420571 017010 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A multiply_word.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #if defined(GROUP) /* post-multiply exponent vector with base address cp by word with base address ptr */ void multiply_word(int ptr, int cp, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int gen; register int exp; register int length = abs(y[ptr]) - 1; for (exp = y[ptr + 1]; exp > 0; --exp) { for (i = 1; i <= length; ++i) { gen = y[ptr + 1 + i]; if (gen > 0) collect(gen, cp, pcp); else invert_generator(-gen, 1, cp, pcp); } } } #endif anupq-3.3.0/src/find_permutation.c000644 000766 000024 00000001713 14355420571 017442 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A find_permutation.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pga_vars.h" #include "pq_functions.h" /* for each k, find the first permutation, d[k], which brings k into orbit */ char *find_permutation(int *b, char *c, struct pga_vars *pga) { register int i, j, k, l; char *d; d = allocate_char_vector(pga->Degree, 1, TRUE); /* d = (char *) calloc (pga->Degree, sizeof (char)); --d; */ for (i = 1; i <= pga->nmr_orbits; ++i) { j = pga->rep[i]; /* trace the orbit with leading term j */ k = j; l = b[j]; while (l != 0) { d[l] = d[k] + c[k]; k = l; l = b[l]; } } return d; } anupq-3.3.0/src/jacobi.c000644 000766 000024 00000011616 14355420571 015325 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A jacobi.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" /* solve the consistency equation 1) (a^p) a = a (a^p) if c = b = a else 2) (b^p) a = b^(p - 1) (ba) if c = b else 3) (ca) a^(p-1) = c (a^p) if b = a else 4) (cb) a = c (ba) if ptr > 0, use this equation to fill in the class pcp->cc part on y[ptr]; if ptr = 0, use this equation to check consistency so we calculate a new relation among the class pcp->cc generators */ void jacobi(int c, int b, int a, int ptr, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int k; register int p1; register int cp1; register int cp2; register int unc; register int address; register int ycol; register int commba; register int count; register int count2; register int offset; register int lastg = pcp->lastg; register int prime = pcp->p; register int pm1 = pcp->pm1; register int p_power = pcp->ppower; register int p_pcomm = pcp->ppcomm; #include "access.h" #if defined(GROUP) if (is_space_exhausted(2 * lastg + 3, pcp)) return; #endif /* cp1 and cp2 are the base addresses for the collected part of the lhs and of the rhs, respectively */ cp1 = pcp->lused; cp2 = cp1 + lastg; unc = cp2 + lastg + 1; for (i = 1; i <= lastg; i++) y[cp1 + i] = y[cp2 + i] = 0; /* calculate the class pcp->cc part of the jacobi relation (b^p) a = b^(p - 1) (ba) */ if (c == b) { ycol = y[p_power + b]; collect(ycol, cp1, pcp); collect(a, cp1, pcp); if (b != a) { y[cp2 + b] = pm1; p1 = y[p_pcomm + b]; commba = y[p1 + a]; collect(a, cp2, pcp); collect(b, cp2, pcp); collect(commba, cp2, pcp); } else { /* we are processing (a^p) a = a (a^p) */ ycol = y[p_power + a]; y[cp2 + a] = 1; collect(ycol, cp2, pcp); } } else { if (b - a > 0) { #if defined(GROUP) /* calculate the class pcp->cc part of the jacobi relation (cb) a = c (ba); set up a as the collected part for lhs */ y[cp1 + c] = 1; collect(b, cp1, pcp); collect(a, cp1, pcp); y[cp2 + c] = 1; collect(a, cp2, pcp); collect(b, cp2, pcp); p1 = y[p_pcomm + b]; commba = y[p1 + a]; collect(commba, cp2, pcp); #endif } else { /* calculate the class pcp->cc part of the jacobi relation (ca) a^(p - 1) = c (a^p); first collect rhs */ ycol = y[p_power + a]; y[cp2 + c] = 1; collect(ycol, cp2, pcp); /* collect lhs; set up c as collected part */ y[cp1 + c] = 1; collect(a, cp1, pcp); y[unc] = 1; y[unc + 1] = PACK2(pm1, a); collect(-unc + 1, cp1, pcp); } } /* the jacobi collections are completed */ if ((p1 = ptr) > 0) { /* we are filling in the tail on y[p1]; convert the class pcp->cc part to string form in y[cp1 + 2 + 1] to y[cp1 + 2 + count] where count is the string length */ count = 0; for (i = pcp->ccbeg; i <= lastg; i++) { k = y[cp1 + i] - y[cp2 + i]; if (k != 0) { if (k < 0) k += prime; ++count; y[cp1 + 2 + count] = PACK2(k, i); } } if (count > 0) { /* y[p1] was trivial to class pcp->cc - 1 so create a new entry */ if (y[p1] >= 0) { y[p1] = -(cp1 + 1); y[cp1 + 1] = p1; y[cp1 + 2] = count; pcp->lused += count + 2; } else { /* the class pcp->cc part is nontrivial so make room for lower class terms */ address = -y[p1]; count2 = y[address + 1]; /* move class pcp->cc part up */ offset = cp1 + count + 3; for (i = 1; i <= count; i++) y[offset + count2 - i] = y[offset - i]; /* copy in lower class terms */ for (i = 1; i <= count2; i++) y[cp1 + 2 + i] = y[address + i + 1]; /* create new header block */ y[cp1 + 1] = y[address]; y[cp1 + 2] = count + count2; /* deallocate old entry */ y[address] = 0; /* set up pointer to new entry */ y[p1] = -(cp1 + 1); pcp->lused += count + count2 + 2; } } } else { /* we are checking consistency equations */ echelon(pcp); if ((pcp->fullop && pcp->eliminate_flag) || pcp->diagn) text(9, c, b, a, 0); } } anupq-3.3.0/src/GAP_link_via_file.c000644 000766 000024 00000015124 14355420571 017356 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A GAP_link_via_file.c ANUPQ source Eamonn O'Brien *A & Frank Celler *A & Benedikt Rothe ** *Y Copyright 1995-1997, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-1997, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "global.h" #include "pq_functions.h" #include "menus.h" #if defined(GAP_LINK_VIA_FILE) /**************************************************************************** ** *F start_GAP_file ** write out initial information required for stabiliser calculation ** */ void start_GAP_file(FILE **GAP_input, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { register int i; int nmr_soluble = pga->nmr_soluble; /* open "GAP_input" file */ *GAP_input = OpenSystemFile("GAP_input", "w+"); GAP_presentation(*GAP_input, pcp, 1); #ifdef HAVE_GMP /* report the group and automorphism group order */ fprintf(*GAP_input, "ANUPQsize := "); mpz_out_str(*GAP_input, 10, &(pga->aut_order)); fprintf(*GAP_input, ";\n"); fprintf(*GAP_input, "ANUPQagsize := "); fprintf(*GAP_input, "%d;;\n", pga->nmr_soluble); #else fprintf(*GAP_input, "ANUPQsize := fail;;\nANUPQagsize := fail;;\n"); #endif /* write global variables */ fprintf(*GAP_input, "ANUPQglb := rec();;\n"); fprintf(*GAP_input, "ANUPQglb.d := %d;;\n", pcp->ccbeg - 1); fprintf(*GAP_input, "ANUPQglb.F := GF(%d);;\n", pga->p); fprintf(*GAP_input, "ANUPQglb.one := One (ANUPQglb.F);;\n"); fprintf(*GAP_input, "ANUPQglb.q := %d;;\n", pga->q); fprintf(*GAP_input, "ANUPQglb.s := %d;;\n", pga->s); fprintf(*GAP_input, "ANUPQglb.r := %d;;\n", pga->r); fprintf(*GAP_input, "ANUPQglb.agAutos := [];;\n"); fprintf(*GAP_input, "ANUPQglb.glAutos := [];;\n"); fprintf(*GAP_input, "ANUPQglb.genQ := [];;\n"); /* write the generators to file */ for (i = 1; i <= nmr_soluble; ++i) write_GAP_matrix( *GAP_input, "ANUPQglb.agAutos", auts[i], pcp->ccbeg - 1, 1, i); #ifdef DEBUG1 printf("The relative orders are "); for (i = 1; i <= nmr_soluble; ++i) printf("%d, ", pga->relative[i]); printf("\n"); #endif fprintf(*GAP_input, "relativeOrders := ["); if (nmr_soluble > 0) { for (i = 1; i < nmr_soluble; ++i) fprintf(*GAP_input, "%d, ", pga->relative[i]); fprintf(*GAP_input, "%d", pga->relative[nmr_soluble]); } fprintf(*GAP_input, "];\n"); for (i = nmr_soluble + 1; i <= pga->m; ++i) write_GAP_matrix(*GAP_input, "ANUPQglb.glAutos", auts[i], pcp->ccbeg - 1, 1, i - nmr_soluble); } /**************************************************************************** ** *F write_GAP_matrix ** write out a matrix in a GAP input form ** */ void write_GAP_matrix( FILE *GAP_input, char *gen, int **A, int size, int start, int nr) { int i, j; fprintf(GAP_input, "%s[%d] := [\n", gen, nr); for (i = start; i < start + size; ++i) { fprintf(GAP_input, "["); for (j = start; j < start + size - 1; ++j) fprintf(GAP_input, "%d, ", A[i][j]); if (i != start + size - 1) fprintf(GAP_input, "%d],\n", A[i][j]); else fprintf(GAP_input, "%d]] * ANUPQglb.one;;\n", A[i][j]); } } /**************************************************************************** ** *F insoluble_stab_gens ** calculate the stabiliser of the supplied representative using GAP ** */ void insoluble_stab_gens(int rep, int orbit_length, struct pga_vars *pga, struct pcp_vars *pcp) { FILE *GAP_rep; char *path, *command; char c; int index; int *subset; int **S; /* append the commands to compute the stabilizer */ GAP_rep = OpenFile("GAP_rep", "w+"); S = label_to_subgroup(&index, &subset, rep, pga); GAP_factorise_subgroup(GAP_rep, S, index, subset, pga, pcp); free_matrix(S, pga->s, 0); free_vector(subset, 0); if (!GAP4iostream) { fprintf(GAP_rep, "LoadPackage(\"autpgrp\", \"1.5\");\n"); fprintf(GAP_rep, "if TestPackageAvailability("); fprintf(GAP_rep, "\"anupq\", \"3.1\") <> true then\n"); fprintf(GAP_rep, " ANUPQData := rec(tmpdir := DirectoryCurrent());\n"); fprintf(GAP_rep, " DeclareInfoClass(\"InfoANUPQ\");\n"); fprintf(GAP_rep, " DeclareGlobalFunction("); fprintf(GAP_rep, "\"PqStabiliserOfAllowableSubgroup\");\n"); fprintf(GAP_rep, " ReadPackage(\"anupq\", \"lib/anustab.gi\");\n"); fprintf(GAP_rep, "fi;\n"); fprintf(GAP_rep, "SetInfoLevel(InfoANUPQ, 2);\n"); } fprintf(GAP_rep, "PqStabiliserOfAllowableSubgroup( ANUPQglb, F,\n"); fprintf(GAP_rep, " gens, relativeOrders, ANUPQsize, ANUPQagsize );\n"); CloseFile(GAP_rep); if (GAP4iostream) { printf("GAP, please compute stabiliser!\n"); /* skip a comment */ while ((c = getchar()) == ' ') ; if (c == '#') { while ((c = getchar()) != '\n') ; } /* we expect a line: "pq, stabiliser is ready.\n" */ if (c == 'p') putchar(c); while ((c = getchar()) != '\n') putchar(c); putchar(c); } else { /* try to find gap */ if ((path = (char *)getenv("ANUPQ_GAP_EXEC")) == NULL) #if defined(ANUPQ_GAP_EXEC) path = ANUPQ_GAP_EXEC; #else path = "gap"; #endif command = (char *)malloc(strlen(path) + 200); strcpy(command, path); strcat(command, " -r -q -A GAP_input < GAP_rep"); /* inform the user that we are about to call GAP */ if (isatty(0)) printf("Now calling GAP to compute stabiliser...\n"); unlink("LINK_output"); /* compute the stabiliser of the orbit representative */ if (system(command) != 0) { printf("Error in system call to GAP\n"); exit(FAILURE); } } CloseFile(OpenFile("LINK_output", "r")); unlink("GAP_rep"); } #endif anupq-3.3.0/src/start_group.c000644 000766 000024 00000002017 14355420571 016442 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A start_group.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" FILE *TemporaryFile(void); /* save start group to StartFile */ void start_group(FILE **StartFile, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; int retain; int ***central = 0; *StartFile = TemporaryFile(); save_pcp(*StartFile, pcp); retain = pcp->lastg; pcp->lastg = y[pcp->clend + pcp->cc - 1]; pga->nmr_stabilisers = pga->m; pga->nmr_centrals = 0; pga->final_stage = TRUE; set_values(pga, pcp); save_pga(*StartFile, central, auts, pga, pcp); RESET(*StartFile); pcp->lastg = retain; } anupq-3.3.0/src/print_auts.c000644 000766 000024 00000003712 14355420571 016264 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A print_auts.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "pq_functions.h" #include "constants.h" /* list the actions of the nmr_auts automorphisms on the nmr_gens generators of the group */ void Aprint_auts(int nmr_auts, int nmr_gens, int ***auts, struct pcp_vars *pcp) { register int i, j, k; FILE *output_file; char *file_name; int image; file_name = allocate_char_vector(MAXWORD + 1, 0, FALSE); sprintf(file_name, "auts%d^%d", pcp->p, pcp->lastg); /* open the file in update mode */ output_file = OpenFile(file_name, "a+"); fprintf(output_file, "["); for (i = 1; i <= nmr_auts; ++i) { for (j = 1; j <= nmr_gens; ++j) { image = 0; for (k = 1; k <= pcp->lastg; ++k) if (auts[i][j][k] != 0) image = 10 * image + k; fprintf(output_file, "%d", image); if (i == nmr_auts && j == nmr_gens) /*x = 1*/; else fprintf(output_file, ","); /* if (auts[i][j][k] != 0) fprintf (output_file, "%d ", k); fprintf (output_file, "%d ", auts[i][j][k]); */ } } fprintf(output_file, "],\n"); CloseFile(output_file); free(file_name); } void print_auts(int nmr_auts, int nmr_gens, int ***auts, struct pcp_vars *pcp) { register int i, j, k; for (i = 1; i <= nmr_auts; ++i) { printf("Automorphism %d:\n", i); for (j = 1; j <= nmr_gens; ++j) { printf("Generator %2d --> ", j); for (k = 1; k <= pcp->lastg; ++k) printf("%d ", auts[i][j][k]); printf("\n"); } } } anupq-3.3.0/src/delete_tables.c000644 000766 000024 00000003623 14355420571 016671 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A delete_tables.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" /* subroutine to delete all word and subgroup tables entries, depending upon the value of type; if type = 1 delete only the word table entries; if type = 2, delete only the subgroup table entries; if type = 0, delete both */ void delete_tables(int type, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int j; register int n; register int p1; register int nsubgp = pcp->nsubgp; register int address; /* delete all entries (pointers) in the words table */ if (type != 2) { if ((n = pcp->nwords) != 0) { address = pcp->words; for (i = 1; i <= n; i++) if ((p1 = -y[address + i]) != 0) y[p1] = 0; /* shift up the subgroup table, if it exists */ if (type && pcp->nsubgp) { j = pcp->structure + 1; for (i = 1; i <= nsubgp; i++, j--) { p1 = y[j - n]; y[j] = p1; if (p1 != 0) y[-p1] = j; } pcp->subgrp = j - 1; pcp->submlg = pcp->subgrp - pcp->lastg; } pcp->words = pcp->structure; pcp->nwords = 0; } } /* delete all entries (pointers) in the subgroup table */ if (type != 1) { address = pcp->subgrp; for (i = 1; i <= nsubgp; i++) { if ((p1 = -y[address + i]) != 0) { y[address + i] = 0; y[p1] = 0; } } pcp->nsubgp = 0; pcp->subgrp = pcp->words; pcp->submlg = pcp->subgrp - pcp->lastg; } } anupq-3.3.0/src/compact_description.c000644 000766 000024 00000012773 14355420571 020134 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A compact_description.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" #include "constants.h" /****************************************************************************** ** AUTHOR: C. Rhodes ** DATE: 21/1/93 ** REVISION: 1.0 (Release) ** STATUS: This code is designed to be an extension to the pq program ** by E.A. O'Brien. It encodes the pc-presentation into a ** sequence of integers and then appends that sequence to a ** file called gps, where is the order of the ** group. Note that existing files of this name are updated. ****************************************************************************/ #ifdef HAVE_GMP MP_INT Encode(int p, int length, int *list) { MP_INT powers, code; int i; mpz_init_set_ui(&code, 0); for (i = 1; i <= length; ++i) { mpz_init_set_si(&powers, 0); if (list[i] != 0) mpz_ui_pow_ui(&powers, p, i - 1); mpz_add(&code, &code, &powers); } /* if (list[i] != 0) { MP_INT factor; mpz_init_set_si (&factor, list[i]); mpz_ui_pow_ui (&powers, p, i); mpz_mul (&powers, &powers, &factor); mpz_add (&code, &code, &powers); } } */ return code; } #endif /* construct a compact description of the group as a sequence; if write_to_file TRUE, then write the compact description, sequence, to file and also return it */ int *compact_description(Logical write_to_file, struct pcp_vars *pcp) { register int *y = y_address; register int p1; register int p2; int *sequence; int nmr_of_exponents; int weight_g, weight_h; int g, h; int generator; int offset; int index; /* used to count current position in sequence of exponents */ int n; #include "access.h" n = pcp->lastg; nmr_of_exponents = choose(n + 1, 3); sequence = allocate_vector(nmr_of_exponents, 1, TRUE); offset = 0; index = 0; if (pcp->cc == 1) { /* write the sequence to a file */ output_information(sequence, nmr_of_exponents, pcp); return sequence; } for (generator = 2; generator <= n; ++generator) { /* examine all power relations g^p where g < generator and store all exponents of generator which occur in these relations */ for (g = 1; g < generator; ++g) { p1 = y[pcp->ppower + g]; trace_relation(sequence, &index, p1, generator, pcp); /* examine all commutator relations [h, g] where g < h < generator and store exponents of generator which occur in such relations */ weight_g = WT(y[pcp->structure + g]); /* is the relation [h, g] stored? */ for (h = g + 1; h < generator; ++h) { weight_h = WT(y[pcp->structure + h]); if (weight_g + weight_h <= pcp->cc) { p1 = y[pcp->ppcomm + h]; p2 = y[p1 + g]; trace_relation(sequence, &index, p2, generator, pcp); } else ++index; } } offset += (generator - 1) * (generator - 2) / 2 + (generator - 1); index = offset; } #if defined(DEBUG) print_array(sequence, 1, nmr_of_exponents); #endif /* write the sequence to a file */ if (write_to_file) output_information(sequence, nmr_of_exponents, pcp); return sequence; } /* find all occurrences of generator in relation with address ptr */ void trace_relation( int *sequence, int *index, int ptr, int generator, struct pcp_vars *pcp) { register int *y = y_address; int i, gen, exp, count; #include "access.h" ++(*index); if (ptr == generator) sequence[*index] = 1; else if (ptr < 0) { ptr = -ptr + 1; count = y[ptr]; for (i = 1; i <= count; i++) { gen = FIELD2(y[ptr + i]); if (gen == generator) { exp = FIELD1(y[ptr + i]); sequence[*index] = exp; } } } } /* append the sequence of length nmr_of_exponents to file with name formed by concatenating "gps" and "p^n" */ void output_information(int *sequence, int nmr_of_exponents, struct pcp_vars *pcp) { register int *y = y_address; FILE *output_file; char *file_name; #ifdef HAVE_GMP MP_INT code; #else register int count; #endif file_name = allocate_char_vector(MAXWORD + 1, 0, FALSE); sprintf(file_name, "gps%d^%d", pcp->p, pcp->lastg); /* open the file in update mode */ output_file = OpenFile(file_name, "a+"); /* write rank of Frattini quotient, number of pcp generators, prime, and exponent-p class to file */ #ifdef HAVE_GMP fprintf( output_file, "[%d, %d, %d, ", y[pcp->clend + 1], pcp->lastg, pcp->cc); code = Encode(pcp->p, nmr_of_exponents, sequence); mpz_out_str(output_file, 10, &code); fprintf(output_file, "],\n"); #else fprintf(output_file, "%d %d %d %d ", y[pcp->clend + 1], pcp->lastg, pcp->p, pcp->cc); /* now write out the sequence of exponents */ for (count = 1; count <= nmr_of_exponents - 1; count++) fprintf(output_file, "%d,", sequence[count]); fprintf(output_file, "%d\n", sequence[nmr_of_exponents]); #endif CloseFile(output_file); free(file_name); } anupq-3.3.0/src/immediate_descendant.c000644 000766 000024 00000006041 14355420571 020220 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A immediate_descendant.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "exp_vars.h" #include "constants.h" #include "pq_functions.h" /* if immediate descendant is capable or terminal flag is set, save its covering group to descendant_file and compute required central automorphisms */ int ***immediate_descendant(FILE *descendant_file, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; int ***central = 0; int **auts = 0; struct exp_vars exp_flag; /* compute the p-covering group of the descendant */ /* if metabelian law is to be enforced, set pcp flag true */ if (pga->metabelian) pcp->metabelian = TRUE; pcp->multiplicator = TRUE; next_class(FALSE, auts, auts, pcp); if (pcp->overflow) exit(FAILURE); pcp->multiplicator = FALSE; /* enforce an exponent law, if any */ if (pga->exponent_law) { pcp->extra_relations = pga->exponent_law; initialise_exponent(&exp_flag, pcp); extra_relations(&exp_flag, pcp); eliminate(0, pcp); } pga->capable = (pcp->newgen != 0); /* pga->capable = FALSE; pga->terminal = FALSE; */ pcp->multiplicator_rank = pcp->lastg - y[pcp->clend + pcp->cc - 1]; /* possible that nucleus is trivial but presentation for p-covering group present */ if (pga->terminal && pcp->newgen == 0 && pcp->complete == FALSE) { last_class(pcp); pcp->complete = TRUE; } /* if (pga->trace || (pga->capable && pga->print_automorphisms && pga->final_stage && !pga->print_group)) { printf ("------------------------------------------\n"); printf ("Immediate descendant %s\n", pcp->ident); } */ if (pga->print_nuclear_rank) printf("Group %s has nuclear rank %d\n", pcp->ident, pcp->newgen); if (pga->print_multiplicator_rank) printf("Group %s has %d-multiplicator rank %d\n", pcp->ident, pcp->p, pcp->lastg - y[pcp->clend + pcp->cc - 1]); /* if descendant is capable or terminal is true, compute central automorphisms */ if (pga->capable || pga->terminal) { /* save group description to file -- if group is capable, save p-covering group presentation, else save that of group */ save_pcp(descendant_file, pcp); set_values(pga, pcp); /* revert to last class for automorphism group calculations */ if (!pcp->complete) last_class(pcp); /* determine the required central outer automorphisms */ central = central_automorphisms(pga, pcp); if (pga->print_automorphisms) print_auts(pga->nmr_centrals, pga->ndgen, central, pcp); } return central; } anupq-3.3.0/src/convert.c000644 000766 000024 00000003257 14355420571 015560 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A convert.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" /* convert exponent vector with base address cp to string whose base address is str */ void vector_to_string(int cp, int str, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int length = 0; register int lastg = pcp->lastg; #include "access.h" for (i = 1; i <= lastg; ++i) { if (y[cp + i] != 0) { ++length; y[str + 1 + length] = PACK2(y[cp + i], i); } } y[str + 1] = length; } /* convert exponent-vector with base address cp to word with base address ptr */ int vector_to_word(int cp, int ptr, struct pcp_vars *pcp) { register int *y = y_address; int i, j; register int length = 1; register int lastg = pcp->lastg; y[ptr + 1] = 1; for (i = 1; i <= lastg; ++i) { for (j = 1; j <= y[cp + i]; ++j) { ++length; y[ptr + length] = i; } } y[ptr] = length; return length; } /* convert string with base address str to exponent vector whose base address is cp */ void string_to_vector(int str, int cp, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int length = y[str + 1]; #include "access.h" for (i = 1; i <= pcp->lastg; ++i) y[cp + i] = 0; for (i = 1; i <= length; ++i) y[cp + FIELD2(y[str + 1 + i])] = FIELD1(y[str + 1 + i]); } anupq-3.3.0/src/read_parameters.c000644 000766 000024 00000003635 14355420571 017236 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A read_parameters.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" #include "pq_functions.h" /* read parameters for p-quotient calculation */ void read_parameters(int format, int *max_class, int *output, struct pcp_vars *pcp) { Logical reading = TRUE; char *ident; #if defined(GROUP) ident = GetString("Input group identifier: "); #endif strcpy(pcp->ident, ident); while (reading) { read_value(TRUE, "Input prime: ", &pcp->p, 2); reading = (pcp->p != 2 && MOD(pcp->p, 2) == 0); if (reading) printf("%d is not a prime\n", pcp->p); } read_value(TRUE, "Input maximum class: ", max_class, 0); if (*max_class == 0) { *max_class = DEFAULT_CLASS; text(15, DEFAULT_CLASS, 0, 0, 0); } else if (*max_class > MAXCLASS) { *max_class = MAXCLASS; text(15, MAXCLASS, 0, 0, 0); } print_level(output, pcp); if (format == BASIC) { reading = TRUE; while (reading) { read_value(TRUE, "Input number of generators: ", &pcp->ndgen, 1); reading = (pcp->ndgen > MAXGENS); if (reading) printf("The maximum number of defining generators is %d\n", MAXGENS); } #if defined(GROUP) read_value(TRUE, "Input number of relations: ", &pcp->ndrel, 0); read_value( TRUE, "Input exponent law (0 if none): ", &pcp->extra_relations, 0); #endif /* initialise pcp structure */ initialise_pcp(*output, pcp); setup(pcp); read_relations(pcp); } else { pretty_read_generators(pcp); pretty_read_relations(*output, max_class, pcp); } } anupq-3.3.0/src/print_multiweight.c000644 000766 000024 00000013467 14355420571 017662 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A print_multiweight.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" #include "pq_functions.h" /* print the structure of each of the pcp generators, numbered from first to last inclusive */ void print_multiweight(int first, int last, struct pcp_vars *pcp) { register int *y = y_address; char start; register int structure = pcp->structure; register int u, v; register int gen, i, k; register int previous = 0; register int current; int print_mwt; int print_pattern = TRUE; int counter = 0; int value; int wt = 0; int length; int weight = 0; int pointer; int address; int *pattern = 0; int *gens = 0; #include "access.h" printf("Print number of occurrences of multiweights: "); scanf("%d", &print_mwt); if (print_mwt) { printf("Enter weight pattern on %d gens (0 for all): ", pcp->ndgen); scanf("%c", &start); scanf("%c", &start); if (start == '0') { length = int_power(pcp->cc + 1, pcp->ndgen); pattern = allocate_vector(length + pcp->ndgen + 1, 1, TRUE); for (i = 1; i <= pcp->ndgen; ++i) pattern[i] = int_power(pcp->cc + 1, i - 1); } else { pattern = allocate_vector(pcp->ndgen + 1, 1, TRUE); for (i = 1; i <= pcp->ndgen; ++i) { scanf("%d", &pattern[i]); wt += pattern[i]; } scanf("%c", &start); } } gens = allocate_vector(pcp->ndgen + 1, 1, TRUE); for (gen = first; gen <= last; ++gen) { pointer = y[structure + gen]; weight = WT(pointer); if (((current = layer(gen, pcp)) != previous) && ((wt == 0) || (wt == current))) { printf("Class %d\n", current); previous = current; } if (pointer <= 0 && !print_mwt) { printf("%d = ", gen); print_word(pointer, pcp); } else { u = PART2(pointer); v = PART3(pointer); if (u == 0) { if (print_mwt) { if (start == '0') for (i = 1; i <= pcp->ndgen; ++i) gens[i] = 0; gens[v] = 1; } } else { if (gen >= pcp->ccbeg) { for (i = 1; i <= weight; ++i) y[pcp->lused + i] = 0; } find_definition(gen, pcp->lused, weight, pcp); for (i = 1; i <= pcp->ndgen; ++i) gens[i] = 0; for (i = 1; i <= weight; ++i) ++gens[y[pcp->lused + i]]; } if (print_mwt) { if (start == '0') { k = pcp->ndgen; for (i = 1; i <= pcp->ndgen; ++i) k += gens[i] * pattern[i]; ++pattern[k]; } else { print_pattern = TRUE; for (i = 1; i <= pcp->ndgen; ++i) { if (gens[i] != pattern[i]) { print_pattern = FALSE; break; } } } } if (print_pattern) { if (u == 0) printf( "%d is defined on image of defining generator %d\n", gen, v); if (v == 0) printf("%d is defined on %d^%d = ", gen, u, pcp->p); else if (u != 0) printf("%d is defined on [%d, %d] = ", gen, u, v); if (gen > pcp->ndgen) { for (i = 1; i <= weight; ++i) if ((value = y[pcp->lused + i]) != 0) printf("%d ", value); } if (print_mwt) { printf("\t"); printf("("); for (i = 1; i <= pcp->ndgen; ++i) { printf("%d", gens[i]); if (i != pcp->ndgen) printf(" "); } printf(")"); printf("\n"); if (start != '0') ++counter; } else printf("\n"); } } } if (print_mwt) { if (start == '0') for (k = 1; k <= weight; ++k) { wt = 0; address = pcp->ndgen; for (i = 1; i <= pcp->ndgen; ++i) gens[i] = 0; while (gens[1] < k) { ++gens[pcp->ndgen]; ++wt; address += pattern[pcp->ndgen]; if (gens[pcp->ndgen] > k) for (i = pcp->ndgen; i > 1; --i) if (gens[i] > k) { gens[i] = 0; ++gens[i - 1]; address += pattern[i - 1] * (1 - (k + 1) * (pcp->cc + 1)); wt -= k; } if (pattern[address] > 0 && wt == k) { if (pattern[address] == 1) printf("1 occurrence of pattern ("); else printf("%d occurrences of pattern (", pattern[address]); for (i = 1; i < pcp->ndgen; ++i) printf("%d ", gens[i]); printf("%d)\n", gens[pcp->ndgen]); } } } else { if (counter > 0) { if (counter == 1) printf("1 occurrence of pattern ("); else printf("%d occurrences of pattern (", counter); for (i = 1; i < pcp->ndgen; ++i) printf("%d ", pattern[i]); printf("%d)\n", pattern[pcp->ndgen]); } } free(++gens); free(++pattern); } } anupq-3.3.0/src/eliminate.c000644 000766 000024 00000014370 14355420571 016045 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A eliminate.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" /* eliminate all redundant generators to construct the consistent power commutator presentation for the group to class current_class; if middle_of_tails is TRUE, do not delete space set aside in setup; in this case, only deallocate redundant generators */ void eliminate(Logical middle_of_tails, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int j; register int k; register int l; register int p1; register int ba; register int lg; register int length; register int bound; register int structure = pcp->structure; register int current_class = pcp->cc; register int lused = pcp->lused; register int prime = pcp->p; register int dgen = pcp->dgen; register int ndgen = pcp->ndgen; register int pointer; register int value; #include "access.h" /* calculate new values for irredundant generators and set them up in a renumbering table of length pcp->lastg - pcp->ccbeg + 1 which looks to compact like a normal exponent-generator string pointed to by y[dgen] */ if (current_class != 1) { if (is_space_exhausted(pcp->lastg - pcp->ccbeg + 3, pcp)) return; structure = pcp->structure; lused = pcp->lused; y[lused + 1] = dgen; y[dgen] = -(lused + 1); y[lused + 2] = pcp->lastg - pcp->ccbeg + 1; ba = lused + 3 - pcp->ccbeg; pcp->lused += pcp->lastg - pcp->ccbeg + 3; lused = pcp->lused; lg = pcp->ccbeg - 1; for (i = pcp->ccbeg, bound = pcp->lastg; i <= bound; i++) { y[ba + i] = 0; if (y[structure + i] > 0) y[ba + i] = ++lg; } /* update pcp->first_pseudo */ bound = pcp->lastg; for (i = pcp->first_pseudo; i <= bound && y[structure + i] <= 0; i++) ; pcp->first_pseudo = (i > pcp->lastg) ? lg + 1 : y[ba + i]; /* update the commutator tables */ p1 = y[pcp->ppcomm + 2]; for (i = 1, bound = pcp->ncomm; i <= bound; i++) { update(p1 + i, pcp); if (pcp->overflow) return; } /* update the power tables */ for (i = 2, bound = pcp->ccbeg; i <= bound; i++) { /* fix (i - 1)^p */ update(pcp->ppower + i - 1, pcp); if (pcp->overflow) return; } /* update the redundant defining generators and inverses */ for (i = 1; i <= ndgen; i++) { update(dgen + i, pcp); if (pcp->overflow) return; update(dgen - i, pcp); if (pcp->overflow) return; } /* finally update and move structure information */ if (middle_of_tails) { pointer = pcp->structure + pcp->ccbeg - 1; for (i = pcp->ccbeg; i <= pcp->lastg; ++i) { if ((value = y[pcp->structure + i]) > 0) y[++pointer] = value; else if (value < 0) y[-value] = 0; } } else { k = pcp->ppower; structure = pcp->structure; for (i = pcp->lastg; i >= pcp->ccbeg; i--) { if ((j = y[structure + i]) > 0) { y[k] = j; k--; } else if (j < 0) { /* deallocate equation for redundant generator i */ p1 = -j; y[p1] = 0; } } for (; i > 0; i--) y[k--] = y[structure + i]; if (pcp->subgrp != structure) delete_tables(0, pcp); pcp->structure = k; structure = pcp->structure; pcp->words = k; pcp->subgrp = k; pcp->submlg = pcp->subgrp - lg; } pcp->lastg = lg; y[pcp->clend + current_class] = pcp->lastg; /* deallocate the renumbering table */ p1 = -y[dgen]; y[p1] = 0; return; } /* class 1 */ pcp->lastg = 0; for (i = 1; i <= ndgen; i++) { if ((j = y[structure + i]) == 0) { /* defining generator i is trivially redundant */ y[dgen + i] = 0; if (y[dgen - i] < 0) { /* deallocate old inverse */ p1 = -y[dgen - i]; y[p1] = 0; /* set new inverse trivial */ y[dgen - i] = 0; } } else if (j < 0) { /* defining generator i is redundant with value pointed to by -y[structure + i] */ y[dgen + i] = y[structure + i]; p1 = -y[dgen + i]; length = y[p1 + 1]; y[p1] = dgen + i; /* renumber value of defining generator i */ for (k = 1; k <= length; k++) { l = FIELD2(y[p1 + k + 1]); y[p1 + k + 1] += y[dgen + l] - l; } if (y[dgen - i] < 0) { /* i inverse occurs in a defining relation, so recompute the inverse and set up header block for inverse */ y[lused + 1] = dgen - i; y[lused + 2] = length; /* set up inverse */ for (j = 1; j <= length; j++) { k = y[p1 + j + 1]; y[lused + 2 + j] = PACK2(prime - FIELD1(k), FIELD2(k)); } /* deallocate old inverse */ p1 = -y[dgen - i]; y[p1] = 0; y[dgen - i] = -(lused + 1); pcp->lused += length + 2; lused = pcp->lused; } } else { /* i is an irredundant generator */ pcp->lastg++; y[dgen + i] = pcp->lastg; /* note that its weight is set to be 1 */ y[structure + pcp->lastg] = PACK3(1, 0, i); /* check if inverse of i is required */ if (y[dgen - i] < 0) { /* yes, so renumber previously set up inverse */ p1 = -y[dgen - i]; y[p1 + 2] += pcp->lastg - i; } } } if (pcp->lastg < 1) { text(7, prime, 0, 0, 0); pcp->complete = 1; pcp->cc = 0; } else { y[pcp->clend + 1] = pcp->lastg; pcp->submlg = pcp->subgrp - pcp->lastg; } } anupq-3.3.0/src/system.c000644 000766 000024 00000002721 14355420571 015417 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A system.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_author.h" #include "pq_defs.h" #include #include /* system and operating system dependent pieces of code */ /* return CPU time in CLOCK TICKS -- the program should report correct CPU times for each of SunOS and Solaris if compiled and run under that operating system; under Solaris, CLK_TCK is defined in ; if compiled under SunOS and run under Solaris, then multiply reported times by 3/5 to get correct user time */ int runTime(void) { struct tms buffer; times(&buffer); return buffer.tms_utime + buffer.tms_cutime; } /* print startup message */ void print_message(int work_space) { time_t now; char *id; char string[100]; #if defined(HAVE_GETHOSTNAME) char s[100]; gethostname(s, 100); #else char *s = (char *)getenv("HOST"); if (s == NULL) s = "unknown"; #endif #if defined(GROUP) id = PQ_VERSION; #endif printf("%s running with workspace %d on %s\n", id, work_space, s); now = time(NULL); #ifdef HAVE_STRFTIME strftime(string, 100, "%a %b %d %H:%M:%S %Z %Y", localtime(&now)); printf("%s\n", string); #else printf("\n"); #endif } anupq-3.3.0/src/interactive_pga.c000644 000766 000024 00000037256 14355420571 017252 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A interactive_pga.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "menus.h" #include "standard.h" #include "pq_functions.h" #include "global.h" #define MAX_INTERACTIVE_OPTION 18 /* maximum number of menu options */ #define COMBINATION 100 /* interactive menu for p-group generation */ void interactive_pga(Logical group_present, FILE *StartFile, int group_nmr, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { struct pga_vars flag; int option; Logical soluble_group = TRUE; FILE *OutputFile = 0; FILE *LINK_input = 0; char *StartName = 0; int t; int **perms = 0; int index; int **S = 0; int k; int K; int label; int *a = 0, *b = 0; char *c = 0; int *orbit_length = 0; int nmr_of_exponents; int *subset = 0; int alpha; int upper_step; int rep; int i; list_interactive_pga_menu(); do { option = read_option(MAX_INTERACTIVE_OPTION); switch (option) { case -1: list_interactive_pga_menu(); break; case SUPPLY_AUTS: auts = read_auts(PGA, &pga->m, &nmr_of_exponents, pcp); #ifdef HAVE_GMP autgp_order(pga, pcp); #endif pga->soluble = TRUE; start_group(&StartFile, auts, pga, pcp); break; case EXTEND_AUTS: extend_automorphisms(auts, pga->m, pcp); print_auts(pga->m, pcp->lastg, auts, pcp); break; case RESTORE_GP: StartName = GetString("Enter input file name: "); StartFile = OpenFileInput(StartName); if (StartFile != NULL) { read_value(TRUE, "Which group? ", &group_nmr, 0); auts = restore_group(TRUE, StartFile, group_nmr, pga, pcp); RESET(StartFile); } break; case DISPLAY_GP: print_presentation(FALSE, pcp); print_structure(1, pcp->lastg, pcp); print_pcp_relations(pcp); break; case SINGLE_STAGE: t = runTime(); if (group_present && pga->m == 0) start_group(&StartFile, auts, pga, pcp); assert(OutputFile); construct(1, &flag, SINGLE_STAGE, OutputFile, StartFile, 0, ALL, group_nmr, pga, pcp); t = runTime() - t; printf("Time for intermediate stage is %.2f seconds\n", t * CLK_SCALE); break; case DEGREE: read_step_size(pga, pcp); read_subgroup_rank(&k); query_exponent_law(pga); enforce_laws(pga, pga, pcp); extend_automorphisms(auts, pga->m, pcp); step_range(k, &pga->s, &upper_step, auts, pga, pcp); if (pga->s > upper_step) printf("Desired step size is invalid for current group\n"); else { if (pga->s < upper_step) { printf("The permitted relative step sizes range from %d to %d\n", pga->s, upper_step); read_value( TRUE, "Input the chosen relative step size: ", &pga->s, 0); } store_definition_sets(pga->r, pga->s, pga->s, pga); get_definition_sets(pga); pga->print_degree = TRUE; compute_degree(pga); pga->print_degree = FALSE; } break; case PERMUTATIONS: if (pga->Degree != 0) { t = runTime(); query_solubility(pga); pga->trace = FALSE; if (pga->soluble) query_space_efficiency(pga); else pga->space_efficient = FALSE; query_perm_information(pga); strip_identities(auts, pga, pcp); soluble_group = (pga->soluble || pga->Degree == 1 || pga->nmr_of_perms == 0); if (!soluble_group) { #if defined(GAP_LINK) StartGapFile(pga); #else #if defined(GAP_LINK_VIA_FILE) start_GAP_file(&LINK_input, auts, pga, pcp); #endif #endif } perms = permute_subgroups(LINK_input, &a, &b, &c, auts, pga, pcp); #if defined(GAP_LINK_VIA_FILE) if (!soluble_group) CloseFile(LINK_input); #endif t = runTime() - t; printf("Time to compute permutations is %.2f seconds\n", t * CLK_SCALE); } else printf("You must first select option %d\n", DEGREE); break; case ORBITS: orbit_option(option, perms, &a, &b, &c, &orbit_length, pga); break; case STABILISERS: case STABILISER: assert(perms); stabiliser_option( option, auts, perms, a, b, c, orbit_length, pga, pcp); /* free_space (pga->soluble, perms, orbit_length, a, b, c, pga); */ break; case MATRIX_TO_LABEL: S = allocate_matrix(pga->s, pga->q, 0, FALSE); subset = allocate_vector(pga->s, 0, FALSE); printf("Input the %d x %d subgroup matrix:\n", pga->s, pga->q); read_matrix(S, pga->s, pga->q); K = echelonise_matrix(S, pga->s, pga->q, pga->p, subset, pga); printf("The standard matrix is:\n"); print_matrix(S, pga->s, pga->q); printf("The label is %d\n", subgroup_to_label(S, K, subset, pga)); free_vector(subset, 0); break; case LABEL_TO_MATRIX: read_value(TRUE, "Input allowable subgroup label: ", &label, 1); S = label_to_subgroup(&index, &subset, label, pga); printf("The corresponding standard matrix is\n"); print_matrix(S, pga->s, pga->q); break; case IMAGE: t = runTime(); /* invert_automorphisms (auts, pga, pcp); print_auts (pga->m, pcp->lastg, auts, pcp); */ printf("Input the subgroup label and automorphism number: "); read_value(TRUE, "", &label, 1); read_value(FALSE, "", &alpha, 1); printf("Image is %d\n", find_image(label, auts[alpha], pga, pcp)); t = runTime() - t; printf("Computation time in seconds is %.2f\n", t * CLK_SCALE); break; case SUBGROUP_RANK: read_subgroup_rank(&k); printf("Closure of initial segment subgroup has rank %d\n", close_subgroup(k, auts, pga, pcp)); break; case ORBIT_REP: printf("Input label for subgroup: "); read_value(TRUE, "", &label, 1); rep = abs(a[label]); for (i = 1; i <= pga->nmr_orbits && pga->rep[i] != rep; ++i) ; printf("Subgroup with label %d has representative %d and is in orbit " "%d\n", label, rep, i); break; case COMPACT_DESCRIPTION: Compact_Description = TRUE; read_value(TRUE, "Lower bound for order (0 for all groups generated)? ", &Compact_Order, 0); break; case AUT_CLASSES: t = runTime(); permute_elements(); t = runTime() - t; printf("Time to compute orbits is %.2f seconds\n", t * CLK_SCALE); break; /* printf ("Input label: "); scanf ("%d", &l); process_complete_orbit (a, l, pga, pcp); break; case TEMP: printf ("Input label: "); scanf ("%d", &l); printf ("Input label: "); scanf ("%d", &u); for (i = l; i <= u; ++i) { x = IsValidAllowableSubgroup (i, pga); printf ("%d is %d\n", i, x); } StartName = GetString ("Enter output file name: "); OutputFile = OpenFileOutput (StartName); part_setup_reps (pga->rep, pga->nmr_orbits, orbit_length, perms, a, b, c, auts, OutputFile, OutputFile, pga, pcp); list_word (pga, pcp); read_value (TRUE, "Input the rank of the subgroup: ", &pga->q, 1); strip_identities (auts, pga, pcp); break; */ case EXIT: case MAX_INTERACTIVE_OPTION: printf("Exiting from interactive p-group generation menu\n"); break; } /* switch */ } while (option != 0 && option != MAX_INTERACTIVE_OPTION); #if defined(GAP_LINK) if (!soluble_group) QuitGap(); #endif } /* list available menu options */ void list_interactive_pga_menu(void) { printf("\nAdvanced Menu for p-Group Generation\n"); printf("-------------------------------------\n"); printf("%d. Read automorphism information for starting group\n", SUPPLY_AUTS); printf("%d. Extend and display automorphisms\n", EXTEND_AUTS); printf("%d. Specify input file and group number\n", RESTORE_GP); printf("%d. List group presentation\n", DISPLAY_GP); printf("%d. Carry out intermediate stage calculation\n", SINGLE_STAGE); printf("%d. Compute definition sets & find degree\n", DEGREE); printf("%d. Construct permutations of subgroups under automorphisms\n", PERMUTATIONS); printf("%d. Compute and list orbit information\n", ORBITS); printf("%d. Process all orbit representatives\n", STABILISERS); printf("%d. Process individual orbit representative\n", STABILISER); printf("%d. Compute label for standard matrix of subgroup\n", MATRIX_TO_LABEL); printf("%d. Compute standard matrix for subgroup from label\n", LABEL_TO_MATRIX); printf("%d. Find image of allowable subgroup under automorphism\n", IMAGE); printf("%d. Find rank of closure of initial segment subgroup\n", SUBGROUP_RANK); printf("%d. List representative and orbit for supplied label\n", ORBIT_REP); printf("%d. Write compact descriptions of generated groups to file\n", COMPACT_DESCRIPTION); printf("%d. Find automorphism classes of elements of vector space\n", AUT_CLASSES); printf("%d. Exit to main p-group generation menu\n", MAX_INTERACTIVE_OPTION); } void orbit_option(int option, int **perms, int **a, int **b, char **c, int **orbit_length, struct pga_vars *pga) { int t; Logical soluble_group; /* FILE * file; */ if (option != COMBINATION && option != STANDARDISE) { query_solubility(pga); if (pga->soluble) query_space_efficiency(pga); else pga->space_efficient = FALSE; query_orbit_information(pga); } else if (option == COMBINATION) { pga->print_orbit_summary = FALSE; pga->print_orbits = FALSE; } else if (option == STANDARDISE) { pga->print_orbit_summary = FALSE; pga->print_orbits = FALSE; } soluble_group = (pga->soluble || pga->Degree == 1 || pga->nmr_of_perms == 0); if (!pga->space_efficient) { t = runTime(); if (soluble_group) compute_orbits(a, b, c, perms, pga); else insoluble_compute_orbits(a, b, c, perms, pga); if (option != COMBINATION && option != STANDARDISE) { t = runTime() - t; printf("Time to compute orbits is %.2f seconds\n", t * CLK_SCALE); } } /* if in soluble portion of combination, we do not need to set up representatives */ if (option == COMBINATION && pga->soluble) return; *orbit_length = find_orbit_reps(*a, *b, pga); if (pga->print_orbit_summary) orbit_summary(*orbit_length, pga); /* file = OpenFile ("COUNT", "a+"); fprintf (file, "%d,\n", pga->nmr_orbits); */ } void stabiliser_option(int option, int ***auts, int **perms, int *a, int *b, char *c, int *orbit_length, struct pga_vars *pga, struct pcp_vars *pcp) { int t; int i; /*Logical soluble_group;*/ FILE *OutputFile; char *StartName; int *rep; int *length; rep = allocate_vector(1, 1, 0); length = allocate_vector(1, 1, 0); t = runTime(); query_solubility(pga); if (pga->soluble) query_space_efficiency(pga); else pga->space_efficient = FALSE; /*soluble_group = (pga->soluble || pga->Degree == 1 || pga->nmr_of_perms == 0);*/ query_terminal(pga); query_exponent_law(pga); query_metabelian_law(pga); query_group_information(pga->p, pga); query_aut_group_information(pga); StartName = GetString("Enter output file name: "); OutputFile = OpenFileOutput(StartName); pga->final_stage = (pga->q == pga->multiplicator_rank); pga->nmr_of_descendants = 0; pga->nmr_of_capables = 0; if (option == STABILISER) { read_value(TRUE, "Input the orbit representative: ", &rep[1], 1); /* find the length of the orbit having this representative */ for (i = 1; i <= pga->nmr_orbits && pga->rep[i] != rep[1]; ++i) ; if (pga->rep[i] == rep[1]) length[1] = orbit_length[i]; else { printf("%d is not an orbit representative\n", rep[1]); return; } } if (option == STABILISER) setup_reps(rep, 1, length, perms, a, b, c, auts, OutputFile, OutputFile, pga, pcp); else setup_reps(pga->rep, pga->nmr_orbits, orbit_length, perms, a, b, c, auts, OutputFile, OutputFile, pga, pcp); /* #if defined (GAP_LINK) if (!soluble_group) QuitGap (); #endif */ RESET(OutputFile); printf("Time to process representative is %.2f seconds\n", (runTime() - t) * CLK_SCALE); } /* list orbit representatives as words subject to the supplied map */ int list_word(struct pga_vars *pga, struct pcp_vars *pcp) { register int i, j; int start_length; int start[100]; int word[100]; int **S; int index; int *subset; int length = 0; register int k, r; register int lastg = pcp->lastg; start_length = 0; /* read_value (TRUE, "Input length of initial segment: ", &start_length, 0); for (i = 1; i <= start_length; ++i) scanf ("%d", &start[i]); */ for (r = 1; r <= pga->nmr_orbits; ++r) { S = label_to_subgroup(&index, &subset, pga->rep[r], pga); print_matrix(S, pga->s, pga->q); for (i = 0; i < pga->q; ++i) { if (1 << i & pga->list[index]) continue; for (j = 1; j <= lastg; ++j) word[j] = 0; for (j = 0; j < pga->s; ++j) if (S[j][i] != 0) word[pcp->ccbeg + subset[j]] = pga->p - S[j][i]; word[pcp->ccbeg + i] = 1; print_array(word, pcp->ccbeg, lastg + 1); length = 0; for (k = pcp->ccbeg; k <= lastg; ++k) if (word[k] != 0) ++length; printf("%d\n", length + start_length); for (k = 1; k <= start_length; ++k) printf("%d 1 ", start[k]); for (k = pcp->ccbeg; k <= lastg; ++k) if (word[k] != 0) printf("%d %d ", k, word[k]); printf("\n"); } } return 0; } anupq-3.3.0/src/invert_modp.c000644 000766 000024 00000001464 14355420571 016424 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A invert_modp.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ /* compute the multiplicative inverse of x modulo p using the forward extended euclidean algorithm */ int invert_modp(int x, int p) { register int q; register int a1 = p; register int a2 = x; register int a3; register int y1 = 0; register int y2 = 1; register int y3; while (a2 != 1) { q = a1 / a2; a3 = a1 - a2 * q; y3 = y1 - y2 * q; a1 = a2; a2 = a3; y1 = y2; y2 = y3; } if (y2 < 0) y2 += p; return y2; } anupq-3.3.0/src/reduce_matrix.c000644 000766 000024 00000004124 14355420571 016725 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A reduce_matrix.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pga_vars.h" /* left echelonise mod p the matrix a, which has the supplied dimensions; set up its definition set both as a subset and as a bit string */ void reduce_matrix( int **a, int nmr_rows, int nmr_columns, int p, struct pga_vars *pga) { Logical zero; register int bound = nmr_columns - 1; register int row, column, i, j, index, val; register int entry; for (row = 0; row < MIN(nmr_rows, nmr_columns); ++row) { /* start with the diagonal entry */ column = row; /* find first non-zero entry, if any, in this column; if none, advance to next column */ do { index = row; while (index < nmr_rows && (zero = (a[index][column] == 0))) ++index; if (zero) { if (column < bound) ++column; else return; } } while (zero); /* if necessary, interchange current row with row index */ if (index > row) { for (j = column; j < nmr_columns; ++j) { val = a[index][j]; a[index][j] = a[row][j]; a[row][j] = val; } } /* multiply row by the inverse in GF(p) of a[row][column] */ if ((entry = a[row][column]) != 1) { val = pga->inverse_modp[entry]; a[row][column] = 1; for (j = column + 1; j < nmr_columns; ++j) a[row][j] = (a[row][j] * val) % p; } /* now zero out all other entries in this column */ for (i = 0; i < nmr_rows; ++i) { if (a[i][column] == 0 || i == row) continue; val = p - a[i][column]; a[i][column] = 0; for (j = column + 1; j < nmr_columns; ++j) a[i][j] = (a[i][j] + val * a[row][j]) % p; } } } anupq-3.3.0/src/tail_info.c000644 000766 000024 00000001357 14355420571 016043 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A tail_info.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" /* read information for tails */ void tail_info(int *tail_type) { Logical reading = TRUE; while (reading) { read_value(TRUE, "Add new tails (1), compute tails (2) or both (0): ", tail_type, 0); reading = (*tail_type > 2); if (reading) printf("Supplied value must lie between 0 and 2\n"); } } anupq-3.3.0/src/invert_auts.c000644 000766 000024 00000006641 14355420571 016443 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A invert_auts.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "pq_functions.h" /* developmental code -- not finished */ void new_collect_image_of_string(int string, int cp, int **auts, struct pcp_vars *pcp); /* for each automorphism, compute its inverse */ int *** invert_automorphisms(int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; register int alpha; int ***inverse; int nmr_of_bytes = pcp->lastg; int **Power; int string = pcp->lused + pcp->lastg; int cp = pcp->submlg - pcp->lastg - 2; register int i, j; int loop; inverse = allocate_array(pga->m, pcp->lastg, pcp->lastg, TRUE); Power = allocate_matrix(pcp->lastg, pcp->lastg, 1, FALSE); for (alpha = 1; alpha <= pga->m; ++alpha) { printf("Processing alpha_%d\n", alpha); Copy_Matrix(auts[alpha], inverse[alpha], pcp->lastg, nmr_of_bytes); Copy_Matrix(auts[alpha], Power, pcp->lastg, nmr_of_bytes); loop = 0; while (!is_identity(Power, pcp->lastg, 1)) { ++loop; printf("loop is %d\n", loop); Copy_Matrix(Power, inverse[alpha], pcp->lastg, nmr_of_bytes); for (i = 1; i <= pcp->lastg; ++i) { image_to_word(string, Power[i], pcp); for (j = 1; j <= pcp->lastg; ++j) y[cp + j] = 0; collect_image_of_string(string, cp, auts[alpha], pcp); for (j = 1; j <= pcp->lastg; ++j) Power[i][j] = y[cp + j]; print_matrix(Power, pcp->lastg, pcp->lastg); } } } return inverse; } /* collect image of supplied string under the action of supplied automorphism, auts, and store the result at cp */ void new_collect_image_of_string(int string, int cp, int **auts, struct pcp_vars *pcp) { register int *y = y_address; register int i; int generator, exp; int length = y[string + 1]; /* last element of string is in p-multiplicator */ #include "access.h" /* collect the string generator by generator */ for (i = 1; i <= length; ++i) { generator = FIELD2(y[string + 1 + i]); exp = FIELD1(y[string + 1 + i]); while (exp > 0) { collect_image_of_generator(cp, auts[generator], pcp); --exp; } } } /* convert image of generator to word with base address string */ void image_to_word(int string, int *image, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int length = 0; #include "access.h" for (i = 1; i <= pcp->lastg; ++i) if (image[i] != 0) { ++length; y[string + length + 1] = PACK2(image[i], i); } y[string + 1] = length + 1; } void Copy_Matrix(int **A, int **B, int nmr_of_rows, int nmr_of_bytes) { register int i, j; for (i = 1; i <= nmr_of_rows; ++i) for (j = 1; j <= nmr_of_bytes; ++j) B[i][j] = A[i][j]; /* memcpy (B[i], A[i], nmr_of_bytes); */ } anupq-3.3.0/src/map_relations.c000644 000766 000024 00000032155 14355420571 016734 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A map_relations.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "menus.h" #include "constants.h" #include "pq_functions.h" #if defined(STANDARD_PCP) #define POWER -100 #undef COMMUTATOR #define COMMUTATOR -200 static Logical is_ident(int *map, int i, int lastg); static Logical is_identity_map(int **map, int ndgen, int lastg); static int length_of_image(int gen, Logical *defn, int **map, struct pcp_vars *pcp); static void print_image_under_aut(FILE *present, int *preimage, int gen, Logical *defn, int **map, struct pcp_vars *pcp); static void print_definition(FILE *present, int *preimage, int gen, int *definition, struct pcp_vars *pcp); /* modify the stored relations under the action of the standard automorphism and print out the result -- this code is complex as a result of two problems: a. the "strange" form in which definitions of group generators are returned -- see note on "commutator" below; b. the need to meet the limitations imposed by the input routines of pq */ /* find the structure of pcp generator gen and store it in definition */ static void find_structure(int gen, int *definition, struct pcp_vars *pcp) { register int *y = y_address; register int structure = pcp->structure; register int lastg = pcp->lastg; /* register int u; */ register int v; register int i; int weight; int pointer; #include "access.h" pointer = y[structure + gen]; weight = WT(pointer); for (i = 1; i <= lastg; ++i) y[pcp->lused + i] = 0; /*u = PART2(pointer);*/ v = PART3(pointer); find_definition(gen, pcp->lused, weight, pcp); if (v == 0) { definition[0] = POWER; #if defined(DEBUG) printf("%d is defined on %d^%d = ", gen, u, pcp->p); #endif } else { #if defined(DEBUG) printf("%d is defined on [%d, %d] = ", gen, u, v); #endif definition[0] = COMMUTATOR; } for (i = 1; i <= weight; ++i) definition[i] = y[pcp->lused + i]; #if defined(DEBUG) for (i = 1; i <= weight; ++i) if (definition[i] != 0) printf("%d ", definition[i]); printf("\n"); #endif } /* print the defining relations of the group after applying the standard automorphism described in map */ void map_relations(int **map, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; register int ndgen = pcp->ndgen; register int ndrel = pcp->ndrel; register int lastg = pcp->lastg; register int relp = pcp->relp; register int dgen = pcp->dgen; register int generator; int *definition; register int i, j, k, l; register int pointer, length; int exp, absgen; FILE *present; Logical *defn; int *preimage = 0; int *image; Logical identity_map; /* write out the basic information */ present = OpenFile("ISOM_present", "w+"); fprintf(present, "1\n"); fprintf(present, "prime %d\n", pcp->p); fprintf(present, "class %d\n", pcp->cc); fprintf(present, "output %d\n", MIN_PRINT); if (pcp->extra_relations != 0) fprintf(present, "exponent %d\n", pcp->extra_relations); if (pcp->metabelian == TRUE) fprintf(present, "metabelian\n"); fprintf(present, "generators {"); /* if the map is the identity, then we need only the existing generators and relations */ if ((identity_map = is_identity_map(map, pga->ndgen, lastg))) { #if defined(DEBUG) printf("map is the identity map\n"); #endif for (i = 1; i <= ndgen; ++i) fprintf(present, "x%d, ", i); } else { defn = allocate_vector(lastg, 1, TRUE); preimage = allocate_vector(lastg, 1, TRUE); image = allocate_vector(ndgen, 1, TRUE); /* identify which defining generators map to which pcp generators of the Frattini quotient; two arrays are stored as follows -- preimage[i] = defining generator j image[k] = pcp generator l */ for (i = 1; i <= pga->ndgen; ++i) { for (j = 1; j <= ndgen && y[dgen + j] != i; ++j) ; if (j > ndgen) { printf("Error in map_relations\n"); exit(FAILURE); } preimage[i] = j; image[j] = i; } /* do we need to introduce new generators? */ for (i = 1; i <= pga->ndgen; ++i) { fprintf(present, "y%d, ", i); preimage[i] = 0; /* if (is_ident (map[i], i, lastg)) { fprintf (present, "x%d, ", preimage[i]); image[ preimage[i] ] = -i; } else { fprintf (present, "y%d, ", i); preimage[i] = 0; } */ } #if defined(DEBUG) printf("The correspondences are \n"); print_array(preimage, 1, pcp->lastg + 1); print_array(image, 1, ndgen + 1); #endif /* which pcp generators turn up in the image of the pcp generators of the Frattini quotient? */ for (i = 1; i <= pga->ndgen; ++i) length_of_image(i, defn, map, pcp); /* what are the new defining generators needed for new presentation? */ for (i = y[pcp->clend + 1] + 1; i <= lastg; ++i) if (defn[i] == TRUE) fprintf(present, "y%d, ", i); /* print the remaining defining generators for the new presentation */ for (i = 1; i <= ndgen; ++i) { if (image[i] >= 0) fprintf(present, "x%d, ", i); } } fprintf(present, "}\n"); #if defined(DEBUG) printf("First the generators\n"); printf("\nNow the relations\n"); #endif /* print the existing relations */ if (ndrel == 0) fprintf(present, " ;\n"); else fprintf(present, "relations {\n"); for (k = 1; k <= ndrel; ++k) { for (l = 1; l <= 2; ++l) { i = (k - 1) * 2 + l; pointer = y[relp + i]; length = y[pointer]; if (length > 1) { if (l == 2) fprintf(present, " = "); exp = y[pointer + 1]; if (exp != 1) fprintf(present, "("); for (i = 2; i <= length; ++i) { generator = y[pointer + i]; absgen = abs(generator); fprintf(present, "x%d", absgen); if (absgen != generator) fprintf(present, "^-1"); if (i != length) fprintf(present, " * "); } if (exp != 1) fprintf(present, ")^%d", exp); } else if ((length = abs(length)) > 1) { if (l == 2) fprintf(present, " = "); fprintf(present, "["); for (i = 2; i <= length; ++i) { generator = y[pointer + i]; generator = y[pointer + i]; absgen = abs(generator); fprintf(present, "x%d", absgen); if (absgen != generator) fprintf(present, "^-1"); if (i != length) fprintf(present, ", "); } fprintf(present, "]"); if ((exp = y[pointer + 1]) != 1) fprintf(present, "^%d", exp); } if (l == 2) { fprintf(present, ",\n"); } } } /* now print the mappings of the defining generators */ if (identity_map == FALSE) { for (i = 1; i <= pga->ndgen; ++i) { /* if (!is_ident (map[i], i, lastg)) { */ /* j = preimage[i]; */ for (j = 1; j <= ndgen && y[dgen + j] != i; ++j) ; fprintf(present, "x%d = ", j); print_image_under_aut(present, preimage, i, defn, map, pcp); fprintf(present, ",\n"); /* } */ } #if defined(DEBUG) printf("the required pcp definitions are "); print_array(defn, 1, 1 + lastg); #endif definition = allocate_vector(pcp->cc + 1, 0, FALSE); for (i = y[pcp->clend + 1] + 1; i <= lastg; ++i) if (defn[i] == TRUE) { /* look up and print the structure of the pcp generator i */ find_structure(i, definition, pcp); print_definition(present, preimage, i, definition, pcp); } free_vector(definition, 0); free_vector(preimage, 1); free_vector(image, 1); free_vector(defn, 1); } if (ndrel != 0) fprintf(present, "};\n"); CloseFile(present); } /* is pcp generator i mapped to the identity? its image is supplied as map */ static Logical is_ident(int *map, int i, int lastg) { register int j; Logical identity = TRUE; j = 1; while (j <= lastg && identity) { identity = (i == j) ? map[j] == 1 : map[j] == 0; ++j; } return identity; } /* is the map the identity on the pcp generators of the Frattini quotient */ static Logical is_identity_map(int **map, int ndgen, int lastg) { Logical identity = TRUE; register int i; i = 1; while (i <= ndgen && (identity = is_ident(map[i], i, lastg))) ++i; return identity; } /* find length of image of gen under map */ static int length_of_image(int gen, Logical *defn, int **map, struct pcp_vars *pcp) { register int lastg = pcp->lastg; register int i; int non_zero = 0; for (i = 1; i <= lastg; ++i) { if (map[gen][i] != 0) { defn[i] = TRUE; ++non_zero; } } return non_zero; } /* print image of gen under map */ static void print_image_under_aut(FILE *present, int *preimage, int gen, Logical *defn, int **map, struct pcp_vars *pcp) { register int lastg = pcp->lastg; register int i; int non_zero; int nmr_printed = 0; int preim, value; char *s; non_zero = length_of_image(gen, defn, map, pcp); assert(preimage); assert(defn); assert(map); for (i = 1; i <= lastg; ++i) { if (map[gen][i] == 0) continue; ++nmr_printed; preim = preimage[i]; s = (preim != 0) ? "x" : "y"; value = (preim != 0) ? preim : i; fprintf(present, "%s%d", s, value); if (map[gen][i] != 1) fprintf(present, "^%d", map[gen][i]); if (nmr_printed != non_zero) fprintf(present, " * "); } } /* print definition of pcp generator, gen */ static void print_definition(FILE *present, int *preimage, int gen, int *definition, struct pcp_vars *pcp) { register int *y = y_address; register int start = y[pcp->clend + 1] + 1; register int exponent; register int limit; register int i; int power, m, root = 0; Logical first; char *s; int r; #include "access.h" fprintf(present, "y%d = ", gen); if (gen < start) { fprintf(present, "y%d", gen); } else { /* replace generator by its definition */ if (definition[0] == POWER) { power = 0; first = TRUE; limit = WT(y[pcp->structure + gen]); for (m = 1; m <= limit; ++m) { if (definition[m] != 0) { ++power; if (first) { root = definition[m]; first = FALSE; } } } exponent = int_power(pcp->p, power - 1); s = preimage[root] != 0 ? "x" : "y"; r = preimage[root] != 0 ? preimage[root] : root; fprintf(present, "%s%d^%d", s, r, exponent); } if (definition[0] == COMMUTATOR) { /* a "commutator" definition may be of the sort [b, ..., b, a, a, a] where there are k occurrences of the first term, b; in fact, this corresponds to a definition [b^(p^(k - 1)), a, a, a]; we must first check to see if this is the case */ power = 1; root = definition[1]; limit = WT(y[pcp->structure + gen]); for (i = 2; i < limit && root == definition[i]; ++i) ++power; exponent = int_power(pcp->p, power - 1); fprintf(present, "["); s = preimage[root] != 0 ? "x" : "y"; r = preimage[root] != 0 ? preimage[root] : root; if (exponent != 1) fprintf(present, "%s%d^%d,", s, r, exponent); else fprintf(present, "%s%d,", s, r); for (m = i; m <= limit; ++m) { root = definition[m]; s = preimage[root] != 0 ? "x" : "y"; r = preimage[root] != 0 ? preimage[root] : root; fprintf(present, " %s%d", s, r); if (m != limit) fprintf(present, ","); else fprintf(present, "]"); } } fprintf(present, ",\n"); } } #endif anupq-3.3.0/src/find_allowable_subgroup.c000644 000766 000024 00000011576 14355420571 020773 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A find_allowable_subgroup.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "pq_functions.h" #include "standard.h" #if defined(STANDARD_PCP) /* which generator of the p-covering group did u and v define? */ static int find_index(int u, int v, int **definition, int q) { register int i; for (i = 0; i < q; ++i) if (u == definition[i][0] && v == definition[i][1]) return i; return -1; } /* given a presentation for the p-covering group of a class c p-quotient; find the allowable subgroup which determines the presentation for the class c + 1 quotient; set up its definition set both as a bit_string and as a subset */ int **find_allowable_subgroup(int option, FILE *cover_tmp_file, FILE *group_tmp_file, int *bit_string, int **subset, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; register int generator, exp, r, i; register int structure, lastg; register int start = pcp->ccbeg; register int q = pga->q; register int end = start + q - 1; register int pointer; register int length; register int u, v; int **definition; int *relation; int **subgroup; int index, x; int nmr_defs; #include "access.h" /* restore the presentation for the p-covering group */ restore_pcp(cover_tmp_file, pcp); RESET(cover_tmp_file); definition = allocate_matrix(q, 2, 0, FALSE); structure = pcp->structure; /* store the definitions of the generators of the relevant initial segment subgroup of the p-multiplicator */ for (generator = start; generator <= end; ++generator) { pointer = y[structure + generator]; u = PART2(pointer); v = PART3(pointer); definition[generator - start][0] = u; definition[generator - start][1] = v; } #if defined(DEBUG) printf("The definition matrix is\n"); print_matrix(definition, q, 2); #endif /* now restore the presentation for the class c + 1 quotient */ restore_pcp(group_tmp_file, pcp); RESET(group_tmp_file); #if defined(DEBUG) pcp->diagn = TRUE; print_presentation(TRUE, pcp); pcp->diagn = FALSE; #endif structure = pcp->structure; lastg = pcp->lastg; subgroup = allocate_matrix(pga->s, q, 0, TRUE); relation = allocate_vector(q, 0, TRUE); *bit_string = 0; *subset = allocate_vector(lastg - start + 1, 0, FALSE); /* check the values of the definitions in this quotient and set up its definition set */ index = 0; for (generator = start; generator <= lastg; ++generator) { pointer = y[structure + generator]; u = PART2(pointer); v = PART3(pointer); if ((x = find_index(u, v, definition, q)) != -1) { *bit_string |= 1 << x; (*subset)[index] = x; subgroup[index++][x] = 1; relation[x] = TRUE; } else { (*subset)[index++] = -1; } } #if defined(DEBUG) printf("Bit string and matrix are %d and ", *bit_string); print_array(*subset, 0, lastg - start); #endif if (option == RELATIVE) { nmr_defs = 0; for (i = 0; i < lastg - start + 1; ++i) if ((*subset)[i] >= 0) ++nmr_defs; pga->s = nmr_defs; /* memory leakage September 1996 */ free_matrix(definition, q, 0); free_vector(relation, 0); free_matrix(subgroup, pga->s, 0); free_vector(*subset, 0); *subset = (int *)0; return (int **)0; } /* look up necessary relations in the class c + 1 quotient and store the appropriate exponents in subgroup matrix */ for (r = 0; r < q; ++r) { if (relation[r] == TRUE) continue; u = definition[r][0]; v = definition[r][1]; /* look up u^p or [u, v] */ pointer = (v == 0) ? y[pcp->ppower + u] : y[y[pcp->ppcomm + u] + v]; /* set up the exponents of these relations in the subgroup matrix */ if (pointer > 0) subgroup[pointer - start][r] = 1; else if (pointer < 0) { pointer = -pointer + 1; length = y[pointer]; for (i = 1; i <= length; i++) { exp = FIELD1(y[pointer + i]); generator = FIELD2(y[pointer + i]); if (generator >= start) subgroup[generator - start][r] = exp; } } } #if defined(DEBUG) printf("The subgroup matrix is\n"); print_matrix(subgroup, pga->s, q); #endif free_matrix(definition, q, 0); free_vector(relation, 0); return subgroup; } #endif anupq-3.3.0/src/update.c000644 000766 000024 00000013021 14355420571 015350 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A update.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" /* the new values for irredundant generators have been assembled in eliminate in a table pointed to by y[dgen]; update the value represented by y[ptr] and y[ptr] if necessary */ void update(int ptr, struct pcp_vars *pcp) { register int *y = y_address; register int g; register int i; register int k; register int p1 = ptr; register int p2; register int p3; register int renumb; register int count; register int expfba; register int count1; register int factor; register int count2; register int lastg; register int value; register int structure = pcp->structure; register int lused = pcp->lused; register int class_beg = pcp->ccbeg; register int dgen = pcp->dgen; #include "access.h" if (y[p1] == 0) return; /* consider case where y[ptr] represents a generator */ if (y[p1] > 0) { if (class_beg - y[p1] > 0) return; /* the generator is of class pcp->cc */ g = y[p1]; value = y[structure + g]; if (value == 0) { /* g is now trivial */ y[p1] = 0; } else if (value > 0) { /* g is an irredundant generator */ renumb = -y[dgen] - class_beg + 2; y[p1] = y[renumb + g]; } else { /* g is redundant with value pointed to by y[structure + g] */ if (is_space_exhausted(g - class_beg + 1, pcp)) return; lused = pcp->lused; p2 = -y[structure + g]; count = y[p2 + 1]; renumb = -y[dgen] - class_beg + 2; /* make a renumbered copy of the value of g */ for (i = 1; i <= count; i++) { k = FIELD2(y[p2 + i + 1]); y[lused + 2 + i] = PACK2(FIELD1(y[p2 + i + 1]), y[renumb + k]); } y[lused + 1] = p1; y[lused + 2] = count; y[p1] = -(lused + 1); pcp->lused += count + 2; } return; } /* the value represented by y[ptr] is a string; find the length of the old class pcp->cc part and calculate the new class pcp->cc part (in exponent form from y[lused + 1]) */ if (is_space_exhausted(pcp->lastg + 2, pcp)) return; lused = pcp->lused; renumb = -y[dgen] - class_beg + 2; p3 = -y[p1]; expfba = lused + 1 - class_beg; /* set exponent form trivial */ for (i = class_beg, lastg = pcp->lastg; i <= lastg; i++) y[expfba + i] = 0; count = y[p3 + 1]; /* convert each symbol of old class pcp->cc part */ for (count1 = count; (g = FIELD2(y[p3 + count1 + 1])) >= class_beg && count1 > 0; count1--) { if ((i = y[structure + g]) >= 0) { /* g is irredundant so renumber it */ if (i > 0) { g = y[renumb + g]; y[expfba + g] += FIELD1(y[p3 + count1 + 1]); } } else { /* g is redundant */ p2 = -y[structure + g]; factor = FIELD1(y[p3 + count1 + 1]); count2 = y[p2 + 1]; for (i = 1; i <= count2; i++) { g = FIELD2(y[p2 + i + 1]); g = y[renumb + g]; y[expfba + g] += factor * FIELD1(y[p2 + i + 1]); } } } /* check if old class pcp->cc part was trivial */ if (count1 - count >= 0) return; /* convert new class pcp->cc part from exponent form to string */ count2 = 0; for (i = class_beg, lastg = pcp->lastg; i <= lastg; i++) { if (y[expfba + i] % pcp->p > 0) { count2++; y[lused + count2] = PACK2(y[expfba + i] % pcp->p, i); } } /* check if new class pcp->cc part is trivial */ if (count2 <= 0) { /* if entire value is trivial, deallocate old value */ if (count1 <= 0) { y[p1] = y[p3] = 0; return; } /* deallocate old class pcp->cc part */ if (count == count1 + 1) y[p3 + count1 + 2] = -1; else { y[p3 + count1 + 3] = count - count1 - 2; y[p3 + count1 + 2] = 0; } /* fix header block */ y[p3 + 1] = count1; return; } /* new part is nontrivial; check if it is longer than the old class pcp->cc part */ if (count > count1 + count2) { /* new part is shorter than old part so deallocate the spare words */ if (count == count1 + count2 + 1) y[p3 + count1 + count2 + 2] = -1; else { y[p3 + count1 + count2 + 2] = 0; y[p3 + count1 + count2 + 3] = count - count1 - count2 - 2; } } if (count >= count1 + count2) { /* copy in the new class pcp->cc part */ for (i = 1; i <= count2; i++) y[p3 + count1 + i + 1] = y[lused + i]; /* fix header block */ y[p3 + 1] = count1 + count2; return; } /* new part is longer than the old part; move up the new class pcp->cc part to copy in the earlier parts */ k = lused + count2 + 1; for (i = 1; i <= count2; i++) { --k; y[k + 2 + count1] = y[k]; } k = count1 + 2; /* copy in the earlier parts */ for (i = 1; i <= k; i++) y[lused + i] = y[p3 - 1 + i]; /* deallocate old value */ y[p3] = 0; /* fix new header block */ y[lused + 2] = count1 + count2; /* fix pointer */ y[p1] = -(lused + 1); pcp->lused += count1 + count2 + 2; } anupq-3.3.0/src/update_generators.c000644 000766 000024 00000010740 14355420571 017606 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A update_generators.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" /* add pseudo-generators to redundant defining generators; also recompute required inverses of defining generators; this routine must be called before a call to collect defining relations; if there are redundant defining generators, calls to eliminate should only be done after calling update_generator because the space reserved for the pseudo-generator(s) added by update_generator in structure is not set up yet */ void update_generators(struct pcp_vars *pcp) { register int *y = y_address; register int f; register int i; register int cp; register int start; register int ycol; register int length; register int extra; register int value; register int prime = pcp->p; register int dgen = pcp->dgen; register int ndgen = pcp->ndgen; register int lused; register int lastg; #include "access.h" /* first, add pseudo-generators to redundant defining generators */ for (f = 1; f <= ndgen; f++) { value = y[dgen + f]; if (value == 0) { /* defining generator f was trivial; insert pseudo-generator */ if (is_space_exhausted(3, pcp)) return; pcp->lused += 3; lused = pcp->lused; /* set up block header block and pointer to it */ y[lused - 2] = dgen + f; y[lused - 1] = 1; y[dgen + f] = -(lused - 2); /* add pseudo-generator */ pcp->lastg++; y[lused] = PACK2(1, pcp->lastg); /* if there are greater than MAXGENS defining generators then this field will overflow; such an overflow causes some output idiocies, but no logical errors */ y[pcp->structure + pcp->lastg] = PACK3(0, 0, f) + INSWT(pcp->cc); } else if (value < 0) { /* old entry was non-trivial so we deallocate it and insert pseudo-generator */ extend_tail(dgen + f, 0, f, pcp); if (pcp->overflow) return; } } /* update submlg to account for any new pseudo-generators introduced */ pcp->submlg = pcp->subgrp - pcp->lastg; /* now, recompute required inverses -- we know the inverse of f to the end of class pcp->cc - 1; denote this by f'; evaluate f * f' and take the inverse of this result to give the class pcp->cc part of f^-1 */ for (f = 1; f <= ndgen; f++) { if (y[dgen - f] > 0) continue; if (is_space_exhausted(2 * pcp->lastg + 2, pcp)) return; lastg = pcp->lastg; lused = pcp->lused; cp = lused + lastg + 2; for (i = 1; i <= lastg; ++i) y[cp + i] = 0; ycol = y[dgen + f]; collect(ycol, cp, pcp); ycol = y[dgen - f]; collect(ycol, cp, pcp); /* inverse of the class pcp->cc part of f^(-1) is now in y[cp + pcp->ccbeg] to y[cp + pcp->lastg] in exponent form; convert it to string form */ length = 0; for (i = pcp->ccbeg; i <= lastg; i++) { if ((ycol = y[cp + i]) > 0) { ++length; y[lused + 2 + length] = PACK2(prime - ycol, i); } } if (length == 0) continue; /* the class pcp->cc part of f^(-1) is nontrivial */ if (y[dgen - f] >= 0) { /* f^(-1) was previously trivial */ y[lused + 1] = dgen - f; y[lused + 2] = length; y[dgen - f] = -(lused + 1); pcp->lused += length + 2; lused = pcp->lused; } else { /* f^(-1) was nontrivial, so make room for lower class entries */ start = -y[dgen - f]; extra = y[start + 1]; ycol = lused + length + 3; for (i = 1; i <= length; i++) y[ycol + extra - i] = y[ycol - i]; /* copy header block and lower class entries */ for (i = 1; i <= extra; i++) y[lused + i + 2] = y[start + i + 1]; /* fix header block */ y[lused + 1] = y[start]; y[lused + 2] = length + extra; /* deallocate old entry */ y[start] = 0; /* set up pointer to new entry */ y[dgen - f] = -(lused + 1); pcp->lused += length + extra + 2; } } } anupq-3.3.0/src/defaults_pga.c000644 000766 000024 00000023106 14355420571 016531 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A defaults_pga.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "pq_functions.h" #define SINGLE_STAGE 5 /* set up algorithm and print defaults for p-group generation calculation */ void defaults_pga(int option, int *k, struct pga_vars *flag, struct pga_vars *pga, struct pcp_vars *pcp) { int default_algorithm; int default_output; int default_perm_info; int default_group_info; int default_orbit_info; int default_automorphism_info; set_defaults(flag); if (option == SINGLE_STAGE) read_step_size(pga, pcp); flag->step_size = pga->step_size; query_solubility(flag); read_value( TRUE, "Do you want default algorithm? ", &default_algorithm, INT_MIN); if (!default_algorithm) { read_subgroup_rank(k); if (flag->soluble) query_space_efficiency(flag); query_terminal(flag); query_exponent_law(flag); query_metabelian_law(flag); } else { *k = 0; } read_value(TRUE, "Do you want default output? ", &default_output, INT_MIN); if (default_output) return; read_value(TRUE, "Do you want default permutation group output? ", &default_perm_info, INT_MIN); if (!default_perm_info) { query_degree_aut_information(flag); query_perm_information(flag); } read_value(TRUE, "Do you want default orbit information? ", &default_orbit_info, INT_MIN); if (!default_orbit_info) query_orbit_information(flag); read_value(TRUE, "Do you want default group information? ", &default_group_info, INT_MIN); if (!default_group_info) query_group_information(pcp->p, flag); read_value(TRUE, "Do you want default automorphism group information? ", &default_automorphism_info, INT_MIN); if (!default_automorphism_info) query_aut_group_information(flag); read_value(TRUE, "Do you want algorithm trace information? ", &flag->trace, INT_MIN); } /* set printing and algorithm defaults up in flag structure for storage */ void set_defaults(struct pga_vars *flag) { flag->print_extensions = FALSE; flag->print_automorphism_matrix = FALSE; flag->print_degree = FALSE; flag->print_permutation = FALSE; flag->print_subgroup = FALSE; flag->print_reduced_cover = FALSE; flag->print_group = FALSE; flag->print_nuclear_rank = FALSE; flag->print_multiplicator_rank = FALSE; flag->print_orbit_summary = FALSE; flag->print_orbits = FALSE; flag->print_orbit_arrays = FALSE; flag->print_commutator_matrix = FALSE; flag->print_automorphisms = FALSE; flag->print_automorphism_order = FALSE; flag->print_stabiliser_array = FALSE; flag->trace = FALSE; flag->space_efficient = FALSE; flag->soluble = TRUE; flag->terminal = FALSE; flag->metabelian = FALSE; flag->exponent_law = 0; } /* copy printing and algorithm defaults from flag structure to pga */ void copy_flags(struct pga_vars *flag, struct pga_vars *pga) { pga->print_extensions = flag->print_extensions; pga->print_automorphism_matrix = flag->print_automorphism_matrix; pga->print_degree = flag->print_degree; pga->print_permutation = flag->print_permutation; pga->print_subgroup = flag->print_subgroup; pga->print_reduced_cover = flag->print_reduced_cover; pga->print_group = flag->print_group; pga->print_nuclear_rank = flag->print_nuclear_rank; pga->print_multiplicator_rank = flag->print_multiplicator_rank; pga->print_orbits = flag->print_orbits; pga->print_orbit_summary = flag->print_orbit_summary; pga->print_orbit_arrays = flag->print_orbit_arrays; pga->print_commutator_matrix = flag->print_commutator_matrix; pga->print_automorphisms = flag->print_automorphisms; pga->print_automorphism_order = flag->print_automorphism_order; pga->print_stabiliser_array = flag->print_stabiliser_array; pga->trace = flag->trace; pga->space_efficient = flag->space_efficient; pga->soluble = flag->soluble; pga->terminal = flag->terminal; pga->exponent_law = flag->exponent_law; pga->metabelian = flag->metabelian; pga->step_size = flag->step_size; } /* use space efficient option? */ void query_space_efficiency(struct pga_vars *pga) { read_value( TRUE, "Space efficient computation? ", &pga->space_efficient, INT_MIN); } /* orbit information to be printed */ void query_orbit_information(struct pga_vars *pga) { read_value(TRUE, "Summary of orbit information? ", &pga->print_orbit_summary, INT_MIN); read_value( TRUE, "Complete listing of orbits? ", &pga->print_orbits, INT_MIN); pga->print_orbit_arrays = FALSE; } /* group information to be printed */ void query_group_information(int p, struct pga_vars *pga) { read_value(TRUE, "Print standard matrix of allowable subgroup? ", &pga->print_subgroup, INT_MIN); read_value(TRUE, "Presentation of reduced p-covering groups? ", &pga->print_reduced_cover, INT_MIN); read_value(TRUE, "Presentation of immediate descendants? ", &pga->print_group, INT_MIN); read_value(TRUE, "Print nuclear rank of descendants? ", &pga->print_nuclear_rank, INT_MIN); read_value(TRUE, "Print p-multiplicator rank of descendants? ", &pga->print_multiplicator_rank, INT_MIN); } /* automorphism group information to be printed */ void query_aut_group_information(struct pga_vars *pga) { read_value(TRUE, "Print commutator matrix? ", &pga->print_commutator_matrix, INT_MIN); read_value(TRUE, "Automorphism group description of descendants? ", &pga->print_automorphisms, INT_MIN); #ifdef HAVE_GMP read_value(TRUE, "Automorphism group order of descendants? ", &pga->print_automorphism_order, INT_MIN); #else /* HACK: still ask the question, to prevent the GAP interface from getting "confused" (it blindly fires input at us, without checking what the prompt is). */ int fake; read_value(TRUE, "PLACEHOLDER QUESTION (GMP disabled), input any integer? ", &fake, INT_MIN); #endif pga->print_stabiliser_array = FALSE; } /* degree and extended automorphism information to be printed */ void query_degree_aut_information(struct pga_vars *pga) { read_value(TRUE, "Print degree of permutation group? ", &pga->print_degree, INT_MIN); read_value( TRUE, "Print extended automorphisms? ", &pga->print_extensions, INT_MIN); } /* other permutation group information to be printed */ void query_perm_information(struct pga_vars *pga) { read_value(TRUE, "Print automorphism matrices? ", &pga->print_automorphism_matrix, INT_MIN); read_value(TRUE, "Print permutations? ", &pga->print_permutation, INT_MIN); } /* read step size */ void read_step_size(struct pga_vars *pga, struct pcp_vars *pcp) { Logical reading = TRUE; while (reading) { read_value(TRUE, "Input step size: ", &pga->step_size, 1); reading = (pga->step_size <= 0); if (isatty(0)) reading = (reading || (pga->step_size > pcp->newgen)); if (reading) printf("Error: step sizes range from 1 to %d only\n", pcp->newgen); /* if (reading = (pga->step_size <= 0 || pga->step_size > pcp->newgen)) printf ("Error: step sizes range from 1 to %d only\n", pcp->newgen); */ } } /* read class bound */ void read_class_bound(int *class_bound, struct pcp_vars *pcp) { read_value(TRUE, "Input class bound on descendants: ", class_bound, pcp->cc); } /* read order bound */ void read_order_bound(int *order_bound, struct pcp_vars *pcp) { register int *y = y_address; int least_order = y[pcp->clend + pcp->cc - 1] + 1; read_value( TRUE, "Input order bound on descendants: ", order_bound, least_order); } /* read rank of initial-segment subgroup */ void read_subgroup_rank(int *k) { read_value(TRUE, "Rank of the initial segment subgroup? ", k, 0); *k = MAX(0, *k - 1); } /* supply a PAG-generating sequence for automorphism group? */ void query_solubility(struct pga_vars *pga) { read_value(TRUE, "PAG-generating sequence for automorphism group? ", &pga->soluble, INT_MIN); } /* completely process all (capable and terminal) descendants? */ void query_terminal(struct pga_vars *pga) { read_value(TRUE, "Completely process terminal descendants? ", &pga->terminal, INT_MIN); } /* set exponent law for all descendants to satisfy */ void query_exponent_law(struct pga_vars *pga) { read_value( TRUE, "Input exponent law (0 if none): ", &pga->exponent_law, INT_MIN); } /* enforce metabelian law on all descendants */ void query_metabelian_law(struct pga_vars *pga) { read_value(TRUE, "Enforce metabelian law? ", &pga->metabelian, INT_MIN); } anupq-3.3.0/src/extend_automorphisms.c000644 000766 000024 00000012656 14355420571 020364 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A extend_automorphisms.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" static int nmr_of_bytes; static void extend_automorphism(int **auts, struct pcp_vars *pcp); /* for each automorphism, compute its action on each of the generators */ void extend_automorphisms(int ***auts, int nmr_of_auts, struct pcp_vars *pcp) { register int alpha; nmr_of_bytes = pcp->lastg * sizeof(int); if (is_space_exhausted(7 * pcp->lastg + 4, pcp)) return; for (alpha = 1; alpha <= nmr_of_auts; ++alpha) extend_automorphism(auts[alpha], pcp); } /* extend the automorphism whose action on the defining generators of the group is described by the supplied 2-dimensional matrix, auts, to act on all of the generators of the group */ static void extend_automorphism(int **auts, struct pcp_vars *pcp) { register int *y = y_address; register int generator; register int lastg = pcp->lastg; register int structure = pcp->structure; int cp1 = pcp->submlg - lastg - 2; int cp2 = cp1 - lastg; int result = cp2 - lastg; int start = y[pcp->clend + 1] + 1; register int value; int u, v; #include "access.h" /* update submlg because of possible call to power */ pcp->submlg -= (3 * lastg + 2); /* for each generator, compute its image under the action of auts */ for (generator = start; generator <= lastg; ++generator) { /* examine the definition of generator */ value = y[structure + generator]; u = PART2(value); v = PART3(value); if (v == 0) extend_power(cp1, cp2, u, auts, pcp); else extend_commutator(cp1, cp2, u, v, auts, pcp); /* solve the appropriate equation, storing the image of generator under the action of alpha at result */ solve_equation(cp1, cp2, result, pcp); /* now copy the result to auts */ memcpy(auts[generator] + 1, y + result + 1, nmr_of_bytes); } /* reset value of submlg */ pcp->submlg += (3 * lastg + 2); } /* given generator t of the p-multiplicator, whose definition is u^p; hence, we have the equation u^p = W * t where W is a word (possibly trivial) in the generators of the group; find the image of t under alpha by setting up (W)alpha at cp1, ((u)alpha)^p at cp2, and then call solve_equation */ void extend_power(int cp1, int cp2, int u, int **auts, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int lastg = pcp->lastg; /* set up the image of u under alpha at cp2 and zero vector at cp1 */ for (i = 1; i <= lastg; ++i) { y[cp2 + i] = auts[u][i]; y[cp1 + i] = 0; } /* raise the image of u under alpha to its pth power */ power(pcp->p, cp2, pcp); /* set up image of W under alpha at cp1 */ if (y[pcp->ppower + u] < 0) collect_image_of_string(-y[pcp->ppower + u], cp1, auts, pcp); } /* given generator t of the p-multiplicator, whose definition is [u, v]; hence, we have the equation [u, v] = W * t, or equivalently, u * v = v * u * W * t where W is a word (possibly trivial) in the generators of the group; find the image of t under alpha by setting up (v)alpha * (u)alpha * (W)alpha at cp1, (u)alpha * (v)alpha at cp2 and then call solve_equation */ void extend_commutator( int cp1, int cp2, int u, int v, int **auts, struct pcp_vars *pcp) { register int *y = y_address; int pointer; /* set up image under alpha of u at cp2 and image of v at cp1 */ memcpy(y + cp2 + 1, auts[u] + 1, nmr_of_bytes); memcpy(y + cp1 + 1, auts[v] + 1, nmr_of_bytes); /* collect image of v under alpha at cp2 */ collect_image_of_generator(cp2, auts[v], pcp); /* collect image of u under alpha at cp1 */ collect_image_of_generator(cp1, auts[u], pcp); /* collect image of W under alpha at cp1 */ pointer = y[pcp->ppcomm + u]; if (y[pointer + v] < 0) collect_image_of_string(-y[pointer + v], cp1, auts, pcp); } /* collect the image of a generator under the action of an automorphism and store the result at cp */ void collect_image_of_generator(int cp, int *auts, struct pcp_vars *pcp) { register int *y = y_address; register int lused = pcp->lused; register int lastg = pcp->lastg; register int length = 0; register int i; int exp; #include "access.h" for (i = 1; i <= lastg; ++i) { if ((exp = auts[i]) != 0) y[lused + 1 + (++length)] = PACK2(exp, i); } y[lused + 1] = length; collect(-lused, cp, pcp); } /* collect image of supplied string under the action of supplied automorphism, auts, and store the result at cp */ void collect_image_of_string(int string, int cp, int **auts, struct pcp_vars *pcp) { register int *y = y_address; register int i; int generator, exp; int length = y[string + 1] - 1; /* last element of string is in p-multiplicator */ #include "access.h" /* collect the string generator by generator */ for (i = 1; i <= length; ++i) { generator = FIELD2(y[string + 1 + i]); exp = FIELD1(y[string + 1 + i]); while (exp > 0) { collect_image_of_generator(cp, auts[generator], pcp); --exp; } } } anupq-3.3.0/src/maxoccur.c000644 000766 000024 00000002326 14355420571 015715 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A maxoccur.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" /* set maximal occurrences for pcp generators of weight one */ void set_maxoccur(struct pcp_vars *pcp) { register int *y = y_address; register int ndgen = pcp->ndgen; register int dgen = pcp->dgen; register int moccur = dgen + ndgen; register int nmr_of_generators = y[pcp->clend + 1]; register int sum = 0; register int i; Logical zero = FALSE; Logical flag; printf("Input occurrence limits for each of the %d", nmr_of_generators); printf(" pcp generators of weight one: "); for (i = 1; i <= nmr_of_generators; i++) { flag = (i == nmr_of_generators) ? TRUE : FALSE; read_value(flag, "", &y[moccur + i], 0); sum += y[moccur + i]; zero |= (y[moccur + i] == 0); } if (sum == 0) pcp->nocset = 0; else if (zero) pcp->nocset = 1; else pcp->nocset = sum; } anupq-3.3.0/src/last_class.c000644 000766 000024 00000003167 14355420571 016230 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A last_class.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" /* delete all entries for class pcp->cc and note that it is still set up (that is, set pcp->ncset = 1) */ void last_class(struct pcp_vars *pcp) { register int *y = y_address; register int i; register int j; register int p1; register int bound; register int structure; register int ndgen = pcp->ndgen; if (pcp->ncset != 0 || pcp->cc == 1) { text(10, 0, 0, 0, 0); return; } /* remove all word and subgroup tables entries */ delete_tables(0, pcp); /* remove all equations */ structure = pcp->structure; for (i = pcp->ccbeg, bound = pcp->lastg; i <= bound; i++) { if ((j = y[structure + i]) < 0) { /* deallocate this equation */ y[-j] = 0; } } /* initialise this value to 0 */ y[pcp->clend + pcp->cc] = 0; --pcp->cc; pcp->lastg = pcp->ccbeg - 1; pcp->submlg = pcp->subgrp - pcp->lastg; pcp->ccbeg = y[pcp->clend + pcp->cc - 1] + 1; for (i = 1, bound = pcp->lastg; i <= bound; i++) down_class(pcp->ppower + i, pcp); p1 = y[pcp->ppcomm + 2]; for (i = 1, bound = pcp->ncomm; i <= bound; i++) down_class(p1 + i, pcp); for (i = 1; i <= ndgen; i++) { down_class(pcp->dgen + i, pcp); down_class(pcp->dgen - i, pcp); } pcp->ncset = 1; } anupq-3.3.0/src/commute_dgen.c000644 000766 000024 00000010575 14355420571 016547 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A commute_dgen.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" #include "pq_functions.h" #include "pretty_filterfns.h" #include "word_types.h" static void collect_defining_generator_word(int ptr, int cp, struct pcp_vars *pcp); /* calculate a power of a left-normed commutator of supplied depth by repeated calls to find_commutator; set up the result as an exponent vector with base address pcp->lused in order to permit the result to be handed to echelon easily; each component is a defining generator */ void commute_defining_generators(int format, struct pcp_vars *pcp) { register int *y = y_address; register int ptr, cp1, cp2, cp3, cp4, result; register int lastg = pcp->lastg; register int total; int disp = 0; int type; int depth; int exp; total = 6 * lastg + 6; if (is_space_exhausted(total, pcp)) return; cp1 = pcp->submlg - lastg - 2; cp2 = cp1 - lastg; cp3 = cp2 - lastg; cp4 = cp3 - lastg; result = cp4 - lastg; ptr = pcp->lused + 1; /* fudge the value of submlg because of possible call to power */ pcp->submlg -= total; read_value(TRUE, "Input number of components of commutator: ", &depth, 2); /* read in a and set it up at cp2 and cp3 */ type = FIRST_ENTRY; if (format == BASIC) read_word(stdin, disp, type, pcp); else pretty_read_word(stdin, disp, type, pcp); collect_defining_generator_word(ptr, cp2, pcp); copy(cp2, lastg, cp3, pcp); type = NEXT_ENTRY; disp = y[ptr] + 1; while (--depth > 0) { /* read in next component, b, and set it up at cp1 and cp4 */ if (format == BASIC) read_word(stdin, disp, type, pcp); else pretty_read_word(stdin, disp, type, pcp); collect_defining_generator_word(ptr + disp, cp1, pcp); copy(cp1, lastg, cp4, pcp); /* solve the equation (ba) * x = ab to obtain [a, b] */ find_commutator(cp1, cp2, cp3, cp4, result, pcp); copy(result, lastg, cp2, pcp); copy(result, lastg, cp3, pcp); } read_value(TRUE, "Input required power of this commutator: ", &exp, 1); power(exp, result, pcp); /* print the commutator */ setup_word_to_print("commutator", result, ptr, pcp); /* copy result to pcp->lused */ copy(result, lastg, pcp->lused, pcp); /* reset the value of submlg */ pcp->submlg += total; } /* collect word in defining generators stored as string at y[ptr] and place the result as exponent vector at cp */ static void collect_defining_generator_word(int ptr, int cp, struct pcp_vars *pcp) { register int *y = y_address; int i, generator, genval; #if defined(DEBUG) int j, word_len; #endif int length, exp; register int lastg = pcp->lastg; /* zero out lastg entries in array in order to store result */ for (i = 1; i <= lastg; ++i) y[cp + i] = 0; length = y[ptr]; for (i = 1; i < length; ++i) { generator = y[ptr + 1 + i]; genval = y[pcp->dgen + generator]; #if defined(DEBUG) if (genval > 0) printf("%d %d\n", generator, genval); else if (genval < 0) { printf("%d %d ", generator, y[-genval]); word_len = y[-genval + 1]; for (j = 1; j <= word_len; ++j) printf(" %d", y[-genval + 1 + j]); }; if (genval == 0) printf("No defining generator %d -- taken to be the identity\n", generator); #endif collect(genval, cp, pcp); } /* calculate power of this word */ exp = y[ptr + 1]; power(exp, cp, pcp); #if defined(DEBUG) print_array(y, cp, cp + pcp->lastg + 1); #endif } /* prepare to collect word in defining generators */ void setup_defgen_word_to_collect( FILE *file, int format, int type, int cp, struct pcp_vars *pcp) { int disp = pcp->lastg + 2; register int ptr; ptr = pcp->lused + 1 + disp; if (format == BASIC) read_word(file, disp, type, pcp); else pretty_read_word(file, disp, type, pcp); collect_defining_generator_word(ptr, cp, pcp); if (type == ACTION || file != stdin) return; setup_word_to_print("result of collection", cp, ptr, pcp); } anupq-3.3.0/src/FreeSpace.c000644 000766 000024 00000005122 14355420571 015726 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A FreeSpace.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pga_vars.h" #include "pcp_vars.h" /* free space used by vector, a, whose first index is start */ void free_vector(int *a, int start) { #ifdef DEBUG printf("Free vector\n"); #endif if (start) ++a; free(a); } /* free space used by matrix, a, whose indices commence at either 0 or 1 */ void free_matrix(int **a, int n, int start) { register int i; #ifdef DEBUG printf("Free matrix\n"); #endif if (n == 0) n = 1; for (i = start; i < start + n; ++i) { if (start) ++a[i]; free(a[i]); } if (start) ++a; free(a); } /* free space used by array, a, whose indices commence at either 0 or 1 */ void free_array(int ***a, int n, int m, int start) { register int i, j; #ifdef DEBUG printf("Free array\n"); #endif if (n == 0) n = 1; if (m == 0) m = 1; for (i = start; i < start + n; ++i) { for (j = start; j < start + m; ++j) { if (start) ++a[i][j]; free(a[i][j]); } if (start) ++a[i]; free(a[i]); } if (start) ++a; free(a); } /* free space used by character vector, a, whose first index is start */ void free_char_vector(char *a, int start) { #ifdef DEBUG printf("Free char vector\n"); #endif if (start) ++a; free(a); } /* free space used by character matrix, a */ void free_char_matrix(char **a, int n) { register int i; #ifdef DEBUG printf("Free char matrix\n"); #endif if (n == 0) n = 1; for (i = 0; i < n; ++i) free(a[i]); free(a); } /* free space used in computing orbits and stabilisers */ void free_space(Logical soluble_computation, int **perms, int *orbit_length, int *a, int *b, char *c, struct pga_vars *pga) { int nmr_of_perms = (pga->space_efficient ? 1 : pga->nmr_of_perms); #ifdef DEBUG printf("Free space routine\n"); #endif free_matrix(perms, nmr_of_perms, 1); free_vector(orbit_length, 1); free_vector(a, 1); if (soluble_computation) { free_vector(b, 1); free_char_vector(c, 1); } free_vector(pga->map, 1); free_vector(pga->rep, 1); free_vector(pga->powers, 0); free_vector(pga->inverse_modp, 0); } anupq-3.3.0/src/close_relations.c000644 000766 000024 00000010622 14355420571 017257 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A close_relations.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "pq_functions.h" #define SORT_FACTOR 25 /* close a queue of relations under the action of the automorphisms; each of length entries in the queue is a pointer to a relation of the sort x = y1^a1 ... yq^aq where each of x and y are among the new generators introduced; apply automorphism alpha to this relation and rewrite to obtain (y1^a1 ... yq^aq) * x^-1 = identity this new relation is now echelonised */ void close_relations(Logical report, int limit, int queue_type, int *head, int *list, int *queue, int length, int *long_queue, int *long_queue_length, struct pcp_vars *pcp) { register int *y = y_address; char *s; char *t; int nmr_reds = 0; int current = 1; int gen; int relation_length; int generator, exponent; register int offset; int *copy; int alpha, i; int cp, p1; int start = y[pcp->clend + pcp->cc - 1] + 1; int prime = pcp->p; int pm1 = pcp->pm1; #include "access.h" while (current <= length) { gen = queue[current]; ++current; if (gen == 0) continue; if (current % SORT_FACTOR == 1) { copy = queue + current - 1; bubble_sort(copy, length - current + 1, pcp); } /* apply automorphism alpha to the relation */ for (alpha = 1; alpha <= pcp->m; ++alpha) { if (is_space_exhausted(2 * pcp->lastg, pcp)) { pcp->overflow = TRUE; return; } cp = pcp->lused; for (i = 1; i <= 2 * pcp->lastg; ++i) y[cp + i] = 0; offset = (alpha - 1) * pcp->lastg; /* is the relation trivial? */ if (y[pcp->structure + gen] == 0) traverse_list(1, head[offset + gen], list, cp, pcp); else { /* the relation was non-trivial; first, set up (gen)^-1 */ traverse_list(pm1, head[offset + gen], list, cp, pcp); /* now apply the automorphism to each entry of the string pointed to by y[pcp->structure + gen] */ p1 = -y[pcp->structure + gen]; relation_length = y[p1 + 1]; if (queue_type == 1 && relation_length > limit) { long_queue[++*long_queue_length] = gen; break; } for (i = 1; i <= relation_length; ++i) { generator = FIELD2(y[p1 + 1 + i]); exponent = FIELD1(y[p1 + 1 + i]); traverse_list(exponent, head[offset + generator], list, cp, pcp); } /* now reduce the entries mod p */ for (i = start; i <= pcp->lastg; ++i) y[cp + i] %= prime; } relation_length = echelon(pcp); if (pcp->complete) return; /* if appropriate, add a new relation to the queue */ if (pcp->eliminate_flag) { ++nmr_reds; if (relation_length <= limit || queue_type == 2) queue[++length] = pcp->redgen; if (relation_length > limit || queue_type == 2) long_queue[++*long_queue_length] = pcp->redgen; } } } if (report || pcp->fullop || pcp->diagn) { if (queue_type == 1) s = "Short"; else s = "Long"; if (nmr_reds == 1) t = "y"; else t = "ies"; printf("%s queue gave %d redundanc%s\n", s, nmr_reds, t); } } /* add exponent times the action of automorphism with pointer head to the contents of the exponent-vector with base address cp */ void traverse_list(int exponent, int head, int *list, int cp, struct pcp_vars *pcp) { register int *y = y_address; register int value; register int length = list[++head]; #include "access.h" while (length != 0) { value = list[head + length]; y[cp + FIELD2(value)] += FIELD1(value) * exponent; --length; } } anupq-3.3.0/src/pretty_filterfns.c000644 000766 000024 00000104534 14355420571 017503 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A pretty_filterfns.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pretty_filterfns.h" #include "constants.h" /* filter functions to process "pretty" presentation input; this code was written and supplied by Sarah Rees */ static void word_double(word *wp); static void word2user_name(word *prog_wordp, word *user_wordp); int num_gens = 0; gen_type *inv_of = 0; word *user_gen_name = 0; int gen_array_size = 53; int *pairnumber = 0; int paired_gens; void pc_word_init(word *wp) { wp->g = anu_valloc(gen_type, 16); wp->first = 0; wp->last = -1; wp->space = 16; wp->type = 0; /* later set as 's' or 'c' */ wp->n = 1; /* only one for trivial or unexpanded words. After initialisation this is set to 0 if the word is not a proper power, and to the power otherwise. */ } void word_init(word *wp) { wp->g = anu_valloc(gen_type, 16); wp->first = 0; wp->last = -1; wp->space = 16; wp->type = 's'; wp->n = 0; } /* Clear space allocated to a word. The space assigned to a word (as a pointer to generators) is cleared. */ void word_clear(word *wp) { free((char *)wp->g); wp->g = 0; } void pc_word_reset(word *wp) { wp->last = wp->first - 1; wp->type = 0; wp->n = 1; } void word_reset(word *wp) { wp->last = wp->first - 1; } /* The word |*wp| has certainly been initialized, and may already contain a non-trivial word. But the information it contains, if any, is redundant, and can be thrown away. We just require the space for new information but there may not be enough of it. If the word currently contains space for less than n generators we increase the amount of space to this. We set the position for the first word entry at a, and the last at a-1 (since at this stage the word is empty). */ void word_stretch_reset(word *wp, int N, int a) { if (wp->space < N) { free((char *)wp->g); wp->g = 0; wp->g = anu_valloc(gen_type, N); wp->space = N; } wp->first = a; wp->last = a - 1; } /* Initialize a |word_traverser| to make it traverse a particular word, whose address is given in the second argument. */ static void word_traverser_init(word_traverser *wtp, word *wp) { wtp->wp = wp; wtp->posn = wp->first; } word_link *word_link_create(void) { word_link *wlp = anu_valloc(word_link, 1); wlp->wp = 0; wlp->next = 0; return wlp; } void word_link_init(word_link *wlp) { wlp->wp = anu_valloc(word, 1); word_init(wlp->wp); wlp->next = word_link_create(); } void word_link_clear(word_link *wlp) { word_clear(wlp->wp); free((char *)(wlp->wp)); } /* |word_get_first ()| gets hold of the first generator in a word without changing it. It returns |1| provided the word is non-trivial, |0| otherwise. The pointer |gp| is set to point to the first generator in the word pointed to by |wp|. */ char word_get_first(word *wp, gen_type *gp) { if (wp->first <= wp->last) { *gp = (wp->g)[wp->first]; return 1; } else { *gp = 0; return 0; } } /* |word_next ()| is used when traversing a word, generator by generator. It returns |1| while the |list_traverser| points to a generator, |0| once the last generator in the word has been passed. The pointer |gp| is set to point to the generator at which the |word_traverser| is currently positioned.. The procedure does not change the word being traversed. */ char word_next(word_traverser *wtp, gen_type *gp) { if (wtp->posn <= wtp->wp->last) { *gp = (wtp->wp->g)[wtp->posn]; wtp->posn++; return 1; } else { *gp = 0; return 0; } } /* Construct the inverse of a word. If a word is read as a sequence of generators the inverse word consists of the string of the inverses of these generators, but in the reverse order. Before the function is applied |*inverse| could be a freshly initialized word or an actual word already in use. It might be the same word as |*given|. Space is assigned or reassigned as necessary within this function. */ void word_inv(word *given, word *inverse) { int i; int j; gen_type *gp = 0; gp = anu_valloc(gen_type, given->space); for (i = given->first, j = given->last; i <= given->last; i++, j--) gp[i] = inv(given->g[j]); inverse->space = given->space; inverse->first = given->first; inverse->last = given->last; free((char *)inverse->g); inverse->g = 0; inverse->g = gp; } void word_put_last(word *wp, gen_type g) { int i; int n; n = wp->space; if (wp->last == n - 1) { /* there's an entry in the rightmost piece of space */ if (wp->first > n / 2) { int k; k = n / 4; wp->first -= k; wp->last -= k; for (i = wp->first; i <= wp->last; ++i) wp->g[i] = wp->g[i + k]; } else word_double(wp); } (wp->last)++; wp->g[wp->last] = g; } /*Adding on a generator to the left hand end of a word (left multiplication). */ void word_put_first(word *wp, gen_type g) { if (wp->first == 0) { int i; int n; n = wp->space; if (wp->last <= n / 2) { int k; k = n / 4; wp->first += k; wp->last += k; for (i = wp->last; i >= wp->first; --i) wp->g[i] = wp->g[i - k]; } else word_double(wp); } (wp->first)--; wp->g[wp->first] = g; } /* Double the amount of space available to a word, while preserving the information stored in the word. */ static void word_double(word *wp) { int n; int k; int i; gen_type *gp; n = wp->space; k = n / 2; gp = anu_valloc(gen_type, 2 * n); for (i = k; i < 3 * k; ++i) gp[i] = (wp->g)[i - k]; free((char *)wp->g); wp->g = 0; wp->g = gp; wp->space *= 2; wp->first += k; wp->last += k; } /*Get the first generator out of a word, and at the same time delete it from that word. The function returns |0| if the word is trivial, |1| otherwise. */ char word_delget_first(word *wp, gen_type *gp) { if (wp->first > wp->last) { *gp = 0; return 0; } else { *gp = wp->g[wp->first++]; return 1; } } /* Delete the last generator in a word. The function returns |0| if the word is trivial, |1| otherwise. */ char word_del_last(word *wp) { if (wp->first > wp->last) return 0; else { wp->last--; return 1; } } /* Concatenate two words. |wp1|, |wp2| and |wp3| are pointers to initialized words. |*wp1| and |*wp2| are not changed by this procedure (provided that they are both distinct from |*wp3|). At the end |*wp3| contains the concatenation of |*wp1| and |*wp2|. */ void word_concat(word *wp1, word *wp2, word *wp3) { int n1, n2, n; int N; int i; gen_type *factor, *concat; n1 = word_length(wp1); n2 = word_length(wp2); n = n1 + n2; if (n <= 0) { wp3->last = wp3->first - 1; return; } /* avoid malloc()ing 0 bytes */ concat = anu_valloc(gen_type, n); factor = wp1->g + wp1->first; for (i = 0; i < n1; i++) concat[i] = factor[i]; factor = wp2->g + wp2->first; for (i = n1; i < n; i++) concat[i] = factor[i - n1]; N = wp1->space > wp2->space ? wp1->space : wp2->space; while (N < 2 * n) N *= 2; word_stretch_reset(wp3, N, n / 2); for (i = 0; i < n; ++i) wp3->g[wp3->first + i] = concat[i]; wp3->last = wp3->first + n - 1; free((char *)concat); concat = 0; } void word_append(word *wp1, word *wp2) { int N = wp1->space; int last = wp1->last; int n2 = (wp2->last) - (wp2->first) + 1; int i; gen_type *genp1, *genp2, *genp3; while (N - 1 - last <= n2) N *= 2; if (N > wp1->space) { gen_type *genp = vzalloc(gen_type, N); for (i = wp1->first; i <= last; i++) genp[i] = (wp1->g)[i]; free((char *)(wp1->g)); wp1->g = genp; wp1->space = N; } genp1 = (wp1->g) + last; genp3 = genp1 + n2; genp2 = (wp2->g) + (wp2->first); while (++genp1 <= genp3) *genp1 = *(genp2++); wp1->last += n2; } char word_eq(word *w1p, word *w2p) { int m; if ((m = ((w1p->last) - (w1p->first))) != ((w2p->last) - (w2p->first))) return 0; else if (m >= 0) { int i; gen_type *g1p = w1p->g + w1p->first; gen_type *g2p = w2p->g + w2p->first; for (i = 0; i <= m; i++) if (g1p[i] != g2p[i]) return 0; } return 1; } void word_cpy(word *oldwp, word *newwp) { int m; int n; int i; gen_type *newgp, *oldgp; newwp->type = oldwp->type; newwp->n = oldwp->n; m = word_length(oldwp); if ((n = newwp->space) < 2 * m) { while (n < 2 * m) n *= 2; free((char *)(newwp->g)); newwp->g = 0; newwp->g = anu_valloc(gen_type, n); newwp->space = n; } newwp->first = m / 2; newwp->last = newwp->first + m - 1; newgp = newwp->g + newwp->first; oldgp = oldwp->g + oldwp->first; for (i = 0; i < m; ++i) newgp[i] = oldgp[i]; } static void bad_data(void) { fprintf(stderr, "Bad data.\n"); exit(FAILURE); } char read_next_gen(word *wp, FILE *file) { char ans = 1; int c; word_reset(wp); while ((c = read_char(file)) != EOF && !(isalpha(c))) { if (c == '$') return 1; if (c == '}') { /* a '}' is used to terminate the input of gens */ ungetc('}', file); ans = 0; break; } else if (c != ' ' && c != ',') { fprintf(stderr, "Generators must start with a letter.\n"); bad_data(); } } if (c == EOF) { fprintf(stderr, "Unexpected end of file.\n"); bad_data(); } if (ans == 1) { do { if (c == EOF) break; if (c == '^') { int d, e; d = read_char(file); e = read_char(file); if (d != '-' || e != '1') { fprintf(stderr, "Invalid generator name.\n"); bad_data(); } word_put_last(wp, c); word_put_last(wp, d); word_put_last(wp, e); c = read_char(file); break; } if (!isalpha(c) && !isdigit(c) && c != '_' && c != '.') { fprintf(stderr, "Only letters, digits, underscores and .'s are " "allowed in generator names.\n"); bad_data(); } word_put_last(wp, c); c = read_char(file); } while (isalpha(c) || isdigit(c) || c == '^' || c == '-' || c == '_' || c == '.'); if (c != EOF && c != ' ') ungetc(c, file); } return ans; } char read_next_word(word *wp, FILE *file) { /* A word is recognisable as a power of a single commutator iff a) the first symbol after any number of ('s is a [ and b) it contains no *'s, no ['s or ^'s inside the []'s, and only ('s, )'s ^'s -'s and digits outside. wp->type is initialised as 0, then we reset it when we encounter the first symbol that is not a (. If set to c it will be reset to s once an inappropriate symbol is encountered. is encountered . A word is recognised as a power if it contains no *'s unless enclosed by ()'s. wp->n is reset to 0 as soon as such a '*' is encountered. */ char ans = 1; int c; word_reset(wp); while ((c = read_char(file)) != EOF && !(isalpha(c)) && !(isdigit(c)) && c != '(' && c != '[') { if (c == '$') return 1; if (c == '}') { /* a '}' is used to terminate the input of words */ ungetc('}', file); ans = 0; break; } } if (c == EOF) { fprintf(stderr, "Unexpected end of file.\n"); bad_data(); } if (ans == 1 && c == '1') return ans; /* 1 is used to represent the identity. It will only be the first symbol in a word when it's the whole word. */ if (ans == 1) { char bracket_level = 0; char comm_level = 0; do { if (c == EOF) break; if (c == ' ' || (c == ',' && comm_level == 0)) { /* if this happens, the previous character must have been an alphanumeric character or a ), and we are not within commutators (since spaces after ^,( and * and inside commutators are dealt with elsewhere). If the next non-space character is not *,^ or ) we must have reached the end of the word. */ do { c = read_char(file); if (c == EOF) break; } while (c == ' '); if (c == EOF || (c != '^' && c != '*' && c != ']' && c != ')')) break; /* we have got to the end of the word */ } if (c == '[') { comm_level++; if (wp->type != 0) wp->type = 's'; if (wp->type == 0) wp->type = 'c'; } else if (c == ']') comm_level--; else if (c == '(') bracket_level++; else if (c == ')') bracket_level--; if ((c == '*') || (wp->type == 0 && c != '(') || (comm_level == 0 && c != ']' && c != '(' && c != ')' && c != '^' && c != '-' && (!isdigit(c)))) wp->type = 's'; if (bracket_level == 0 && comm_level == 0 && c == '*') wp->n = 0; if (bracket_level >= 0 && comm_level >= 0) word_put_last(wp, c); else break; /* word reading is terminated by an unmatched right bracket of either * type */ if (c == '*' || c == '^' || c == '(' || comm_level != 0) { /* '*','^' and '(' are non-terminal characters, so we can automatically skip over any white spaces that appear after them, without further investigation */ do { c = read_char(file); if (c == EOF) break; } while (c == ' '); } else { c = read_char(file); if (c == EOF) break; } } while (isalpha(c) || isdigit(c) || c == '_' || c == '.' || c == '^' || c == '-' || c == '(' || c == ')' || c == '[' || c == ']' || c == ',' || c == '*' || c == ' '); if (c != EOF) ungetc(c, file); } if (c == EOF) { fprintf(stderr, "Unexpected end of file.\n"); bad_data(); } else if (word_length(wp) == 0) wp->type = 's'; /* then we'd have the trivial word */ else word_expand(wp); return ans; } void word_expand(word *wp) { word expansion; word buf; word temp; word temp2; gen_type g; char type = wp->type; int n = wp->n; int separator = '*'; int bracket_level = 0; int commutator_level = 0; int exponent; int sign = 1; if (type == 'c') { if (n) { int i = wp->first; /* i is the position we're currently at in gp */ gen_type *gp = wp->g + wp->first; gen_type *ggp = wp->g + wp->last; while (gp <= ggp) { if ((*gp) == '^') { int j = i; exponent = 0; gp++; i++; if ((*gp) == '-') sign = -1; else exponent = (*gp) - '0'; gp++; i++; while (gp <= ggp && isdigit(*gp)) { exponent = 10 * exponent + (*gp) - '0'; gp++; i++; } exponent *= sign; if (commutator_level == 0) { /* in the case the whole commutator is raised to a power */ wp->last = j - 1; /* this is to delete the exponent from the end */ if (exponent == 0) word_reset(wp); else n *= exponent; break; } else if (exponent != -1) { /* if we see any exponent other than a -1 inside a commutator * we expand it */ wp->type = type = 's'; break; } } else { if ((*gp) == '[') commutator_level = 1; else if ((*gp) == ']') commutator_level = 0; gp++; i++; } } wp->n = n; } if (wp->type == 'c') return; } word_init(&expansion); word_init(&buf); word_init(&temp); word_init(&temp2); while (word_delget_first(wp, &g)) { if (isalpha(g) || isdigit(g) || g == '_' || g == '.') word_put_last(&buf, g); else if (g == separator) { if (word_length(&buf) > 0) { word_append(&expansion, &buf); word_put_last(&expansion, g); word_reset(&buf); } } else if (g == '^') { /* read the exponent that follows and replace whatever's currently in the buf by the appropriate number of copies of it or its inverse */ int i; sign = 1; (void)word_delget_first(wp, &g); if (g == '-') { sign = -1; word_delget_first(wp, &g); } if (isdigit(g)) { exponent = 0; /*Now g must be a digit */ exponent = g - '0' + 10 * exponent; while (word_get_first(wp, &g) && isdigit(g)) { exponent = g - '0' + 10 * exponent; word_delget_first(wp, &g); } if ((n) && word_length(wp) == 0) { /* wp->n non-zero means we believe we're looking for a power at the end of the word. We know we are at the end of the word if we've deleted every character */ if (exponent == 0) word_reset(wp); else n = sign * exponent; } else { if (sign == -1) { gen_type h; word2prog_word(&buf, &temp); if (word_length(&temp) == 1 && word_get_last(&temp, &h) && (inv_of == 0 || inv_of[h] == 0)) { /* in this case we're reading the name of a new generator */ word_put_last(&buf, '^'); word_put_last(&buf, '-'); word_put_last(&buf, '1'); } else { word_inv(&temp, &temp); word2user_name(&temp, &buf); } } word_cpy(&buf, &temp); word_reset(&buf); for (i = 1; i <= exponent; i++) { word_append(&buf, &temp); if (i < exponent && word_length(&buf) > 0) word_put_last(&buf, separator); } word_reset(&temp); } } else { word exp; bracket_level = 0; commutator_level = 0; word_init(&exp); do { if (commutator_level == 0 && bracket_level == 0 && (g == '*' || g == '^')) { word_put_first(wp, g); break; } if (g == '(') bracket_level++; else if (g == ')') bracket_level--; if (g == '[') commutator_level++; else if (g == ']') commutator_level--; word_put_last(&exp, g); } while (word_delget_first(wp, &g)); word_expand(&exp); if (word_length(&exp) > 0) { word2prog_word(&exp, &temp); word_inv(&temp, &temp); word2user_name(&temp, &temp2); word_put_last(&temp2, separator); word_concat(&temp2, &buf, &buf); word_put_last(&buf, separator); word_append(&buf, &exp); word_reset(&temp); word_reset(&temp2); } word_clear(&exp); } } else if (g == '(') { bracket_level = 1; while (word_delget_first(wp, &g)) { if (g == '(') bracket_level++; else if (g == ')') bracket_level--; if (bracket_level == 0) break; word_put_last(&buf, g); } word_expand(&buf); } else if (g == '[') { word w1, w2; commutator_level = 1; word_init(&w1); while (word_delget_first(wp, &g)) { if (g == ',' && commutator_level == 1) break; else if (g == '[') commutator_level++; else if (g == ']') commutator_level--; word_put_last(&w1, g); } word_expand(&w1); word_init(&w2); while (word_delget_first(wp, &g)) { if (g == '[') commutator_level++; else if (g == ',' && commutator_level == 1) { /* convert to nested binary commutators, to make expansion easier */ word_put_first(&w1, '['); word_put_last(&w1, ','); word_append(&w1, &w2); word_put_last(&w1, ']'); word_expand(&w1); word_reset(&w2); continue; /* we don't want to put the ',' onto the end of w2 */ } else if (g == ']') { commutator_level--; if (commutator_level == 0) break; } word_put_last(&w2, g); } word_expand(&w2); if (word_length(&w1) > 0 && word_length(&w2) > 0) { word2prog_word(&w1, &temp); word_inv(&temp, &temp); word2user_name(&temp, &buf); word_put_last(&buf, separator); word2prog_word(&w2, &temp); word_inv(&temp, &temp); word2user_name(&temp, &temp2); word_append(&buf, &temp2); word_put_last(&buf, separator); word_append(&buf, &w1); word_put_last(&buf, separator); word_append(&buf, &w2); word_reset(&temp); word_reset(&temp2); } word_clear(&w1); word_clear(&w2); } } if (bracket_level != 0 || commutator_level != 0) { fprintf(stderr, "Unmatched bracket in relation.\n"); bad_data(); } word_append(&expansion, &buf); /* there's no * at the end */ if (word_get_last(&expansion, &g) && g == separator) word_del_last(&expansion); word_cpy(&expansion, wp); word_clear(&expansion); word_clear(&temp); word_clear(&temp2); word_clear(&buf); if (n == 1) wp->n = 0; else wp->n = n; wp->type = type; } char word_get_last(word *wp, gen_type *gp) { char ans = 1; if (wp->first > wp->last) { *gp = 0; ans = 0; } else *gp = wp->g[wp->last]; return ans; } char word_delget_last(word *wp, gen_type *gp) { char ans = 1; if (wp->first > wp->last) { *gp = 0; ans = 0; } else { *gp = wp->g[wp->last]; wp->last--; } return ans; } void word2prog_gen(word *user_namep, gen_type *prog_genp) { gen_type g; *prog_genp = 0; for (g = 1; g <= num_gens; ++g) if (word_eq(user_namep, user_gen_name + g)) { *prog_genp = g; break; } } void word2prog_word(word *user_wordp, word *prog_wordp) { word user_gen; word_traverser wt; gen_type g; gen_type h; int i; int n = word_length(user_wordp); char *epsilon = "epsilon"; word identity; word_init(&identity); for (i = 0; i <= 6; i++) word_put_last(&identity, (gen_type)epsilon[i]); i = 0; word_reset(prog_wordp); prog_wordp->type = user_wordp->type; prog_wordp->n = user_wordp->n; if (word_eq(user_wordp, &identity) == 0) { word_init(&user_gen); word_traverser_init(&wt, user_wordp); while (word_next(&wt, &g)) { i++; if (g != '*' && g != ',' && g != '[' && g != ']' && g != '(' && g != ')') word_put_last(&user_gen, g); if ((g == '*' || g == ',' || g == ']' || g == ')' || i == n) && word_length(&user_gen) != 0) { word2prog_gen(&user_gen, &h); word_reset(&user_gen); word_put_last(prog_wordp, h); } } word_clear(&user_gen); } word_clear(&identity); } void gen2prog_gen(gen_type user_gen, gen_type *prog_genp) { word w; word_init(&w); word_put_last(&w, user_gen); word2prog_gen(&w, prog_genp); word_clear(&w); } void gen2user_name(gen_type program_gen, word *user_wordp) { word_reset(user_wordp); if (program_gen == 0 || (num_gens != 0 && program_gen > num_gens)) { gen_type g = '$'; word_put_last(user_wordp, g); } else word_cpy(user_gen_name + program_gen, user_wordp); } static void word2user_name(word *prog_wordp, word *user_wordp) { word w; gen_type separator; gen_type g = 0; word_traverser wt; word_traverser_init(&wt, prog_wordp); word_reset(user_wordp); word_init(&w); user_wordp->n = prog_wordp->n; user_wordp->type = prog_wordp->type; if (user_wordp->type == 'c') { word_put_first(user_wordp, '['); separator = ','; } else separator = '*'; while (word_next(&wt, &g)) { gen2user_name(g, &w); word_append(user_wordp, &w); word_put_last(user_wordp, separator); word_reset(&w); } word_del_last(user_wordp); /* delete the final separator */ if (user_wordp->type == 'c') word_put_last(user_wordp, ']'); word_clear(&w); } static void define_next_gen(word *wp) { word *ucpy; num_gens++; if (num_gens == gen_array_size - 1) { /* need more space */ int i; gen_array_size = 2 * num_gens + 1; ucpy = vzalloc(word, gen_array_size); for (i = 0; i < gen_array_size; ++i) word_init(ucpy + i); for (i = 0; i < num_gens; ++i) { word_cpy(user_gen_name + i, ucpy + i); word_clear(user_gen_name + i); } free((char *)user_gen_name); user_gen_name = 0; user_gen_name = ucpy; ucpy = 0; } word_cpy(wp, user_gen_name + num_gens); } void read_gen_name_array(FILE *file) { word w; int i; num_gens = 0; user_gen_name = vzalloc(word, gen_array_size); for (i = 0; i < gen_array_size; ++i) word_init(user_gen_name + i); find_char('{', file); word_init(&w); while (read_next_gen(&w, file)) { define_next_gen(&w); word_reset(&w); } word_clear(&w); find_char('}', file); } void insert_gen(gen_type h, word *wp) { word *ucpy; gen_type *icpy; int i; int size = gen_array_size; num_gens++; if (num_gens == gen_array_size - 1) /* need more space */ gen_array_size = 2 * num_gens + 1; ucpy = vzalloc(word, gen_array_size); icpy = vzalloc(gen_type, gen_array_size); for (i = 0; i < gen_array_size; ++i) word_init(ucpy + i); for (i = 0; i < h; ++i) { word_cpy(user_gen_name + i, ucpy + i); } word_cpy(wp, ucpy + h); for (i = h; i <= num_gens - 1; ++i) word_cpy(user_gen_name + i, ucpy + i + 1); for (i = 0; i < size; ++i) word_clear(user_gen_name + i); free((char *)user_gen_name); user_gen_name = 0; user_gen_name = ucpy; ucpy = 0; for (i = 0; i < h; ++i) { if (inv_of[i] >= h) icpy[i] = inv_of[i] + 1; else icpy[i] = inv_of[i]; } for (i = h; i < num_gens; i++) { if (inv_of[i] >= h) icpy[i + 1] = inv_of[i] + 1; else icpy[i + 1] = inv_of[i]; } free((char *)inv_of); inv_of = icpy; icpy = 0; } void default_inverse_array(void) { word w; word_traverser wt; gen_type g, h, k; gen_type l = 0; if (inv_of == 0) inv_of = vzalloc(gen_type, gen_array_size); word_init(&w); for (g = 1; g <= num_gens; ++g) { if (inv_of[g] != 0) continue; /* we may have set some inverses already explicitly */ if (word_length(user_gen_name + g) == 1) { /* we're just checking here to see that the user hasn't assumed the old default of case change. Therefore if the lower and upper case versions of the same character appear, the program exits with a bad data message. */ word_get_first(user_gen_name + g, &h); if (islower(h)) k = toupper(h); else k = tolower(h); gen2prog_gen(k, &l); if (l != 0) { /* h and k are lower and upper case versions of the same alphabet character. We don't allow this unless the generators are inverse to each other. This isn't the case here. */ fprintf( stderr, "%c and %c aren't allowed as generator names\n", h, k); fprintf(stderr, "unless they're defined to be inverse to each other.\n"); bad_data(); } } /* now we'll set the inverse of g appropriately */ word_traverser_init(&wt, user_gen_name + g); while (word_next(&wt, &h)) { if (h == '^') break; else word_put_last(&w, h); } if (h != '^') { word_put_last(&w, '^'); word_put_last(&w, '-'); word_put_last(&w, '1'); } word2prog_gen(&w, &k); if (k == 0) { /* There's no generator yet defined with user name w, so we have to slot one in, just after g. */ insert_gen(g + 1, &w); k = g + 1; } inv_of[g] = k; inv_of[k] = g; word_reset(&w); } word_clear(&w); } void word_factor(word *wp, word *wwp, int *ep) { int length = word_length(wp); int baselength = 0; word power; word_init(&power); word_reset(wwp); if (length == 0) { *ep = 0; return; } while (baselength <= length) { word_traverser wt; int count = 0; gen_type g; int i; word_traverser_init(&wt, wp); while (word_next(&wt, &g)) { count++; if (count <= baselength) continue; word_put_last(wwp, g); baselength++; if (baselength > length / 2 || length % baselength == 0) break; } if (baselength > length / 2) { baselength = length; *ep = 1; break; } else { *ep = length / baselength; for (i = 1; i <= *ep; i++) word_append(&power, wwp); if (word_eq(wp, &power)) break; } word_reset(&power); } word_clear(&power); if (baselength == length) word_cpy(wp, wwp); } char read_next_int(int *kp, FILE *rfile) { char ans = 1; int sign = 1; int c; *kp = 0; while ((c = read_char(rfile)) != EOF && !(isdigit(c))) { if (c == '-') sign = -1; else if (c == '}' || c == ';') { /* a '}' or ';' is used to terminate the input */ ungetc(c, rfile); ans = 0; break; } else sign = 1; } if (c == EOF) bad_data(); if (ans == 1) { do { *kp = 10 * (*kp) + c - '0'; } while (isdigit(c = getc(rfile))); ungetc(c, rfile); } *kp = sign * (*kp); return ans; } /* The next complete string is read and the first n or less non-null characters are stored in cp. Any space between the last non-null character of the string and the terminating null character of cp is filled with blank spaces. Spaces, tabs and returns, and also matched pairs {} (and all the stuff between them) are skipped over until other symbols are met. The string is terminated by a tab, space, return , (,), { or } (which remains unread ). A string beginning with } or ; causes the function to stop reading and return false. The character is then returned to the buffer as if unread. */ char read_next_string(char *cp, int n, FILE *rfile) { int i = 0; int c; char ans = 1; while ((c = read_char(rfile)) != EOF) { if (i == 0) { if (c == '}' || c == ';') { ungetc(c, rfile); return 0; } else if (c == '{') { /* skip over {}'s */ int count = 1; while (count > 0) { if ((c = read_char(rfile)) == '{') count++; else if (c == '}') count--; if (c == EOF) break; } } else if (c == ' ') continue; else { cp[0] = c; i = 1; } } else if (i > 0) { if (c == ' ' || c == ';' || c == '{' || c == '}' || c == '(' || c == ')' || c == '=') { if (c != ' ') ungetc(c, rfile); break; } else { if (i < n) cp[i++] = c; } } } if (c == EOF) { ans = 0; i = 0; /* if the function's returning false, we'd like to empty the string */ } while (i < n) cp[i++] = ' '; cp[n] = '\0'; return ans; } char find_keyword(char *label, FILE *rfile) { char *string; char found = 1; int k = 0; while (label[k] != '\0') k++; string = vzalloc(char, k + 1); do { found = 1; if (read_next_string(string, k, rfile) == 0) { found = 0; break; } } while ((strcmp(string, label) != 0)); free(string); string = 0; return found; } /* The next function should be used in place of getc. It reads and returns the next character, except that comments (preceded by # and going to the next new line) and tabs and new lines are replaced by a single space. */ int read_char(FILE *rfile) { int n; n = getc(rfile); /* The input may contain a '\' character which is printed before '\n' -- this is particularly true if the input file is generated by GAP */ if (n == '\\') { n = getc(rfile); if (n == '\n') n = getc(rfile); } if (n == '#') while ((n = getc(rfile)) != '\n' && n != EOF) ; if (n == '\n' || n == '\t') return (' '); return (n); } void find_char(char c, FILE *rfile) { int n; while ((n = read_char(rfile)) != c) { if (n == EOF) { fprintf(stderr, "Unexpected end of file.\n"); bad_data(); } } return; } anupq-3.3.0/src/print_word.c000644 000766 000024 00000002654 14355420571 016267 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A print_word.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" /* print out a word of a pcp presentation */ void print_word(int ptr, struct pcp_vars *pcp) { register int *y = y_address; register int gen, exp; register int i; register int count; #include "access.h" if (ptr == 0) printf(" IDENTITY\n"); else if (ptr > 0) printf(" .%d\n", ptr); else { ptr = -ptr + 1; count = y[ptr]; for (i = 1; i <= count; i++) { exp = FIELD1(y[ptr + i]); gen = FIELD2(y[ptr + i]); printf(" .%d", gen); if (exp != 1) printf("^%d", exp); } printf("\n"); } } /* print out exponent-vector with base address cp, first converting it to string stored at str for printing */ void setup_word_to_print(char *type, int cp, int str, struct pcp_vars *pcp) { register int *y = y_address; #if defined(GROUP) vector_to_string(cp, str, pcp); /* may need to set up pointer to this string at a later stage */ ++str; printf("The %s is ", type); if (y[str] == 0) print_word(0, pcp); else print_word(-str + 1, pcp); #endif } anupq-3.3.0/src/read.c000644 000766 000024 00000007555 14355420571 015020 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A read.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "pq_functions.h" #include "constants.h" /* check whether required data has been read from file */ void verify_read(int nmr_items, int required) { if (nmr_items != required) { printf("Insufficient data read in from or written to file\n"); exit(FAILURE); } } /* restore pcp structure from file ifp -- if selected workspace is larger or smaller than saved workspace, then update pointers */ void restore_pcp(FILE *ifp, struct pcp_vars *pcp) { register int *y = y_address; register int i, j, l; int new_workspace = pcp->backy; int offset = 0; int value, end, min; int weight, p1, p2; int nmr_items, total; #include "access.h" nmr_items = fread(pcp, sizeof(struct pcp_vars), 1, ifp); verify_read(nmr_items, 1); /* this resetting of print flags may later be changed */ pcp->fullop = FALSE; pcp->diagn = FALSE; if (new_workspace != pcp->backy) { if (new_workspace < pcp->backy) { min = pcp->lused + (pcp->backy - pcp->structure + 1) + pcp->lastg; if (new_workspace < min) { printf("Program workspace must be at least %d\n", min); exit(FAILURE); } } offset = new_workspace - pcp->backy; pcp->backy += offset; pcp->structure += offset; pcp->subgrp += offset; pcp->words += offset; pcp->submlg += offset; pcp->ppower += offset; pcp->ppcomm += offset; } nmr_items = fread(y, sizeof(int), pcp->lused + 1, ifp); verify_read(nmr_items, pcp->lused + 1); total = pcp->backy - pcp->subgrp + 1; nmr_items = fread(y + pcp->subgrp, sizeof(int), total, ifp); verify_read(nmr_items, total); if (offset != 0) { end = pcp->structure + pcp->lastg; for (i = pcp->structure + 1; i <= end; ++i) { if ((value = y[i]) < 0) y[-value] += offset; } end = y[pcp->clend + pcp->cc - 1]; for (i = 1; i <= end; i++) { if ((value = y[pcp->ppower + i]) < 0) y[-value] += offset; } for (i = 2; i <= end; i++) y[pcp->ppcomm + i] += offset; for (i = 2; i <= end; i++) { weight = WT(y[pcp->structure + i]); p1 = y[pcp->ppcomm + i]; l = MIN(i - 1, y[pcp->clend + pcp->cc - weight]); for (j = 1; j <= l; j++) { p2 = y[p1 + j]; if (p2 < 0) y[-p2] += offset; } } } } /* fread in the pga structure and the automorphisms for group from file ifp */ int ***restore_pga(FILE *ifp, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; register int i, j; int ***auts; int nmr_generators; int nmr_items; #ifdef HAVE_GMP MP_INT aut_ord; mpz_init(&aut_ord); mpz_inp_str(&aut_ord, ifp, 10); #endif nmr_items = fread(pga, sizeof(struct pga_vars), 1, ifp); verify_read(nmr_items, 1); #ifdef HAVE_GMP mpz_init_set(&pga->aut_order, &aut_ord); mpz_clear(&aut_ord); #endif auts = allocate_array(pga->m, pcp->lastg, pcp->lastg, TRUE); nmr_generators = pga->final_stage ? y[pcp->clend + pcp->cc - 1] : pcp->lastg; if (pga->nuclear_rank == 0) nmr_generators = pcp->lastg; for (i = 1; i <= pga->m; ++i) { for (j = 1; j <= pga->ndgen; ++j) { nmr_items = fread(auts[i][j] + 1, sizeof(int), nmr_generators, ifp); verify_read(nmr_items, nmr_generators); } } pga->relative = allocate_vector(pga->nmr_soluble, 1, FALSE); fread(pga->relative + 1, sizeof(int), pga->nmr_soluble, ifp); return auts; } anupq-3.3.0/src/collect_gen_word.c000644 000766 000024 00000002157 14355420571 017407 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A collect_gen_word.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" /* collect the defining generator word whose base address is ptr and whose length is length to the storage location referenced by cp */ void collect_gen_word(int ptr, int length, int cp, struct pcp_vars *pcp) { register int *y = y_address; register int gen; register int exp = y[ptr + 1]; register int entry; register int gen_val; for (entry = 2; entry <= length; ++entry) { gen = y[ptr + entry]; /* check for illegal defining generators */ if (abs(gen) > pcp->ndgen || gen == 0) report_error(0, gen, 0); gen_val = y[pcp->dgen + gen]; if (gen < 0 && gen_val == 1) report_error(0, gen, 0); collect(gen_val, cp, pcp); } calculate_power(exp, cp + 2 * pcp->lastg + 1, cp, pcp); } anupq-3.3.0/src/GAP.c000644 000766 000024 00000020721 14355420571 014502 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A GAP.c ANUPQ source Eamonn O'Brien *A & Frank Celler ** *Y Copyright 1995-1997, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1997-1997, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pga_vars.h" #include "pcp_vars.h" #include "pq_functions.h" #include "constants.h" #if defined(GAP_LINK) /**************************************************************************** ** *V p1, p2 */ int p1[2], p2[2]; /**************************************************************************** ** *F WriteGap( ) ** write to gap via input pipe */ void WriteGap(char *str) { write(p2[1], str, strlen(str)); } /**************************************************************************** ** *F ReadGap( ) ** read string from gap via output pipe into buffer */ void ReadGap(char *str) { char *ptr; /* read next line */ ptr = str; do while (read(p1[0], ptr, 1) != 1) ; while (*ptr++ != '\n'); /* append a trailing '\0' */ *(--ptr) = 0; /* if line begins with a '#' ignore this line and start again */ if (*str == '#') { fprintf(stderr, "%s\n", str); ReadGap(str); } } /**************************************************************************** ** *F WriteGapInfo( , ) ** write initial information to GAP input pipe */ void WriteGapInfo(int ***auts, struct pga_vars *pga) { int i; char str[MAXWORD]; /* we need the GAP library files defined in the package "anupq" */ WriteGap("LoadPackage( \"anupq\" );\n"); /* give debug information if 'ANUPQlog' is set to 'LogTo' */ WriteGap("ANUPQlog( \"debug.out\" );\n"); /* use a record 'ANUPQglb' to hold all global variables */ WriteGap("ANUPQglb := rec();;\n"); sprintf(str, "ANUPQglb.d := %d;\n", pga->ndgen); WriteGap(str); ReadGap(str); sprintf(str, "ANUPQglb.F := GF(%d);\n", pga->p); WriteGap(str); ReadGap(str); sprintf(str, "ANUPQglb.q := %d;\n", pga->q); WriteGap(str); ReadGap(str); sprintf(str, "ANUPQglb.genD := [];\n"); WriteGap(str); ReadGap(str); sprintf(str, "ANUPQglb.genQ := [];\n"); WriteGap(str); ReadGap(str); for (i = 1; i <= pga->m; ++i) write_GAP_matrix(0, "ANUPQglb.genD", auts[i], pga->ndgen, 1, i); } /**************************************************************************** ** *F start_GAP_file( , ) ** start GAP process or write necessary information to existing process */ void start_GAP_file(int ***auts, struct pga_vars *pga) { int pid; char *path; int i; char tmp[200]; pipe(p1); pipe(p2); if ((pid = fork()) == 0) { dup2(p1[1], 1); dup2(p2[0], 0); if ((path = (char *)getenv("ANUPQ_GAP_EXEC")) == NULL) #if defined(ANUPQ_GAP_EXEC) path = ANUPQ_GAP_EXEC; #else path = "gap"; #endif if (execlp(path, path, "-r -q", 0) == -1) { perror("Error in system call to GAP"); exit(FAILURE); } } else if (pid == -1) { perror("cannot fork"); exit(FAILURE); } else { /* write GAP information to file */ WriteGapInfo(auts, pga); /* try to synchronise with gap process */ WriteGap("165287638495312637;\n"); for (i = 0; i < 100; i++) { ReadGap(tmp); if (!strcmp(tmp, "165287638495312637")) break; } if (i == 100) fprintf(stderr, "WARNING: did not got magic number, got '%s'\n", tmp); } } /**************************************************************************** ** *F QuitGap() ** close the pipes to GAP */ void QuitGap(void) { WriteGap("quit;\n"); close(p1[1]); close(p2[1]); close(p1[0]); close(p2[0]); wait((int *)0); } /**************************************************************************** ** *F ReadFromGapPipe( ) ** read a string from the GAP output pipe and check whether it is an integer */ void ReadFromGapPipe(int *value) { Logical error; char str[MAXWORD]; ReadGap(str); *value = string_to_int(str, &error); if (error) { fprintf(stderr, "Error in reading stabiliser data from GAP pipe\n"); fprintf(stderr, "got line: '%s'\n", str); exit(FAILURE); } } /**************************************************************************** ** *F read_stabiliser_gens( , , ) ** read the insoluble stabiliser generators from the pipe; ** each list of stabilisers is preceded by two integers -- ** the first indicates whether the stabiliser is soluble; ** the second is the number of generators for the stabiliser */ int ***read_stabiliser_gens(int nr_gens, int ***sol_gens, struct pga_vars *pga) { int ndgen = pga->ndgen; int gamma, i, j; int ***stabiliser; int current; /* check if any gens for the stabiliser have already been computed */ current = pga->nmr_stabilisers; /* read the first two integers (is soluble and number of generators) */ ReadFromGapPipe(&pga->soluble); ReadFromGapPipe(&pga->nmr_stabilisers); /* get enough room for the generators */ pga->nmr_stabilisers += current; /* memory leakage September 1996 */ stabiliser = reallocate_array(sol_gens, current, ndgen, nr_gens, pga->nmr_stabilisers, ndgen, nr_gens, TRUE); /* if (current != 0) { stabiliser = reallocate_array( sol_gens, current, ndgen, nr_gens, pga->nmr_stabilisers, ndgen, nr_gens, TRUE ); } else { stabiliser = allocate_array( pga->nmr_stabilisers, ndgen, nr_gens, TRUE ); } */ /* now read in the insoluble generators */ for (gamma = current + 1; gamma <= pga->nmr_stabilisers; ++gamma) for (i = 1; i <= ndgen; ++i) for (j = 1; j <= ndgen; ++j) ReadFromGapPipe(&stabiliser[gamma][i][j]); /* return the result */ return stabiliser; } /**************************************************************************** ** *F insoluble_stab_gens( , ) ** calculate the stabiliser of the supplied representative using GAP */ void insoluble_stab_gens(int rep, int orbit_length, struct pga_vars *, struct pcp_vars *) { char str[MAXWORD]; sprintf(str, "stab := ANUPQstabilizer( %d, %d, ANUPQglb );;1;\n", rep, orbit_length); WriteGap(str); ReadGap(str); sprintf(str, "ANUPQoutputResult( stab, \"*stdout*\" );;\n"); WriteGap(str); } /**************************************************************************** ** *F write_GAP_matrix ** write out a matrix in a GAP input form ** */ void write_GAP_matrix( FILE *GAP_input, char *gen, int **A, int size, int start, int nr) { int i, j; char str[MAXWORD]; sprintf(str, "%s[%d] := [\n", gen, nr); WriteGap(str); for (i = start; i < start + size; ++i) { WriteGap("["); for (j = start; j < start + size - 1; ++j) { sprintf(str, "%d, ", A[i][j]); WriteGap(str); } if (i != start + size - 1) sprintf(str, "%d],\n", A[i][j]); else sprintf(str, "%d]] * One( ANUPQglb.F );;\n", A[i][j]); WriteGap(str); } } /**************************************************************************** ** *F StartGapFile( ) ** write basic input information to GAP input pipe */ void StartGapFile(struct pga_vars *pga) { char str[MAXWORD]; sprintf(str, "ANUPQglb.s := %d;\n", pga->s); WriteGap(str); ReadGap(str); sprintf(str, "ANUPQglb.r := %d;\n", pga->r); WriteGap(str); ReadGap(str); } #endif anupq-3.3.0/src/calculate_jacobi.c000644 000766 000024 00000003152 14355420571 017336 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A calculate_jacobi.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" /* calculate an individual jacobi */ void calculate_jacobi(struct pcp_vars *pcp) { register int *y = y_address; Logical invalid = FALSE; int bound = pcp->ccbeg; int output; int a, b, c; #include "access.h" printf("Input the three components for the consistency calculation: "); read_value(FALSE, "", &c, 1); read_value(FALSE, "", &b, 1); read_value(TRUE, "", &a, 1); /* check the validity of the components */ invalid = outside(a, bound) || outside(b, bound) || outside(c, bound) || pcp->cc <= 2 || c < b || b < a || (a != b && b != c && WT(y[pcp->structure + c]) + WT(y[pcp->structure + b]) + WT(y[pcp->structure + a]) > pcp->cc) || ((a == b || b == c) && WT(y[pcp->structure + a]) + WT(y[pcp->structure + c]) + 1 > pcp->cc); /* if valid, calculate the jacobi */ if (!invalid) { output = pcp->fullop; pcp->fullop = TRUE; jacobi(c, b, a, 0, pcp); pcp->fullop = output; } else { PRINT("Incorrect values %d, %d, %d for Jacobi calculation\n", c, b, a); pcp->redgen = 0; } } /* check if x lies outside permitted range from 1 to y */ int outside(int x, int y) { return (x <= 0) || (x > y); } anupq-3.3.0/src/insoluble_orbits.c000644 000766 000024 00000010273 14355420571 017452 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A insoluble_orbits.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "pq_functions.h" #include "standard.h" /* find the orbits of an insoluble permutation group, which has generators stored as a sequence in perms */ void insoluble_compute_orbits(int **orbit, int **backptr, char **schreier, int **perms, struct pga_vars *pga) { int *stack; int *pointer; int point, image; register int i, j; register int Degree = pga->Degree; register int nmr_of_perms = pga->nmr_of_perms; *orbit = allocate_vector(Degree, 1, FALSE); /* if standard presentation computation, set up schreier vectors and backward pointers */ if (StandardPresentation) { *schreier = allocate_char_vector(Degree, 1, TRUE); *backptr = allocate_vector(Degree, 1, TRUE); } for (i = 1; i <= Degree; ++i) *(*orbit + i) = i; stack = allocate_vector(Degree + 1, 0, FALSE); for (i = 1; i <= Degree; ++i) { if (*(*orbit + i) != i) continue; pointer = stack; *pointer = i; while (pointer - stack >= 0) { point = *pointer; for (j = 1; j <= nmr_of_perms; ++j) { image = perms[j][point]; if ((image != i) && (*(*orbit + image) == image)) { *pointer++ = image; *(*orbit + image) = i; if (StandardPresentation) { *(*schreier + image) = j; *(*backptr + image) = point; } } } --pointer; } } free_vector(stack, 0); } /* list the orbit of insoluble permutation group with leading term rep */ static void insoluble_list_orbit(int rep, int orbit_length, int *a, struct pga_vars *pga) { register int j; register int Degree = pga->Degree; printf("%d ", rep); --orbit_length; for (j = rep + 1; j <= Degree && orbit_length > 0; ++j) if (*(a + j) == rep) { printf("%d ", j); --orbit_length; } } /* list the orbit of soluble permutation group with leading term j */ static void list_orbit(int j, int *b) { while (j != 0) { printf("%d ", j); j = b[j]; } } /* find the orbit representatives, number of orbits, and orbit lengths; if required, list the individual orbits */ int *find_orbit_reps(int *a, int *b, struct pga_vars *pga) { Logical soluble; register int Degree = pga->Degree; register int counter = 0; register int j; int *length; int size = 1000; pga->nmr_orbits = 0; /* set up space to store orbit representatives and orbit lengths */ pga->rep = allocate_vector(1000, 1, FALSE); length = allocate_vector(1000, 1, FALSE); for (j = 1; j <= Degree; ++j) { if (*(a + j) == j) { if (++pga->nmr_orbits > size) { pga->rep = reallocate_vector(pga->rep, size, size + 1000, 1, 0); length = reallocate_vector(length, size, size + 1000, 1, 0); size += 1000; } pga->rep[pga->nmr_orbits] = j; length[pga->nmr_orbits] = 1; a[j] = -pga->nmr_orbits; } else ++length[-a[a[j]]]; } soluble = (pga->soluble || pga->nmr_of_perms == 0 || Degree == 1); if (!soluble && !pga->print_orbits) return length; /* list the elements of each orbit -- this must be speeded up since it is potentially very expensive as written -- EO'B */ for (j = 1; j <= Degree && counter < pga->nmr_orbits; ++j) { if (*(a + j) < 0) { ++counter; if (soluble) *(a + j) = j; if (pga->print_orbits) { printf("\nOrbit %d has length %d:\n", counter, length[counter]); if (soluble) list_orbit(j, b); else insoluble_list_orbit(j, length[counter], a, pga); } } } return length; } anupq-3.3.0/src/permute_subgroups.c000644 000766 000024 00000016350 14355420571 017670 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A permute_subgroups.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "pq_functions.h" #include "constants.h" /* compute all of the permutations of the allowable subgroups induced by the extended automorphisms described in auts; store them in image format in a 2-dimensional array, perms */ int **permute_subgroups(FILE *LINK_input, int **a, int **b, char **c, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { register int alpha; register int nmr_of_perms; register int q = pga->q; int **A; /* automorphism matrix */ int **perms; Logical soluble_group; soluble_group = (pga->soluble || pga->Degree == 1 || pga->nmr_of_perms == 0); /* set up space for automorphism matrix */ A = allocate_matrix(q, q, 0, FALSE); /* set up space for orbit and stabiliser information */ if (soluble_group && pga->space_efficient) space_for_orbits(a, b, c, pga); /* set up space to store permutations */ nmr_of_perms = (pga->space_efficient ? 1 : MAX(pga->nmr_of_perms, 1)); perms = allocate_matrix(nmr_of_perms, pga->Degree, 1, FALSE); /* the stabiliser of a reduced p-covering group may be trivial */ if (pga->nmr_of_perms == 0) setup_identity_perm(perms[nmr_of_perms], pga); for (alpha = 1; alpha <= pga->m; ++alpha) { if (pga->trace) printf("Processing automorphism %d:\n", alpha); assemble_matrix(A, q, auts[alpha], pcp); /* check if the matrix passes some elementary tests */ if (!valid_matrix(A, q, pga->p, 0)) { printf("The following automorphism matrix is invalid\n"); print_matrix(A, q, q); exit(FAILURE); } if (pga->print_automorphism_matrix) { printf("Automorphism matrix %d is\n", alpha); print_matrix(A, q, q); } if (!soluble_group) { #if defined(GAP_LINK) || defined(GAP_LINK_VIA_FILE) write_GAP_matrix(LINK_input, "ANUPQglb.genQ", A, q, 0, alpha); #endif } /* is the action on the p-multiplicator non-trivial? */ if (pga->map[alpha] != 0) { nmr_of_perms = (pga->space_efficient ? 1 : pga->map[alpha]); compute_permutation(perms[nmr_of_perms], A, pga); if (pga->print_permutation) { printf("Permutation %d is\n", alpha); print_array(perms[nmr_of_perms], 1, pga->Degree + 1); } } if (soluble_group && pga->space_efficient) { if (pga->map[alpha] != 0) orbits(perms[nmr_of_perms], *a, *b, *c, pga); else process_identity_perm(*a, *b, *c, pga); } } free_matrix(A, q, 0); return perms; } /* compute and store in image form the permutation that the extended automorphism stored in A induces on the allowable subgroups */ void compute_permutation(int *permutation, int **A, struct pga_vars *pga) { register int i; if (pga->s != 0) { /* process each definition set in turn */ pga->nmr_subgroups = 0; for (i = 0; i < pga->nmr_def_sets; ++i) compute_images(A, pga->list[i], pga->available[i], permutation, pga); } else { permutation[1] = 1; pga->nmr_subgroups = 1; } } /* compute the images of all allowable subgroups having definition set K under the action of automorphism matrix A */ void compute_images( int **A, int K, int depth, int *permutation, struct pga_vars *pga) /* number of available positions */ { int **S; /* standard matrix */ int **Image; /* image of allowable subgroup under A */ int *row; /* indices of available positions in S */ int *column; int *position; /* array to keep track of processed image */ int *subset; /* array to store definition set of image */ int K_Image; /* bit string representation of same */ int nmr_of_bytes = pga->q * sizeof(int); register int i; register int index; register int s = pga->s; register int q = pga->q; register int p = pga->p; register int nmr_subgroups = pga->nmr_subgroups; S = allocate_matrix(s, q, 0, FALSE); Image = allocate_matrix(s, q, 0, TRUE); subset = allocate_vector(s, 0, 0); position = allocate_vector(depth + 1, 0, 1); /* set up row and column indices of available positions as arrays of length depth + 1; also set up Image as image of allowable subgroup with least label under action of A */ find_available_positions(K, A, Image, &row, &column, depth, pga); /* for each allowable subgroup in turn, compute its image under A */ do { /* make a copy of the image matrix and echelonise the copy */ for (i = 0; i < s; ++i) memcpy(S[i], Image[i], nmr_of_bytes); K_Image = echelonise_matrix(S, s, q, p, subset, pga); /* compute and store the label of the resulting standard matrix */ ++nmr_subgroups; if (nmr_subgroups % 1000000 == 0) printf("processing subgroup %d\n", nmr_subgroups); permutation[nmr_subgroups] = subgroup_to_label(S, K_Image, subset, pga); index = 0; ++position[0]; update_image(A, column[index], Image, row[index], pga); while (index < depth && position[index] == p) { position[index] = 0; ++index; ++position[index]; update_image(A, column[index], Image, row[index], pga); } } while (index < depth); pga->nmr_subgroups = nmr_subgroups; free_vector(row, 0); free_vector(column, 0); free_vector(subset, 0); free_vector(position, 0); free_matrix(S, s, 0); free_matrix(Image, s, 0); } /* add column of A to row of Image */ void update_image(int **A, int column, int **Image, int row, struct pga_vars *pga) { register int i; register int q = pga->q; register int p = pga->p; for (i = 0; i < q; ++i) Image[row][i] = (Image[row][i] + A[i][column]) % p; } /* set up the indices of the available positions of the standard matrices determined by K as two arrays, row and column; also set up Image as image of allowable subgroup with least label under action of A */ void find_available_positions(int K, int **A, int **Image, int **row, int **column, int depth, struct pga_vars *pga) { register int i, j; register int index = 0; register int s = pga->s; register int q = pga->q; int *subset; subset = bitstring_to_subset(K, pga); *row = allocate_vector(depth + 1, 0, 0); *column = allocate_vector(depth + 1, 0, 0); (*row)[depth] = 0; (*column)[depth] = 0; for (i = 0; i < s; ++i) { update_image(A, subset[i], Image, i, pga); for (j = subset[i] + 1; j < q; ++j) { if (1 << j & K) continue; (*row)[index] = i; (*column)[index] = j; ++index; } } free_vector(subset, 0); } anupq-3.3.0/src/construct.c000644 000766 000024 00000015653 14355420571 016127 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A construct.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "exp_vars.h" #include "constants.h" #include "pq_functions.h" #define ITERATION 6 #define SINGLE_STAGE 5 static Logical select_group(int *min_step, int *max_step, int order_bound, struct pga_vars *pga, struct pcp_vars *pcp); /* prepare to construct, partially or completely, some or all of the immediate descendants of group group_nmr stored on start_file */ int construct(int call_depth, struct pga_vars *flag, int option, FILE *output_file, FILE *start_file, int k, int order_bound, int group_nmr, struct pga_vars *pga, struct pcp_vars *pcp) { int ***auts; char *name; register int step; int min_step, max_step; int nmr_of_descendants = 0; int nmr_of_capables = 0; int nmr_of_covers; int x_dim, y_dim; FILE *tmp_file; Logical change; if (option == ITERATION) { restore_pcp(start_file, pcp); auts = restore_pga(start_file, pga, pcp); /* enforce any law on the p-covering group of starting group */ if (call_depth == 1) enforce_laws(flag, pga, pcp); start_group(&tmp_file, auts, pga, pcp); } else { auts = restore_group(TRUE, start_file, group_nmr, pga, pcp); RESET(start_file); } /* save dimension of autormorphism array for later call to free */ x_dim = pga->m; y_dim = pcp->lastg; pga->nmr_of_descendants = 0; pga->nmr_of_capables = 0; switch (option) { case SINGLE_STAGE: defaults_pga(option, &k, flag, pga, pcp); copy_flags(flag, pga); name = GetString("Input output file name: "); output_file = OpenFileOutput(name); enforce_laws(flag, pga, pcp); print_group_details(pga, pcp); nmr_of_covers = reduced_covers(output_file, output_file, k, auts, pga, pcp); if (pcp->overflow) exit(FAILURE); nmr_of_descendants = pga->nmr_of_descendants; nmr_of_capables = pga->nmr_of_capables; report(nmr_of_capables, nmr_of_descendants, nmr_of_covers, pga, pcp); auts = restore_group(TRUE, start_file, group_nmr, pga, pcp); RESET(start_file); RESET(output_file); break; case ITERATION: print_group_details(pga, pcp); /* check if automorphism group is now soluble */ change = (pga->soluble == LINK_SOLUBLE_FLAG); copy_flags(flag, pga); if (change) pga->soluble = LINK_SOLUBLE_FLAG; if (!select_group(&min_step, &max_step, order_bound, pga, pcp)) { free_array(auts, x_dim, y_dim, 1); CloseFile(tmp_file); break; } for (step = min_step; step <= max_step; ++step) { pga->step_size = step; start_stage(output_file, k, auts, pga, pcp); report(pga->nmr_of_capables - nmr_of_capables, pga->nmr_of_descendants - nmr_of_descendants, 0, pga, pcp); nmr_of_descendants = pga->nmr_of_descendants; nmr_of_capables = pga->nmr_of_capables; free_array(auts, x_dim, y_dim, 1); if (step != max_step) { auts = restore_group(TRUE, tmp_file, 1, pga, pcp); RESET(tmp_file); } pga->nmr_of_descendants = nmr_of_descendants; pga->nmr_of_capables = nmr_of_capables; change = (pga->soluble == LINK_SOLUBLE_FLAG); copy_flags(flag, pga); if (change) pga->soluble = LINK_SOLUBLE_FLAG; } CloseFile(tmp_file); break; } /* switch */ /* were terminal groups processed? */ if (pga->terminal) return nmr_of_descendants; else return nmr_of_capables; } /* report on the number immediate descendants and on those capable */ void report(int nmr_of_capables, int nmr_of_descendants, int nmr_of_covers, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; /* FILE * COUNT; COUNT = OpenFile ("COUNT", "a+"); fprintf (COUNT, "%d,\n", nmr_of_descendants); */ if (nmr_of_descendants != 0) { printf("# of immediate descendants of order %d^%d is %d\n", pcp->p, y[pcp->clend + pcp->cc - 1] + pga->step_size, nmr_of_descendants); if (nmr_of_capables != 0) printf("# of capable immediate descendants is %d\n", nmr_of_capables); } else if (nmr_of_covers != 0) printf("# of reduced %d-covering groups is %d\n", pcp->p, nmr_of_covers); } /* print out basic information about the starting group */ void print_group_details(struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; int order; printf("\n**************************************************\n"); printf("Starting group: %s\n", pcp->ident); order = pcp->newgen ? y[pcp->clend + pcp->cc - 1] : y[pcp->clend + pcp->cc]; printf("Order: %d^%d\n", pcp->p, order); printf("Nuclear rank: %d\n", pga->nuclear_rank); printf("%d-multiplicator rank: %d\n", pga->p, pga->multiplicator_rank); } /* check if the group is a valid starting group */ static Logical select_group(int *min_step, int *max_step, int order_bound, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; int max_extension = order_bound - y[pcp->clend + pcp->cc - 1]; Logical select = TRUE; if (pga->step_size == ALL) { *max_step = MIN(pcp->newgen, max_extension); if (*max_step <= 0) { invalid_group(pcp); return FALSE; } else *min_step = 1; } else { if (pga->step_size > pcp->newgen || pga->step_size > max_extension) { invalid_group(pcp); return FALSE; } else *min_step = *max_step = pga->step_size; } return select; } /* print a message that the group is not a valid starting group */ void invalid_group(struct pcp_vars *pcp) { printf("Group %s is an invalid starting group\n", pcp->ident); } /* enforce laws on p-covering group of starting group -- these include exponent and metabelian laws */ void enforce_laws(struct pga_vars *flag, struct pga_vars *pga, struct pcp_vars *pcp) { struct exp_vars exp_flag; if (flag->exponent_law != 0) { initialise_exponent(&exp_flag, pcp); pcp->extra_relations = flag->exponent_law; extra_relations(&exp_flag, pcp); eliminate(FALSE, pcp); set_values(pga, pcp); } } anupq-3.3.0/src/setup.c000644 000766 000024 00000026001 14355420571 015230 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A setup.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" #include "pq_functions.h" #include "setup.h" void class_setup(int new_space, struct pcp_vars *pcp); /* this routine moves existing structures in the array y to create the space necessary to store the presentation to be computed for the next class; for a description of the basic data structures, read the header file setup.h */ void setup(struct pcp_vars *pcp) { register int *y = y_address; register int e; register int i; register int j; register int k; register int s; register int w; register int x; register int p1; register int ee; register int moccur; register int new_space; /* new space required for next class */ register int max_gens; /* upper bound for total number of generators */ register int end_ccm2; /* last generator of class pcp->cc - 2 */ register int halfwt; register int oldpc; register int pcomm; register int extra_ppower; /* extra pointers to powers */ register int extra_ppcomm; /* extra pointers to pointers to commutators */ register int extra_comm; /* extra pointers to commutators */ register int bound; register int value; register int ndgen = pcp->ndgen; register int lastg = pcp->lastg; register int class_end; #include "access.h" /* delete the pcp->words and subgroups entries if present */ if (pcp->subgrp != pcp->structure && pcp->cc != 0) delete_tables(0, pcp); if (pcp->complete != 0 && !pcp->multiplicator) return; ++pcp->cc; pcp->ccbeg = pcp->lastg + 1; /* set up class 1 */ if (pcp->cc == 1) { /* y[pcp->clend + i] is the number of the last pcp generator in class i; set y[pcp->clend] = 0 for convenience */ pcp->clend = pcp->fronty; for (i = 0; i <= MAXCLASS; ++i) y[pcp->clend + i] = 0; pcp->dgen = pcp->clend + MAXCLASS + ndgen + 1; moccur = pcp->dgen + ndgen; pcp->relp = moccur + ndgen; pcp->first_pseudo = 0; pcp->newgen = ndgen; pcp->lastg = ndgen; /* structure information is stored at the back of y */ pcp->structure = pcp->backy - ndgen; pcp->words = pcp->structure; pcp->subgrp = pcp->words; pcp->submlg = pcp->subgrp - pcp->lastg; pcp->nwords = 0; pcp->nsubgp = 0; /* pcp->lused is the last used location working from the front */ pcp->lused = pcp->relp + 2 * pcp->ndrel; /* pcp->gspace is the index of the first garbage collectable location in the array y */ pcp->gspace = pcp->lused + 1; if (is_space_exhausted(0, pcp)) return; /* mark all defining generators as irredundant */ for (i = 1; i <= ndgen; ++i) { y[pcp->dgen + i] = i; y[moccur + i] = 0; } /* read defining relations */ /* read_relations (pcp); pcp->gspace = pcp->lused + 1; */ /* set up inverse, j^(p - 1), for defining generator j; not all inverses are required but we choose to compute these as such information is useful for the Holt & Rees programs */ for (j = 1; j <= ndgen; ++j) { if (is_space_exhausted(3, pcp)) return; pcp->lused += 3; y[pcp->dgen - j] = -(pcp->lused - 2); y[pcp->lused - 1] = 1; y[pcp->lused - 2] = pcp->dgen - j; y[pcp->lused] = PACK2(pcp->pm1, j); } /* for generators of current class, generator eliminating equations are pointed to by y[structure + i]; y[structure + i] is positive if generator i is not redundant; y[structure + i] = 0 if generator i is trivial; y[structure + i] = -ptr if generator i has value pointed to by ptr; each positive word in y[structure + i] has 3 pieces of information stored in it arranged as follows -- bits 25 to the (no of bits in a computer word - 1) contain weight (class) information; bits 0 to 24 contain the defining information for generator i; the defining information is composed of 2 parts, bits 0 to 8 containing a say, and bits 9 to 24 containing b say; if b = 0 then generator i is on the image of defining generator a; if a = 0 then generator i is on the power b^p; if both a and b are non-zero then generator i is on the commutator (b, a); it is possible that this version allows the user to control the the precise breakdown of the word via the run-time options -c and -d */ /* insert structure information to indicate that i is irredundant */ for (i = 1; i <= ndgen; ++i) y[pcp->structure + i] = i; return; } /* for class 2 we create space for -- the pointers to powers (base address pcp->ppower), pointers to pointers to commutators (base address pcp->ppcomm), pointers to commutators, and additional structure information; this data is accommodated by moving the structure array forward */ if (pcp->cc == 2) { pcp->ncomm = lastg * (lastg - 1) / 2; /* is the next class already set up? */ if (pcp->ncset != 0) { new_space = pcp->ncomm + ndgen; class_setup(new_space, pcp); return; } /* the following additional space is required -- for pcp->ppower = lastg; for pcp->ppower = lastg; for pcp->ppcomm = lastg - 1; for pcomm = pcp->ncomm; also required is pcp->ncomm + ndgen */ new_space = lastg + lastg - 1 + pcp->ncomm + pcp->ncomm + ndgen; /* structure information is moved to accommodate the new data */ pcp->structure -= new_space; pcp->words = pcp->structure; pcp->subgrp = pcp->words; pcp->submlg = pcp->subgrp - lastg; if (is_space_exhausted(0, pcp)) return; for (i = 1; i <= lastg; ++i) y[pcp->structure + i] = y[pcp->structure + new_space + i]; /* pointers to powers follow structure plus any spare area */ pcp->ppower = pcp->structure + lastg + pcp->ncomm + ndgen; for (i = 1; i <= lastg; ++i) y[pcp->ppower + i] = 0; /* initialise pcp->ppcomm so that y[pcp->ppcomm + 2] is the first location after y[pcp->ppower + lastg] */ pcp->ppcomm = pcp->ppower + lastg - 1; /* pointers to commutators follow in lexicographic order after y[pcp->ppcomm + lastg] */ pcomm = pcp->ppcomm + lastg; for (i = 2; i <= lastg; ++i) { pcomm += i - 2; y[pcp->ppcomm + i] = pcomm; } for (i = 1, bound = pcp->ncomm; i <= bound; ++i) y[pcp->ppcomm + lastg + i] = 0; return; } /* class 3 onwards -- check that occurrence conditions don't stop at this class */ if (pcp->nocset > 1 && pcp->cc > pcp->nocset) { --pcp->cc; pcp->complete = 1; pcp->ccbeg = y[pcp->clend + pcp->cc - 1] + 1; /* text (5, pcp->cc, pcp->p, lastg, 0); */ return; } class_end = pcp->clend; /* calculate an upper bound for the number of new generators */ value = y[class_end + 1]; max_gens = value * (value - 1) / 2 + (lastg - value) * value + ndgen; /* is the next class already set up? */ if (pcp->ncset != 0) { new_space = max_gens; class_setup(new_space, pcp); return; } /* compute the new space required */ end_ccm2 = y[class_end + pcp->cc - 2]; extra_ppower = lastg - end_ccm2; extra_ppcomm = extra_ppower; halfwt = (pcp->cc - 1) / 2; /* compute the number of extra commutators to be stored */ for (i = 1, extra_comm = 0; i <= halfwt; ++i) { extra_comm += (y[class_end + i] - y[class_end + i - 1]) * (y[class_end + pcp->cc - i] - y[class_end + pcp->cc - i - 1]); } if (MOD(pcp->cc, 2) == 0) { halfwt = pcp->cc / 2; extra_comm += (y[class_end + halfwt] - y[class_end + halfwt - 1]) * (y[class_end + halfwt] - y[class_end + halfwt - 1] - 1) / 2; } new_space = max_gens + extra_ppower + extra_ppcomm + extra_comm; if (is_space_exhausted(new_space, pcp)) return; /* move structure array forward */ pcp->structure -= new_space; pcp->words = pcp->structure; pcp->subgrp = pcp->words; pcp->submlg = pcp->subgrp - lastg; for (i = 1; i <= lastg; ++i) y[pcp->structure + i] = y[pcp->structure + new_space + i]; /* move pointers to powers forward */ for (i = 1; i <= end_ccm2; ++i) { y[pcp->structure + lastg + max_gens + i] = y[pcp->ppower + i]; if (y[pcp->ppower + i] < 0) { p1 = -y[pcp->ppower + i]; y[p1] = pcp->structure + lastg + max_gens + i; } } pcp->ppower = pcp->structure + lastg + max_gens; for (i = end_ccm2 + 1; i <= lastg; ++i) y[pcp->ppower + i] = 0; oldpc = pcp->ppcomm + end_ccm2; pcp->ppcomm = pcp->ppower + lastg - 1; pcomm = pcp->ppcomm + lastg; /* move pointers to commutators and compute pointers to these */ for (w = 3, bound = pcp->cc; w <= bound; w++) { s = MAX(y[class_end + w - 3] + 1, 2); e = y[class_end + w - 2]; for (i = s; i <= e; ++i) { y[pcp->ppcomm + i] = pcomm; value = y[class_end + pcp->cc - w + 1]; for (ee = MIN(i - 1, value); ee > 0; --ee) { y[++pcomm] = y[++oldpc]; if (y[pcomm] < 0) { p1 = -y[pcomm]; y[p1] = pcomm; } } x = w - 2 - halfwt; if (x > 0) /* make room for (w - 2, pcp->cc - (w - 2)) commutators */ k = y[class_end + pcp->cc - w + 2] - value; else { if (x == 0 && MOD(pcp->cc, 2) == 0) /* make room for (pcp->cc / 2, pcp->cc / 2) commutators */ k = MAX(0, i - y[class_end + halfwt - 1] - 1); else k = 0; } for (j = 1; j <= k; ++j) y[pcomm + j] = 0; pcomm += k; } } /* append the left-normed commutators of class pcp->cc */ s = y[class_end + pcp->cc - 2] + 1; k = y[class_end + 1]; for (i = s; i <= lastg; ++i) { for (j = 1; j <= k; ++j) y[pcomm + j] = 0; y[pcp->ppcomm + i] = pcomm; pcomm += k; } pcp->ncomm += extra_comm; } /* was the class already setup? */ void class_setup(int new_space, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int bound = pcp->lastg; new_space -= (pcp->ppower - (pcp->structure + pcp->lastg)); if (new_space > 0) { if (is_space_exhausted(new_space, pcp)) return; pcp->structure -= new_space; pcp->words = pcp->structure; pcp->subgrp = pcp->words; pcp->submlg = pcp->subgrp - pcp->lastg; for (i = 1; i <= bound; ++i) y[pcp->structure + i] = y[pcp->structure + new_space + i]; } pcp->ncset = 0; } anupq-3.3.0/src/extend_representation.c000644 000766 000024 00000007243 14355420571 020510 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A extend_representation.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" #include "pq_functions.h" /* compute a matrix which permits the extension of an existing permutation representation for a group by a group of order p^rank; the matrix rows are indexed from 0 .. p^rank - 1; the matrix columns are indexed by the defining generators and their inverses in the sequence 1, 1^-1, 2, 2^-1, etc. M[i][j] = k, where a = (a_1,.....a_rank) is the vector of coefficients of the p-adic expansion of i, b is the vector of coefficients of the p-adic expansion of k, and within the p-group b = a * im(j) */ void extend_representation(struct pcp_vars *pcp) { register int *y = y_address; int *expand; /* array to store p-adic expansion */ register int rank = y[pcp->clend + pcp->cc]; register int i, j, gen, sum; int bound; int **M; int index; int *powers; /* store powers of p to avoid recomputation */ register int p = pcp->p; int cp = pcp->lused; int ptr; bound = int_power(p, rank); /* set up room to store p-adic expansion and powers of p */ expand = allocate_vector(rank, 0, TRUE); powers = allocate_vector(rank, 0, FALSE); for (i = 0; i < rank; ++i) powers[i] = int_power(p, i); /* set up matrix to store results */ M = allocate_matrix(bound, 2 * pcp->ndgen, 0, FALSE); for (i = 0; i < bound; ++i) { /* find the p-adic expansion of i */ compute_padic(powers, i, rank - 1, p, expand); /* now process each defining generator and its inverse in turn */ for (gen = -pcp->ndgen; gen <= pcp->ndgen; ++gen) { if (gen == 0) continue; /* now copy p-adic expansion to y */ for (j = 0; j < rank; ++j) y[cp + j + 1] = expand[j]; #if defined(DEBUG) printf("processing generator %d \n", gen); printf("Stored p-adic expansion for %d in y is ", i); for (j = 1; j <= pcp->lastg; ++j) { printf("%d ", y[cp + j]); } printf("\n"); #endif /* look up image of gen which is stored as a generator-exponent string in y; post-multiply the p-adic expansion by this image */ ptr = y[pcp->dgen + gen]; if (ptr != 0) collect(ptr, cp, pcp); #if defined(DEBUG) printf("result of collection is "); for (j = 1; j <= pcp->lastg; ++j) { printf("%d ", y[cp + j]); } printf("\n"); #endif /* store the result of the multiplication */ sum = 0; for (j = 1; j <= pcp->lastg; ++j) sum += (y[cp + j] * powers[j - 1]); index = (gen < 0) ? 2 * (-gen) - 1 : 2 * gen - 2; M[i][index] = sum; } for (j = 0; j < rank; ++j) expand[j] = 0; } printf("The extension matrix is\n"); print_matrix(M, bound, 2 * pcp->ndgen); free_vector(expand, 0); free_vector(powers, 0); free_matrix(M, bound, 0); } /* compute p-adic expansion of x, where x < p^(k + 1) */ void compute_padic(int *powers, int x, int k, int p, int *expand) { register int alpha; register int val; while (x > 0 && k >= 0) { val = powers[k]; if (val <= x) { /* find largest multiple of p^k < x */ alpha = p - 1; while (alpha * val > x) --alpha; expand[k] = alpha; x -= alpha * val; } --k; } } anupq-3.3.0/src/formula.c000644 000766 000024 00000012131 14355420571 015534 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A formula.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" #include "pcp_vars.h" #include "pq_functions.h" int *list; int *first; int *last; int power_of_entry; int exponent; /* echelonise the relation and add any redundant generator to the queue */ void setup_echelon(int *queue, int *queue_length, int cp, struct pcp_vars *pcp) { register int *y = y_address; register int lastg = pcp->lastg; int i; /* now echelonise the result */ for (i = 1; i <= lastg; ++i) y[cp + lastg + i] = 0; echelon(pcp); if (pcp->redgen != 0 && pcp->m != 0) queue[++*queue_length] = pcp->redgen; } /* evaluate the word whose variables are stored in the list */ void evaluate_list( int *queue, int *queue_length, int *list, int depth, struct pcp_vars *pcp) { register int *y = y_address; register int lastg = pcp->lastg; register int cp = pcp->lused; register int cp1 = cp + lastg; register int cp2 = cp1 + lastg; register int i, a; for (i = 1; i <= lastg; ++i) y[cp + i] = 0; while (depth > 0) { a = list[depth]; for (i = 1; i <= lastg; ++i) y[cp1 + i] = 0; y[cp1 + a] = 1; /* compute a^power_of_entry */ power(power_of_entry, cp1, pcp); vector_to_string(cp1, cp2, pcp); if (y[cp2 + 1] != 0) collect(-cp2, cp, pcp); --depth; } #ifdef DEBUG print_array(y, cp + 1, cp + lastg + 1); printf("The result is "); print_array(y, cp + 1, cp + lastg + 1); #endif /* now compute word^exponent */ power(exponent, cp, pcp); setup_word_to_print("result of collection", cp, cp + lastg + 1, pcp); /* if (pcp->m != 0) */ setup_echelon(queue, queue_length, cp, pcp); } /* check that word is a normal word -- if not, discard */ Logical valid_word(int *list, int depth) { Logical normal_word = TRUE; while (depth > 1 && (normal_word = (list[depth] < list[depth - 1]))) --depth; return normal_word; } /* build up a list whose entries are the letters of the word to be evaluated */ void loop(int *queue, int *queue_length, int depth, int *list, int *nmr, int begin, int end, struct pcp_vars *pcp) { int i, k; char *s; for (i = begin; i <= end; ++i) { ++*nmr; list[*nmr] = i; if (*nmr == depth) { if (valid_word(list, depth)) { s = (depth == 1) ? " is" : "s are"; printf("The component%s ", s); /* one has a complete list of entries to generate a normal word */ for (k = *nmr; k >= 1; --k) printf("%d ", list[k]); printf("\n"); evaluate_list(queue, queue_length, list, depth, pcp); } --*nmr; } else { loop(queue, queue_length, depth, list, nmr, first[depth - *nmr], last[depth - *nmr], pcp); } } --*nmr; } /* evaluate formulae of the form (x1^n * x2^n * ... * x^n)^m where each of the x run over all of the generators of a supplied weight in the group; n and m are positive integers; echelonise the result and add any redundancies to the queue */ void evaluate_formula(int *queue, int *queue_length, struct pcp_vars *pcp) { register int *y = y_address; register int lastg = pcp->lastg; register int i; int nmr_entries; int *weight; int total; int nmr; total = 6 * lastg + 6; if (is_space_exhausted(total, pcp)) return; /* fudge the value of submlg because of possible call to power */ pcp->submlg -= total; read_value(TRUE, "Input number of components of formula: ", &nmr_entries, 1); weight = allocate_vector(nmr_entries, 1, FALSE); first = allocate_vector(nmr_entries + 1, 0, FALSE); last = allocate_vector(nmr_entries + 1, 0, FALSE); list = allocate_vector(nmr_entries + 1, 0, FALSE); printf("Input weight of each component of formula: "); for (i = 1; i < nmr_entries; ++i) { read_value(FALSE, "", &weight[i], 1); } read_value(TRUE, "", &weight[i], 1); read_value( TRUE, "Input power of individual component: ", &power_of_entry, 1); read_value(TRUE, "Input power of word: ", &exponent, 1); for (i = 1; i <= nmr_entries; ++i) { first[i] = y[pcp->clend + weight[i] - 1] + 1; last[i] = y[pcp->clend + weight[i]]; } /* generate the list of words; evaluate each, echelonise it and build up the queue of redundant generators */ nmr = 0; loop(queue, queue_length, nmr_entries, list, &nmr, first[nmr_entries], last[nmr_entries], pcp); /* reset value of submlg */ pcp->submlg += total; free_vector(weight, 1); free_vector(first, 0); free_vector(last, 0); free_vector(list, 0); } anupq-3.3.0/src/power.c000644 000766 000024 00000013056 14355420571 015232 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A power.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" static void zero_array(int ptr, int length); static void copy_array(int old, int length, int new); /* power routine - written by M J Smith, May 1991. raise exponent vector with base address cp to power exp; the method used depends on the value of the prime P; P = 2, 3: For each factor of P in the power the word is raised to the power P by multiplication P - 1 times. Any factor of the power remaining is done using a P-ary decomposition. P > 3: A P-ary decomposition is used. Calculation of the powers up to P at each step are done using a binary expansion. Storage: X - exponent vect contains word on entry, will contain on exit of routine. Always accumulating answer. A - exponent string - used for multiplying a word a number of times in a loop (small primes) or for squaring words in binary. Z - In binary method, accumulates the word to the prime p exponent. This is used as the base word in the next iteration. B - Is used only in binary expansion to square the string A. A is unpacked into B, then collected onto B, then packed from B. */ void power(int exp, int cp, struct pcp_vars *pcp) { register int *y = y_address; register int p = pcp->p; register int lastg = pcp->lastg; register int x = cp; register int a = pcp->submlg - (lastg + 1); register int b = a - (lastg + 1); register int z = b - (lastg + 1); register int q, r, pp, nn; register int i; if (exp == 1) return; /* nn is the exponent requested */ nn = exp; /* first consider small primes */ if (p == 2 || p == 3) { /* extract all powers of the prime from the exponent */ while (MOD(nn, p) == 0) { nn /= p; /* pack word in X into string for multiplication p - 1 times */ vector_to_string(x, a, pcp); if (y[a + 1] == 0) return; /* now multiply p - 1 times to get X^p */ for (i = 1; i <= p - 1; ++i) { collect(-a, x, pcp); } } if (nn == 1) return; /* have extracted all powers of p from exponent - now do rest using prime p expansion */ /* move X into Z, set X to 1 */ copy_array(x, lastg, z); zero_array(x, lastg); while (nn > 0) { r = MOD(nn, p); nn /= p; /* move Z into A to multiply onto Z p - 1 times and onto X r times */ vector_to_string(z, a, pcp); /* now calculate Z = Z^p and X = X * Z^r */ if (y[a + 1] != 0) { for (i = 1; i <= p - 1; ++i) { if (i <= r) collect(-a, x, pcp); collect(-a, z, pcp); } } } } /* for larger primes, use prime p decomposition and subsequent binary expansion */ else { /* move X into Z and set X to 1 */ vector_to_string(x, z, pcp); zero_array(x, lastg); while (nn > 0) { /* move word w in Z into A, and set Z to 1; A will square each iteration, and Z will accumulate some of these powers to end up with w^p at end of while loop */ string_to_vector(z, a, pcp); zero_array(z, lastg); q = nn / p; r = MOD(nn, p); pp = p; /* Now use binary expansion of both PP (ie p) and remainder R to accumulate w^p in Z and w^R onto X from squaring of w. Must continue until we have last w^R on X or until we get w^p in Z if there is any remaining exponent (ie Q > 0) */ while (r > 0 || (pp > 0 && q > 0)) { /* collect onto answer if needed (ie R = 1) */ if (MOD(r, 2) == 1) { copy_array(a, lastg, b); if (y[x + 1] > 0) { collect(-x, b, pcp); } vector_to_string(b, x, pcp); } /* collect onto Z for next power of w if next iteration reqd */ if (MOD(pp, 2) == 1 && q > 0) { copy_array(a, lastg, b); if (y[z + 1] > 0) { collect(-z, b, pcp); } vector_to_string(b, z, pcp); } r = r >> 1; pp = pp >> 1; /* if powers still needed for answer X or for w^p in Z for another iteration (ie Q > 0) then square A by unpacking into exponent vector B, collecting A and B, then repacking into A */ if (r > 0 || (pp > 0 && q > 0)) { /* square A */ vector_to_string(a, b, pcp); if (y[b + 1] > 0) { collect(-b, a, pcp); } } } nn = q; } /* now X is the answer as a string, so convert to exponent vector */ string_to_vector(x, b, pcp); copy_array(b, lastg, x); } } /* zero a section of the array, y */ static void zero_array(int ptr, int length) { register int *y = y_address; register int i; for (i = 1; i <= length; ++i) y[ptr + i] = 0; } /* copy a section of the array, y */ static void copy_array(int old, int length, int new) { register int *y = y_address; register int i; for (i = 1; i <= length; ++i) y[new + i] = y[old + i]; } anupq-3.3.0/src/initialise_pcp.c000644 000766 000024 00000001546 14355420571 017073 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A initialise_pcp.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" /* initialise the contents of the pcp structure */ void initialise_pcp(int output, struct pcp_vars *pcp) { pcp->fullop = output >= 2; pcp->diagn = output == 3; pcp->overflow = FALSE; pcp->multiplicator = FALSE; pcp->metabelian = FALSE; pcp->cover = FALSE; pcp->valid = TRUE; pcp->end_wt = 0; pcp->start_wt = 0; pcp->ncset = 0; pcp->complete = 0; pcp->nocset = 0; pcp->cc = 0; pcp->lastg = 0; pcp->pm1 = pcp->p - 1; pcp->m = 0; } anupq-3.3.0/src/label_to_subgroup.c000644 000766 000024 00000011062 14355420571 017600 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A label_to_subgroup.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pga_vars.h" #include "pcp_vars.h" #include "pq_functions.h" enum { BITES_IN_INT = 8 * sizeof(int) }; /* given a label, find the standard matrix, S, for the corresponding allowable subgroup and its definition set */ int ** label_to_subgroup(int *Index, int **subset, int label, struct pga_vars *pga) /* definition set for subgroup */ { register int i, j; int *expand; /* array to store p-adic expansion */ int index = 1; /* index of definition set of subgroup */ int **S; int position = 0; /* deduct the appropriate offset + 1 */ while (index < pga->nmr_def_sets && label > pga->offset[index]) ++index; --index; label -= (pga->offset[index] + 1); /* set up room to store the p-adic expansion of the remainder */ expand = allocate_vector(pga->available[index], 0, 1); find_padic(label, pga->available[index] - 1, pga->p, expand, pga); /* convert bit string representation of definition set to subset */ *subset = bitstring_to_subset(pga->list[index], pga); /* set up standard matrix for allowable subgroup */ S = allocate_matrix(pga->s, pga->q, 0, TRUE); for (i = 0; i < pga->s; ++i) { S[i][(*subset)[i]] = 1; for (j = (*subset)[i] + 1; j < pga->q; ++j) { if (1 << j & pga->list[index]) continue; S[i][j] = expand[position]; ++position; } } free_vector(expand, 0); *Index = index; return S; } /* factorise subgroup determined by standard matrix S from p-covering group; the definition set for S is pga->list[index] */ void factorise_subgroup( int **S, int index, int *subset, struct pga_vars *pga, struct pcp_vars *pcp) /* definition set for subgroup */ { register int *y = y_address; register int i, j; for (i = 0; i < pga->q; ++i) { if (1 << i & pga->list[index]) continue; for (j = 1; j <= 2 * pcp->lastg; ++j) y[pcp->lused + j] = 0; for (j = 0; j < pga->s; ++j) if (S[j][i] != 0) y[pcp->lused + pcp->ccbeg + subset[j]] = pga->p - S[j][i]; y[pcp->lused + pcp->ccbeg + i] = 1; echelon(pcp); } eliminate(0, pcp); } /* factorise subgroup determined by standard matrix S from p-covering group; the definition set for S is pga->list[index] */ void GAP_factorise_subgroup(FILE *GAP_input, int **S, int index, int *subset, struct pga_vars *pga, struct pcp_vars *pcp) /* definition set for subgroup */ { register int *y = y_address; register int i, j; fprintf(GAP_input, "gens := ["); for (i = 0; i < pga->q; ++i) { if (1 << i & pga->list[index]) continue; for (j = 1; j <= 2 * pcp->lastg; ++j) y[pcp->lused + j] = 0; for (j = 0; j < pga->s; ++j) if (S[j][i] != 0) y[pcp->lused + pcp->ccbeg + subset[j]] = pga->p - S[j][i]; y[pcp->lused + pcp->ccbeg + i] = 1; fprintf(GAP_input, "["); for (j = pcp->ccbeg; j < pcp->ccbeg + pga->q - 1; ++j) fprintf(GAP_input, "%d, ", y[pcp->lused + j]); fprintf(GAP_input, "%d]", y[pcp->lused + pcp->ccbeg + pga->q - 1]); if (i < pga->q - 1) fprintf(GAP_input, ",\n"); } fprintf(GAP_input, "];;\n"); } /* find p-adic expansion of x, where x < p^(k + 1) */ void find_padic(int x, int k, int p, int *expand, struct pga_vars *pga) { register int alpha; register int val; while (x > 0 && k >= 0) { val = pga->powers[k]; if (val <= x) { /* find largest multiple of p^k < x */ alpha = p - 1; while (alpha * val > x) --alpha; expand[k] = alpha; x -= alpha * val; } --k; } } /* decode the bit string K and store as subset */ int *bitstring_to_subset(int K, struct pga_vars *pga) { int length = pga->s; /* number of elements of subset */ int *subset; register int i; int mask = 1 << (BITES_IN_INT - 1); subset = allocate_vector(pga->s, 0, 1); for (i = 1; i <= BITES_IN_INT && length > 0; ++i) { if ((K & mask) != 0) { --length; subset[length] = BITES_IN_INT - i; } K <<= 1; } return subset; } anupq-3.3.0/src/expand_commutator.c000644 000766 000024 00000002571 14355420571 017627 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A expand_commutator.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "constants.h" /* routines for handling expansion of commutator relations */ static void add(int *x, int *y); static void invert_symbols(int *x); static int length(int *s); /* expand the commutator of s and t */ void expand_commutator(int *s, int t) { int a[MAXWORD]; register int i; for (i = 0; i < MAXWORD; ++i) a[i] = s[i]; invert_symbols(s); s[length(s)] = -t; add(s, a); s[length(s)] = t; } /* find the number of non-zero entries in s */ static int length(int *s) { register int i = 0; while (i < MAXWORD && s[i] != 0) ++i; return i; } /* concatenate y with x */ static void add(int *x, int *y) { register int j; int i = length(x); for (j = 0; j < MAXWORD && y[j] != 0; ++j) x[i + j] = y[j]; } /* construct the group-theoretic inverse of the symbols in x */ static void invert_symbols(int *x) { register int i = length(x) - 1; register int j; int temp, mid; mid = i / 2; for (j = 0; j <= mid; ++j) { temp = x[j]; x[j] = -x[i - j]; x[i - j] = -temp; } } anupq-3.3.0/src/next_class.c000644 000766 000024 00000017555 14355420571 016251 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A next_class.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" #include "pcp_vars.h" #include "pq_functions.h" #include "exp_vars.h" #define BOTH_TAILS 0 #if defined(GROUP) /* calculate the next class of the group layer by layer */ void next_class(Logical report, int **head, int **list, struct pcp_vars *pcp) { register int *y = y_address; register int class; struct exp_vars exp_flag; int prev = 1, new; /* if class 1 computation, setup has already been done -- before relations are read */ if (y[pcp->clend + 1] != 0) setup(pcp); if (pcp->overflow || (pcp->complete != 0 && !pcp->multiplicator)) return; if (pcp->extra_relations != 0 || pcp->m != 0) initialise_exponent(&exp_flag, pcp); for (class = pcp->cc; class > 1; --class) { tails(BOTH_TAILS, class, pcp->cc, 1, pcp); if (pcp->overflow) return; if (class != 2) { if (pcp->m != 0) { new = pcp->lastg - pcp->ccbeg + 1; exp_flag.queue = reallocate_vector(exp_flag.queue, prev, new, 1, FALSE); prev = new; } consistency(0, exp_flag.queue, &exp_flag.queue_length, class, pcp); if (pcp->overflow || (pcp->complete != 0 && !pcp->multiplicator)) return; } } if (!pcp->multiplicator) { if (pcp->cc > 1) { update_generators(pcp); if (pcp->overflow) return; /* this call is not necessary if there are no automorphisms present -- however, it may be useful in reducing space requirements and hence improve efficiency -- this needs to be investigated further -- EO'B October 1991 */ if (pcp->m != 0) { eliminate(0, pcp); /* an elimination has been performed -- must reset queue length */ exp_flag.queue_length = 0; if (pcp->overflow) return; } } collect_relations(pcp); if (pcp->overflow || pcp->complete != 0 || !pcp->valid) return; if (pcp->extra_relations != 0) { if (pcp->m == 0) { exp_flag.list = ALL_WORDS; extra_relations(&exp_flag, pcp); } else { exp_flag.list = REDUCED_LIST; enforce_exponent(report, &exp_flag, head, list, pcp); if (pcp->overflow) return; } } if (pcp->overflow || pcp->complete != 0 || !pcp->valid) return; } /* if the multiplicator flag is set and there are redundant generators, then we must be careful about elimination -- update_generators has not yet been performed; see note in code of that procedure */ if (pcp->multiplicator && pcp->ndgen > y[pcp->clend + 1]) eliminate(TRUE, pcp); else eliminate(FALSE, pcp); } #endif /* when automorphisms are supplied, enforce exponent law by setting up a queue of redundant generators and then close this queue */ void enforce_exponent(Logical report, struct exp_vars *exp_flag, int **head, int **list, struct pcp_vars *pcp) { register int *y = y_address; #if defined(TIME) int t; #endif int factor; int limit = 0; int *queue, queue_length; int list_length; char *s; if (pcp->m != 0) { read_value(TRUE, "Input queue factor: ", &factor, 0); limit = factor * (pcp->lastg - pcp->ccbeg + 1) / 100; } #if defined(TIME) t = runTime(); #endif Extend_Auts(head, list, y[pcp->clend + 1] + 1, pcp); if (pcp->overflow) return; #if defined(TIME) t = runTime() - t; printf("Time to extend automorphisms is %.2f seconds\n", t * CLK_SCALE); #endif #if defined(TIME) t = runTime(); #endif list_length = pcp->lastg - pcp->ccbeg + 1; pcp->start_wt = 1; pcp->end_wt = (2 * pcp->cc) / 3; extra_relations(exp_flag, pcp); if (pcp->overflow) return; queue = exp_flag->queue; queue_length = exp_flag->queue_length; pcp->end_wt = 0; #if defined(TIME) t = runTime() - t; #endif s = (queue_length == 1) ? "y" : "ies"; if (report || pcp->fullop || pcp->diagn) printf("Exponent checks gave %d redundanc%s\n", queue_length, s); #if defined(TIME) printf("Time to check exponents is %.2f seconds\n", t * CLK_SCALE); #endif close_queue( report, list_length, limit, *head, *list, queue, queue_length, pcp); } /* close the queue of redundant generators under the action of the automorphisms */ void close_queue(Logical report, int list_length, int limit, int *head, int *list, int *queue, int queue_length, struct pcp_vars *pcp) { int *long_queue, long_queue_length; #if defined(TIME) int t; #endif long_queue = allocate_vector(list_length, 1, 0); long_queue_length = 0; #if defined(TIME) t = runTime(); #endif if (!pcp->complete) { close_relations(report, limit, 1, head, list, queue, queue_length, long_queue, &long_queue_length, pcp); if (report || pcp->fullop || pcp->diagn) printf("Length of long queue after closing short queue is %d\n", long_queue_length); } if (!pcp->complete) close_relations(report, limit, 2, head, list, long_queue, long_queue_length, long_queue, &long_queue_length, pcp); if (report || pcp->fullop || pcp->diagn) printf("Final long queue length is %d\n", long_queue_length); #if defined(TIME) t = runTime() - t; printf("Time to close under action of automorphisms is %.2f seconds\n", t * CLK_SCALE); #endif free_vector(queue, 1); free_vector(long_queue, 1); } int rearrange_queues(int limit, int *queue, int *queue_length, int *long_queue, int long_queue_length, struct pcp_vars *pcp) { register int *y = y_address; int gen; int i, p1; for (i = 1; i <= long_queue_length; ++i) { gen = long_queue[i]; p1 = -y[pcp->structure + gen]; if (y[p1 + 1] < limit) { queue[++*queue_length] = gen; long_queue[i] = 0; } } return 0; } /* sort queue of redundant generators according to increasing length of those relations which imply that each generator is redundant */ void bubble_sort(int *x, int len, struct pcp_vars *pcp) { register int *y = y_address; register int i, j, pointer, temp; Logical swap = TRUE; register int structure = pcp->structure; int *length = allocate_vector(len, 1, 1); /* set up the length of the relations as an array */ for (i = 1; i <= len; ++i) { if (x[i] != 0) { pointer = -y[structure + x[i]]; length[i] = y[pointer + 1]; } } /* now sort the queue of generators */ for (i = 1; i <= len && swap; ++i) { swap = FALSE; for (j = len; j > i; --j) if (length[j] < length[j - 1]) { temp = x[j]; x[j] = x[j - 1]; x[j - 1] = temp; temp = length[j]; length[j] = length[j - 1]; length[j - 1] = temp; swap = TRUE; } } free_vector(length, 1); } anupq-3.3.0/src/Extend_Auts.c000644 000766 000024 00000032675 14355420571 016331 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A Extend_Auts.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" #define SIZE 100 #define DEFAULT_SIZE 100000 #define DEBUG1 /* for each automorphism, compute its action on each of the generators; this code is a modified version of the code to be found in the file extend_automorphisms -- the modifications are introduced in order to store the automorphims much more efficiently than the 3-dimensional array used in that code; the efficiency is achieved by storing the description using two 1-dimensional arrays, head and list; these vectors are organised as follows -- ptr = head[(alpha - 1) * lastg + i] is a pointer to action of automorphism alpha on generator i; length = list[ptr + 1] = length of generator-exponent string storing action; list[ptr + 2] ... list[ptr + 1 + length] contains the string */ void Extend_Auts(int **head, int **list, int start, struct pcp_vars *pcp) { register int lastg = pcp->lastg; register int offset; register int alpha; int index = 0; int max_length; FILE *fp; int nmr_saved; int list_length; int saved_length; /* total length of description saved to file */ int restored_length = 0; /* amount of description restored from file */ int new; /* new storage requirement */ /* this used to be 5 * lastg + 4 -- April 1994 */ if (is_space_exhausted(7 * lastg + 4, pcp)) return; fp = TemporaryFile(); save_auts(fp, *head, *list, pcp); fread(&nmr_saved, sizeof(int), 1, fp); fread(&saved_length, sizeof(int), 1, fp); max_length = MIN(SIZE, lastg) * lastg; list_length = max_length + DEFAULT_SIZE; if (pcp->cc != 1) { if ((*head)[0] < lastg) *head = reallocate_vector( *head, 1 + (*head)[0] * pcp->m, 1 + lastg * pcp->m, 0, FALSE); if ((*list)[0] < list_length) *list = reallocate_vector( *list, (*list)[0] + 1, list_length + 1, 0, FALSE); else list_length = (*list)[0]; } for (alpha = 1; alpha <= pcp->m; ++alpha) { offset = (alpha - 1) * lastg; restored_length += restore_auts(fp, offset, nmr_saved, start - 1, &index, *head, *list); Extend_Aut( start, max_length, &list_length, *head, list, offset, &index, pcp); #ifdef DEBUG if (alpha != pcp->m) { printf("*** After automorphism %d, allocation is %d\n", alpha, list_length); printf("*** Value of index is now %d\n", index); } #endif if ((new = saved_length - restored_length + index) > list_length) { *list = reallocate_vector(*list, list_length + 1, new + 1, 0, FALSE); list_length = new; #ifdef DEBUG printf("*** Allocation is increased to %d\n", list_length); #endif } } (*head)[0] = lastg; (*list)[0] = list_length; CloseFile(fp); #ifdef DEBUG1 printf("*** Final allocated space for automorphisms is %d\n", list_length); printf("*** Final amount used is %d\n", index); #endif } /* list the action of each automorphism on each of the pcp generators, first .. last, by their image */ void List_Auts(int *head, int *list, int first, int last, struct pcp_vars *pcp) { register int alpha, i, j, ptr, length; int offset = 0; #include "access.h" for (alpha = 1; alpha <= pcp->m; ++alpha) { for (i = first; i <= MIN(last, pcp->lastg); ++i) { ptr = head[offset + i]; length = list[ptr + 1]; printf("%d --> ", i); for (j = ptr + 2; j <= ptr + length + 1; ++j) { printf("%d^%d ", FIELD2(list[j]), FIELD1(list[j])); } printf("\n"); } offset += pcp->lastg; } } /* set up description of action of automorphisms on defining generators */ void Setup_Action(int **head, int **list, int ***auts, int nmr_of_exponents, struct pcp_vars *pcp) { register int *y = y_address; register int i, generator; int position, max_length, exp, alpha, offset; int lastg = pcp->lastg; int fq_rank = y[pcp->clend + 1]; int list_length; int index = 0; #include "access.h" *head = allocate_vector(fq_rank * pcp->m + 1, 0, FALSE); max_length = MIN(SIZE, lastg) * lastg; list_length = max_length + DEFAULT_SIZE; *list = allocate_vector(list_length + 1, 0, FALSE); for (alpha = 1; alpha <= pcp->m; ++alpha) { offset = (alpha - 1) * fq_rank; for (generator = 1; generator <= fq_rank; ++generator) { position = (*head)[offset + generator] = index; (*list)[++position] = 0; ++index; for (i = 1; i <= nmr_of_exponents; ++i) { if ((exp = auts[alpha][generator][i]) != 0) { ++(*list)[position]; (*list)[++index] = PACK2(exp, i); } } } } (*head)[0] = fq_rank; (*list)[0] = list_length; } /* extend the automorphism whose action on the defining generators of the group is described in the two 1-dimensional arrays, head and list, to act on the generators of the group; the first generator whose image is computed is start */ void Extend_Aut(int start, int max_length, int *list_length, int *head, int **list, int offset, int *index, struct pcp_vars *pcp) { register int *y = y_address; register int i, generator; register int lastg = pcp->lastg; register int structure = pcp->structure; int cp1 = pcp->submlg - lastg - 2; int cp2 = cp1 - lastg; int result = cp2 - lastg; register int value; int u, v; int exp; int position, new; #include "access.h" /* update submlg because of possible call to power */ pcp->submlg -= (3 * lastg + 2); /* for each specified generator, compute its image under the action of the automorphism */ for (generator = start; generator <= lastg; ++generator) { #ifdef DEBUG if (generator % 100 == 0) printf("Processed generator %d\n", generator); #endif /* check if there is sufficient space allocated */ if (generator % SIZE == 1 && (new = *index + max_length) > *list_length) { *list = reallocate_vector(*list, *list_length + 1, new + 1, 0, FALSE); *list_length = new; } /* examine the definition of generator */ value = y[structure + generator]; if (value <= 0) { evaluate_image(head, *list, offset, -value, result, pcp); } else { u = PART2(value); v = PART3(value); if (v == 0) Extend_Pow(cp1, cp2, u, offset, head, *list, pcp); else Extend_Comm(cp1, cp2, u, v, offset, head, *list, pcp); #if defined(GROUP) /* solve the appropriate equation, storing the image of generator under the action of alpha at result; in the Lie Program, Extend_Comm has already set up the answer at location result */ solve_equation(cp1, cp2, result, pcp); #endif } /* now copy the result to list */ position = head[offset + generator] = *index; (*list)[++position] = 0; ++*index; for (i = 1; i <= lastg; ++i) { if ((exp = y[result + i]) != 0) { ++(*list)[position]; (*list)[++*index] = PACK2(exp, i); } } } /* reset value of submlg */ pcp->submlg += (3 * lastg + 2); } void evaluate_image( int *head, int *list, int offset, int ptr, int cp, struct pcp_vars *pcp) { register int *y = y_address; int lastg = pcp->lastg; int i, j, start, u; int pointer; int exp; int image_length, relation_length; int next_gen, next_exp; int p = pcp->p; #include "access.h" for (i = 1; i <= lastg; ++i) y[cp + i] = 0; if (ptr == 0) return; /* length of redundant relation */ relation_length = y[ptr + 1]; /* first generator in redundant relation */ u = FIELD2(y[ptr + 1 + 1]); /* its exponent */ exp = FIELD1(y[ptr + 1 + 1]); /* set up exp power of the image of u under alpha as exponent vector at cp */ traverse_list(exp, head[offset + u], list, cp, pcp); /* now reduce the entries mod p */ for (i = 1; i <= lastg; ++i) y[cp + i] %= p; /* now set up image of second generator as word with base address pointer */ pointer = pcp->lused + 1; for (i = 2; i <= relation_length; ++i) { next_gen = FIELD2(y[ptr + 1 + i]); next_exp = FIELD1(y[ptr + 1 + i]); start = head[offset + next_gen]; image_length = list[++start]; y[pointer + 1] = image_length; for (j = 1; j <= image_length; ++j) y[pointer + 1 + j] = list[start + j]; for (; next_exp > 0; --next_exp) collect(-pointer, cp, pcp); } } /* given generator t of the p-multiplicator, whose definition is u^p; hence, we have the equation u^p = W * t where W is a word (possibly trivial) in the generators of the group; find the image of t under alpha by setting up (W)alpha at cp1, ((u)alpha)^p at cp2, and then call solve_equation */ void Extend_Pow(int cp1, int cp2, int u, int offset, int *head, int *list, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int value; register int lastg = pcp->lastg; for (i = 1; i <= lastg; ++i) y[cp1 + i] = y[cp2 + i] = 0; /* set up the image of u under alpha at cp2 */ traverse_list(1, head[offset + u], list, cp2, pcp); /* raise the image of u under alpha to its pth power */ power(pcp->p, cp2, pcp); /* set up image of W under alpha at cp1 */ if ((value = y[pcp->ppower + u]) < 0) Collect_Image_Of_Str(-value, cp1, offset, head, list, pcp); } #if defined(GROUP) /* given generator t of the p-multiplicator, whose definition is [u, v]; hence, we have the equation [u, v] = W * t, or equivalently, u * v = v * u * W * t where W is a word (possibly trivial) in the generators of the group; find the image of t under alpha by setting up (v)alpha * (u)alpha * (W)alpha at cp1, (u)alpha * (v)alpha at cp2 and then call solve_equation */ void Extend_Comm(int cp1, int cp2, int u, int v, int offset, int *head, int *list, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int pointer, value; register int lastg = pcp->lastg; for (i = 1; i <= lastg; ++i) y[cp1 + i] = y[cp2 + i] = 0; /* set up the image of u under alpha at cp2 */ traverse_list(1, head[offset + u], list, cp2, pcp); /* collect image of v under alpha at cp2 */ Collect_Image_Of_Gen(cp2, head[offset + v], list, pcp); /* set up image of v under alpha at cp1 */ traverse_list(1, head[offset + v], list, cp1, pcp); /* collect image of u under alpha at cp1 */ Collect_Image_Of_Gen(cp1, head[offset + u], list, pcp); /* collect image of W under alpha at cp1 */ pointer = y[pcp->ppcomm + u]; if ((value = y[pointer + v]) < 0) Collect_Image_Of_Str(-value, cp1, offset, head, list, pcp); } #endif /* there may be a case where each of the exponent and p is large to use the power routine to compute the exp power of the image of generator under automorphism -- it does not seem to be worthwhile where p = 5 -- needs further investigation */ void Pq_Collect_Image_Of_Gen( int exp, int cp, int head, int *list, struct pcp_vars *pcp) { register int *y = y_address; register int lused = pcp->lused; int str = lused + pcp->lastg; register int i; for (i = 1; i <= pcp->lastg; ++i) y[lused + i] = 0; traverse_list(1, head, list, lused, pcp); power(exp, lused, pcp); vector_to_string(lused, str, pcp); collect(-str, cp, pcp); } /* collect image of a generator under the action of an automorphism and store the result at cp */ void Collect_Image_Of_Gen(int cp, int head, int *list, struct pcp_vars *pcp) { register int *y = y_address; register int lused = pcp->lused; register int length = list[++head]; register int i; y[lused + 1] = length; for (i = 1; i <= length; ++i) y[lused + 1 + i] = list[head + i]; collect(-lused, cp, pcp); } /* collect image of supplied string under the action of supplied automorphism and store the result at cp */ void Collect_Image_Of_Str( int string, int cp, int offset, int *head, int *list, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int generator, exp; register int value; register int length = y[string + 1] - 1; /* last element of string is in p-multiplicator */ #include "access.h" /* process the string generator by generator, collecting exp copies of the image of generator under action of automorphism -- should power routine be used? */ for (i = 1; i <= length; ++i) { value = y[string + 1 + i]; generator = FIELD2(value); exp = FIELD1(value); while (exp > 0) { Collect_Image_Of_Gen(cp, head[offset + generator], list, pcp); --exp; } } } anupq-3.3.0/src/print_level.c000644 000766 000024 00000001547 14355420571 016423 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A print_level.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" /* set print levels for p-quotient calculation */ void print_level(int *output, struct pcp_vars *pcp) { Logical reading = TRUE; while (reading) { read_value(TRUE, "Input print level (0-3): ", output, MIN_PRINT); reading = (*output > MAX_PRINT); if (reading) printf( "Print level must lie between %d and %d\n", MIN_PRINT, MAX_PRINT); } pcp->diagn = (*output == MAX_PRINT); pcp->fullop = (*output >= INTERMEDIATE_PRINT); } anupq-3.3.0/src/autgp_order.c000644 000766 000024 00000007215 14355420571 016411 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A autgp_order.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "pq_functions.h" #include "global.h" #include "standard.h" #ifdef HAVE_GMP /* update the order of the automorphism group */ void update_autgp_order(int orbit_length, struct pga_vars *pga, struct pcp_vars *pcp) { /* register int *y = y_address; */ register int nmr_cent; MP_INT prime, nmr_centrals, orbit_size; MP_INT t; /* divide existing automorphism group order by size of orbit */ mpz_init_set_si(&orbit_size, orbit_length); mpz_div(&(pga->aut_order), &(pga->aut_order), &orbit_size); /* multiply existing order by order of new central automorphisms */ if (pga->final_stage) { /* int d = y[pcp->clend + 1]; nmr_cent = y[pcp->clend + pcp->cc] - y[pcp->clend + pcp->cc - 1]; */ nmr_cent = pga->nmr_centrals; mpz_init_set_si(&prime, pcp->p); mpz_init(&nmr_centrals); /* mpz_pow_ui (&nmr_centrals, &prime, nmr_cent * d); */ mpz_pow_ui(&nmr_centrals, &prime, nmr_cent); mpz_init(&t); mpz_mul(&t, &(pga->aut_order), &nmr_centrals); mpz_set(&(pga->aut_order), &t); /* mpz_mul (&(pga->aut_order), &(pga->aut_order), &nmr_centrals); */ mpz_clear(&t); mpz_clear(&prime); mpz_clear(&nmr_centrals); } mpz_clear(&orbit_size); } /* report the group and automorphism group order */ void report_autgp_order(struct pga_vars *pga, struct pcp_vars *pcp) { int p, n; char *s; if (StandardPresentation) return; p = pcp->p; n = pcp->lastg; if (pga->print_automorphism_order && (pga->capable || pga->terminal)) { s = pga->upper_bound ? "at most " : ""; printf("Order of group is %d^%d;", p, n); printf(" automorphism group order is %s", s); mpz_out_str(stdout, 10, &(pga->aut_order)); printf("\n"); } } /* compute (an upper bound for) the order of the automorphism group */ void autgp_order(struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; MP_INT diff, prime, nmr_centrals, sub, large; MP_INT t; register int i, d, n, p; char *s; p = pcp->p; d = y[pcp->clend + 1]; n = y[pcp->clend + pcp->cc - 1]; mpz_init_set_si(&(pga->aut_order), 1); mpz_init_set_si(&prime, pcp->p); /* large = p^d */ mpz_init(&large); mpz_pow_ui(&large, &prime, d); mpz_init_set_si(&sub, 1); for (i = 0; i < d; ++i) { mpz_init(&diff); mpz_sub(&diff, &large, &sub); mpz_mul(&(pga->aut_order), &(pga->aut_order), &diff); mpz_mul(&sub, &sub, &prime); mpz_clear(&diff); } mpz_init(&nmr_centrals); mpz_pow_ui(&nmr_centrals, &prime, (n - d) * d); /* mpz_mul (&(pga->aut_order), &(pga->aut_order), &nmr_centrals); */ mpz_init(&t); mpz_mul(&t, &(pga->aut_order), &nmr_centrals); mpz_set(&(pga->aut_order), &t); mpz_clear(&t); mpz_clear(&sub); mpz_clear(&large); mpz_clear(&prime); mpz_clear(&nmr_centrals); /* if d < n, we only have an upper bound for the order */ pga->upper_bound = (d < n); if (StandardPresentation) { s = pga->upper_bound ? "at most " : ""; printf("Starting group has order %d^%d;", p, n); printf(" its automorphism group order is %s", s); mpz_out_str(stdout, 10, &(pga->aut_order)); printf(" \n"); } } #endif anupq-3.3.0/src/collect_comm.c000644 000766 000024 00000005421 14355420571 016533 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A collect_comm.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" #include "pq_functions.h" #include "pretty_filterfns.h" #include "word_types.h" /* collect a commutator relation in the defining generators of the group */ void collect_def_comm(int ptr, int cp, struct pcp_vars *pcp) { register int *y = y_address; register int cp1, cp2, cp3, cp4, result; register int lastg = pcp->lastg; register int total; int disp = 0; int depth; int exp; cp1 = pcp->submlg - lastg - 2; cp2 = cp1 - lastg; cp3 = cp2 - lastg; cp4 = cp3 - lastg; result = cp4 - lastg; /* fudge the value of submlg because of possible call to power */ total = 6 * lastg + 6; pcp->submlg -= total; depth = -y[ptr] - 1; exp = y[ptr + 1]; collect_defining_generator(ptr + 2, cp2, pcp); copy(cp2, lastg, cp3, pcp); disp = 0; while (--depth > 0) { ++disp; collect_defining_generator(ptr + 2 + disp, cp1, pcp); copy(cp1, lastg, cp4, pcp); /* solve the equation (ba) * x = ab to obtain [a, b] */ find_commutator(cp1, cp2, cp3, cp4, result, pcp); copy(result, lastg, cp2, pcp); copy(result, lastg, cp3, pcp); } power(exp, result, pcp); #ifdef DEBUG /* print the commutator */ setup_word_to_print("commutator", result, pcp->lused, pcp); #endif /* copy result to cp */ copy(result, lastg, cp, pcp); /* reset the value of submlg */ pcp->submlg += total; } /* collect value of defining generator stored at y[ptr] to storage location cp */ void collect_defining_generator(int ptr, int cp, struct pcp_vars *pcp) { register int *y = y_address; register int lastg = pcp->lastg; int i, generator, genval; #ifdef DEBUG int j, word_len; #endif /* zero out lastg entries in array in order to store result */ for (i = 1; i <= lastg; ++i) y[cp + i] = 0; generator = y[ptr]; genval = y[pcp->dgen + generator]; /* check for illegal defining generators */ if (abs(generator) > pcp->ndgen || generator == 0) report_error(0, generator, 0); #ifdef DEBUG if (genval > 0) printf("%d %d\n", generator, genval); else if (genval < 0) { printf("%d %d ", generator, y[-genval]); word_len = y[-genval + 1]; for (j = 1; j <= word_len; ++j) printf(" %d", y[-genval + 1 + j]); } else printf("generator %d is trivial\n", generator); #endif collect(genval, cp, pcp); #ifdef DEBUG print_array(y, cp, cp + pcp->lastg + 1); #endif } anupq-3.3.0/src/solve_equation.c000644 000766 000024 00000004005 14355420571 017125 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A solve_equation.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "word_types.h" /* calculate a solution, x, to the equation a * x = b, where a and b are supplied as exponent vectors with addresses cp1 and cp2; the result is stored as an exponent vector with address result */ void solve_equation(int cp1, int cp2, int result, struct pcp_vars *pcp) { register int *y = y_address; register int i, r; register int p = pcp->p; register int str = pcp->lused + 1; register int lastg = pcp->lastg; #include "access.h" y[str] = 1; for (i = 1; i <= lastg; ++i) { r = y[cp2 + i] - y[cp1 + i]; if (r < 0) { r += p; y[cp1 + i] = p - r; } y[result + i] = r; if (r != 0) { y[str + 1] = PACK2(r, i); collect(-str + 1, cp1, pcp); } y[cp1 + i] = 0; } } /* set up input for solve_equation procedure */ void setup_to_solve_equation(int format, struct pcp_vars *pcp) { register int lastg = pcp->lastg; register int cp1, cp2, result; register int total; int type; total = 5 * lastg + 5; if (is_space_exhausted(total, pcp)) return; cp1 = pcp->submlg - lastg - 2; cp2 = cp1 - lastg; result = cp2 - lastg; /* fudge the value of submlg to deal with possible call to power */ pcp->submlg -= total; /* read in a */ type = VALUE_A; setup_word_to_collect(stdin, format, type, cp1, pcp); /* read in b */ type = VALUE_B; setup_word_to_collect(stdin, format, type, cp2, pcp); /* solve a * x = b and print result */ solve_equation(cp1, cp2, result, pcp); setup_word_to_print("value of x", result, pcp->lused, pcp); /* reset the value of submlg */ pcp->submlg += total; } anupq-3.3.0/src/list_commutators.c000644 000766 000024 00000012105 14355420571 017500 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A list_commutators.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" #include "pcp_vars.h" #include "pq_functions.h" /* evaluate the Engel (p - 1)-identity [a, (p - 1) b] = 1 where each of a and b range over all of the generators of supplied weights; echelonise the results and add to the queue for possible closure under action of automorphisms */ void list_commutators(int *queue, int *queue_length, struct pcp_vars *pcp) { register int *y = y_address; register int lastg = pcp->lastg; register int cp, cp1, cp2, cp3, cp4, result; register int first, last; register int total; register int depth; register int i, gen; int weight, second_weight; register int start, end, second; register int p = pcp->p; total = 6 * lastg + 6; cp1 = pcp->submlg - lastg - 2; cp2 = cp1 - lastg; cp3 = cp2 - lastg; cp4 = cp3 - lastg; result = cp4 - lastg; /* fudge the value of submlg because of possible call to power */ pcp->submlg -= total; read_value( TRUE, "Input weight of first component of commutator: ", &weight, 1); first = y[pcp->clend + weight - 1] + 1; last = y[pcp->clend + weight]; read_value(TRUE, "Input weight of other components of commutator: ", &second_weight, 1); start = y[pcp->clend + second_weight - 1] + 1; end = y[pcp->clend + second_weight]; for (gen = first; gen <= last; ++gen) { for (second = start; second <= end; ++second) { if (is_space_exhausted(total, pcp)) return; /* set up first component at cp2 and cp3 */ for (i = 1; i <= lastg; ++i) y[cp2 + i] = y[cp3 + i] = 0; y[cp2 + gen] = y[cp3 + gen] = 1; depth = p; while (--depth > 0) { /* set up next component, b, at cp1 and cp4 -- b has value second */ for (i = 1; i <= lastg; ++i) y[cp1 + i] = y[cp4 + i] = 0; y[cp1 + second] = y[cp4 + second] = 1; /* solve the equation (ba) * x = ab to obtain [a, b] */ find_commutator(cp1, cp2, cp3, cp4, result, pcp); /* replace value of a by x */ copy(result, lastg, cp2, pcp); copy(result, lastg, cp3, pcp); } cp = pcp->lused; /* print the commutator */ if (pcp->diagn) setup_word_to_print("commutator", result, cp, pcp); /* now echelonise the result */ copy(result, lastg, cp, pcp); setup_echelon(queue, queue_length, cp, pcp); if (pcp->redgen != 0 && pcp->diagn) printf("The commutator evaluated is [%d, %d]\n", gen, second); } } /* reset the value of submlg */ pcp->submlg += total; } #if defined(DEBUG) /* set up list of commutators of the form [a, 1, 1, 1, 1] where a ranges over a supplied weight, to close under action of automorphisms */ void List_Commutators(int *queue, int *queue_length, struct pcp_vars *pcp) { register int *y = y_address; register int lastg = pcp->lastg; register int total; int cp1 = pcp->submlg - lastg - 2; int cp2 = cp1 - lastg; int cp3 = cp2 - lastg; int cp4 = cp3 - lastg; int result = cp4 - lastg; register int cp; register int first, last; register int depth; register int i, gen; int weight; read_value( TRUE, "Input weight of first component of commutator: ", &weight, 1); first = y[pcp->clend + weight - 1] + 1; last = y[pcp->clend + weight]; total = 6 * lastg + 6; if (is_space_exhausted(total, pcp)) return; /* fudge the value of submlg because of possible call to power */ pcp->submlg -= total; for (gen = first; gen <= last; ++gen) { /* set up first component at cp2 and cp3 */ for (i = 1; i <= lastg; ++i) y[cp2 + i] = y[cp3 + i] = 0; y[cp2 + gen] = y[cp3 + gen] = 1; depth = 5; while (--depth > 0) { /* set up next component, b, at cp1 and cp4 -- b is 1 in all cases */ for (i = 1; i <= lastg; ++i) y[cp1 + i] = y[cp4 + i] = 0; y[cp1 + 1] = y[cp4 + 1] = 1; /* solve the equation (ba) * x = ab to obtain [a, b] */ find_commutator(cp1, cp2, cp3, cp4, result, pcp); /* replace value of a by x */ copy(result, lastg, cp2, pcp); copy(result, lastg, cp3, pcp); } /* now echelonise the result */ cp = pcp->lused; copy(result, lastg, cp, pcp); for (i = 1; i <= lastg; ++i) y[cp + lastg + i] = 0; echelon(pcp); if (pcp->redgen != 0) queue[++*queue_length] = pcp->redgen; /* print the commutator */ /* cp = pcp->lused; setup_word_to_print ("commutator", result, cp, pcp); */ } /* reset the value of submlg */ pcp->submlg += total; } #endif anupq-3.3.0/src/read_relator_file.c000644 000766 000024 00000003716 14355420571 017542 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A read_relator_file.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" #include "pcp_vars.h" #include "pq_functions.h" #include "word_types.h" /* collect and echelonise the relators supplied in named file and add any redundancies to queue; it is assumed that the relators file has the following format: its first entry is the number of elements in the file; each relator is given as a word supplied in standard word/relation format -- that is, exponent followed by list of generators and terminated by the END_OF_WORD symbol; the word need NOT be in normal form */ void read_relator_file(int *queue, int *queue_length, struct pcp_vars *pcp) { register int *y = y_address; FILE *relation_file; int nmr_relations; int format = BASIC; char *name; int type; int cp; register int i, k; register int lastg = pcp->lastg; int nmr_items; name = GetString("Enter relation file name: "); relation_file = OpenFile(name, "r+"); if (relation_file == NULL) return; nmr_items = fscanf(relation_file, "%d", &nmr_relations); verify_read(nmr_items, 1); type = WORD; for (i = 1; i <= nmr_relations; ++i) { if (pcp->complete) break; if (!is_space_exhausted(3 * lastg + 2, pcp)) { cp = pcp->lused; setup_word_to_collect(relation_file, format, type, cp, pcp); if (pcp->diagn) setup_word_to_print("collected word", cp, cp + pcp->lastg + 1, pcp); for (k = 1; k <= lastg; ++k) y[cp + lastg + k] = 0; } echelon(pcp); if (pcp->redgen != 0 && pcp->m != 0) queue[++*queue_length] = pcp->redgen; } CloseFile(relation_file); } anupq-3.3.0/src/invert.c000644 000766 000024 00000005615 14355420571 015407 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A invert.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" #include "word_types.h" /* this procedure multiplies the exponent vector with address cp by gen^(-exp), where gen is a pcp-generator and exp is a positive integer in the range 0 to p */ void invert_generator(int gen, int exp, int cp, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int inverse; register int entry; register int lastg = pcp->lastg; register int cp1 = pcp->submlg; register int p = pcp->p; #include "access.h" /* each call to collect involves a string of length 1; reserve two positions below y[pcp->submlg] for this */ inverse = cp1 - 2; y[inverse + 1] = 1; /* set up gen^exp as an exponent vector with base address cp1 */ for (i = 1; i <= lastg; ++i) y[cp1 + i] = 0; y[cp1 + gen] = exp; /* now calculate the inverse, storing the result at cp */ for (i = gen; i <= lastg; ++i) { entry = y[cp1 + i]; if (entry != 0) { y[inverse + 2] = PACK2(p - entry, i); collect(-inverse, cp, pcp); collect(-inverse, cp1, pcp); } } } /* calculate the inverse of the string with base address y[str], using the collected part referenced by cp */ void invert_string(int str, int cp, struct pcp_vars *pcp) { register int *y = y_address; register int length; register int gen, exp; #include "access.h" for (length = abs(y[str + 1]); length > 0; --length) { gen = FIELD2(y[str + length]); exp = FIELD1(y[str + length]); invert_generator(gen, exp, cp, pcp); } } /* invert word with base address ptr; store result as exponent vector with base address cp */ void invert_word(int ptr, int cp, struct pcp_vars *pcp) { register int *y = y_address; register int gen; register int exp; register int length = y[ptr]; for (; length > 1; --length) { gen = y[ptr + length]; if (gen < 0) collect(-gen, cp, pcp); else invert_generator(gen, 1, cp, pcp); } exp = y[ptr + 1]; if (exp != 1) calculate_power(exp, ptr, cp, pcp); } /* read word, compute its inverse, and print out result */ void setup_word_to_invert(struct pcp_vars *pcp) { register int *y = y_address; int type = INVERSE_OF_WORD; int disp = pcp->lastg; int cp = pcp->lused; int ptr = pcp->lused + 1 + disp; int str; register int i; for (i = 1; i <= pcp->lastg; ++i) y[cp + i] = 0; read_word(stdin, disp, type, pcp); invert_word(ptr, cp, pcp); str = ptr + y[ptr] + 1; setup_word_to_print("inverse", cp, str, pcp); } anupq-3.3.0/src/is_space_exhausted.c000644 000766 000024 00000002407 14355420571 017734 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A is_space_exhausted.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" /* beware - calls to this procedure are context sensitive since it may call compact which moves strings; hence, calls should be carefully placed with a suitable upper bound as argument; check if there is room available for required words; if so, return FALSE, otherwise compact the workspace and try again; if there is still no room, report this, set pcp->overflow TRUE, and return TRUE */ Logical is_space_exhausted(int required, struct pcp_vars *pcp) { register int *y = y_address; int remain; if (pcp->lused + required - pcp->subgrp <= 0) return FALSE; /* not enough room currently available, so we compact tables */ compact(pcp); if (pcp->lused + required - pcp->subgrp <= 0) return FALSE; pcp->overflow = TRUE; /* number of generators in last class */ remain = pcp->lastg - y[pcp->clend + pcp->cc - 1]; text(11, remain, 0, 0, 0); return TRUE; } anupq-3.3.0/src/main.c000644 000766 000024 00000014270 14355420571 015021 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A main.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" #include "constants.h" #include "pq_author.h" #include "menus.h" #include "global.h" #include "standard.h" #if defined(RUN_TIME) #include "runtime.h" #endif /* main routine for p-quotient program; the run-time parameters are -b to choose basic format for input of presentation; -G used by GAP 4, essentially equivalent to: -i -g -k simultaneously except that it also sends requests back via GAP's iostream when it needs GAP to compute stabilisers; -g to write GAP group library and to run pq from within GAP; -i to choose standard presentation menu; -k to read from file using key words; -s to allocate array of size for workspace y; -t to pass time limit in CPU seconds for computation where t = 0 implies infinite time; -v prints the version of the pq binary and exits; -w to write group descriptions in GAP format to -- used in conjunction -g if compiled with RUN_TIME flag then there are two additional options: -c to set class bound; -d to set defining generator bound; if workspace not passed, the default size of y is the constant PQSPACE */ int work_space = PQSPACE; int format = PRETTY; int menu = DEFAULT_MENU; Logical StandardPresentation = FALSE; /* From pcp_vars.h */ int *y_address = 0; /* From global.h */ int Group_library = 0; int Compact_Description = 0; int Compact_Order = 0; char *Group_library_file = 0; Logical GAP4iostream = FALSE; static int process_parameters(int argc, char **argv); int main(int argc, char **argv) { int t; struct pcp_vars pcp; #include "access.h" setbuf(stdout, NULL); Compact_Description = FALSE; /* process run-time parameters */ if (process_parameters(argc, argv) == 0) { #if defined(RUN_TIME) printf("Usage: pq [-b] [-c] [-d] [-G] [-g] [-i] [-k] [-s ] [-v] " "[-w ]\n"); #else printf("Usage: pq [-b] [-G] [-g] [-i] [-k] [-s ] [-v] [-w " "]\n"); #endif exit(INPUT_ERROR); } Allocate_WorkSpace(work_space, &pcp); /* print startup message */ print_message(work_space); #if defined(GROUP) #if defined(STANDARD_PCP) if (menu == ISOM_MENU) isom_options(format, &pcp); else #endif #endif options(DEFAULT_MENU, format, &pcp); t = runTime(); printf("Total user time in seconds is %.2f\n", t * CLK_SCALE); exit(SUCCESS); } /* process run-time parameters */ static int process_parameters(int argc, char **argv) { int i; Logical error; #if defined(RUN_TIME) int A1, A3; A1 = 0; A3 = 0; #endif Group_library_file = NULL; for (i = 1; i < argc; ++i) { if (strcmp(argv[i], "-s") == 0) { if (i == argc - 1) return (0); work_space = string_to_int(argv[++i], &error); if (error) return (0); } else if (strcmp(argv[i], "-w") == 0) { if (i == argc - 1 || argv[++i][0] == '-') return (0); Group_library_file = allocate_char_vector(strlen(argv[i]), 0, FALSE); strcpy(Group_library_file, argv[i]); } else if (strcmp(argv[i], "-b") == 0) format = BASIC; #if defined(RUN_TIME) else if (strcmp(argv[i], "-d") == 0) { if (i == argc - 1) return (0); A1 = string_to_int(argv[++i], &error); if (error) return (0); } else if (strcmp(argv[i], "-c") == 0) { if (i == argc - 1) return (0); A3 = string_to_int(argv[++i], &error); if (error) return (0); } #endif #if defined(STANDARD_PCP) else if (strcmp(argv[i], "-i") == 0) menu = ISOM_MENU; #endif else if (strcmp(argv[i], "-k") == 0) format = FILE_INPUT; else if (strcmp(argv[i], "-G") == 0) { Group_library = GAP_LIBRARY; menu = ISOM_MENU; format = FILE_INPUT; GAP4iostream = TRUE; } else if (strcmp(argv[i], "-g") == 0) Group_library = GAP_LIBRARY; else if (strcmp(argv[i], "-v") == 0) { printf("%s\n", PQ_VERSION); exit(SUCCESS); } else return (0); } #if defined(RUN_TIME) ExamineOptions(A1, A3); #endif #if defined(GAP) CreateGAPLibraryFile(); #endif return 1; } #if defined(RUN_TIME) /* how many bits are needed to store x? */ int NmrOfBits(int x) { int nmr = 0; while (x >= 1) { x = x >> 1; ++nmr; } return nmr; } int ExamineOptions(int A1, int A3) { if (A1 == 0 && A3 == 0) return; if (A1 <= 0 || A3 <= 0) { printf("You must supply positive values for each of -d and -c\n"); exit(INPUT_ERROR); } A1 = NmrOfBits(A1); A3 = NmrOfBits(A3); if (A1 + A3 >= WORD_LENGTH) { printf("Product of the values for -d and -c must need at most %d bits\n", WORD_LENGTH - 1); exit(INPUT_ERROR); } GSC1 = A1; GSC2 = WORD_LENGTH - (A1 + A3); MAXGENS = int_power(2, GSC1) - 1; MAXPC = int_power(2, GSC2) - 1; MAXCLASS = int_power(2, A3) - 1; printf("********************************************\n"); printf("Program now uses the following bounds:\n"); printf("Number of defining generators: %d\n", MAXGENS); printf("Number of pc generators: %d\n", MAXPC); printf("Class bound: %d\n", MAXCLASS); printf("********************************************\n"); } #endif #if defined(GAP) /* if pq is called successfully from GAP, we want GAP_library file to exist in all cases, even if no group descriptions have been saved to it */ void CreateGAPLibraryFile(void) { FILE *GAP_library; if (Group_library == GAP_LIBRARY) { if (Group_library_file == NULL) Group_library_file = "GAP_library"; GAP_library = OpenFile(Group_library_file, "a+"); fprintf(GAP_library, "ANUPQmagic := \"groups saved to file\";\n"); CloseFile(GAP_library); } } #endif anupq-3.3.0/src/isom_options.c000644 000766 000024 00000044050 14355420571 016616 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A isom_options.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "constants.h" #include "pq_defs.h" #include "pretty_filterfns.h" #include "standard.h" #include "menus.h" #include "pcp_vars.h" #include "pga_vars.h" #include "pq_functions.h" #include "word_types.h" #if defined(GROUP) #if defined(STANDARD_PCP) static Logical setup_start_info(Logical identity_map, Logical status, FILE *file, int format, struct pga_vars *pga, struct pcp_vars *pcp); static Logical compare_sequences(int *s, int *t, int length); static char FileBuffer[1024]; static void copy_file(const char *from, const char *to) { FILE *in; FILE *out; int n; in = fopen(from, "r"); if (in == NULL) { perror(from); exit(FAILURE); } out = fopen(to, "w"); if (out == NULL) { perror(to); exit(FAILURE); } do { n = fread(FileBuffer, 1, 1024, in); if (0 < n) fwrite(FileBuffer, 1, n, out); if (ferror(in)) { perror(from); exit(FAILURE); } if (ferror(out)) { perror(to); exit(FAILURE); } } while (!feof(in)); fclose(in); fclose(out); } static void append_file(const char *from, const char *to) { FILE *in; FILE *out; int n; in = fopen(from, "r"); if (in == NULL) { perror(from); exit(FAILURE); } out = fopen(to, "a"); if (out == NULL) { perror(to); exit(FAILURE); } do { n = fread(FileBuffer, 1, 1024, in); if (0 < n) fwrite(FileBuffer, 1, n, out); if (ferror(in)) { perror(from); exit(FAILURE); } if (ferror(out)) { perror(to); exit(FAILURE); } } while (!feof(in)); fclose(in); fclose(out); } #define ISOM_OPTION 8 #define MAXOPTION 9 /* maximum number of menu options */ void list_isom_menu(void); /* control routine for computing standard presentation */ void isom_options(int format, struct pcp_vars *pcp) { register int *y = y_address; FILE *Status = 0; FILE *FileName = 0; FILE *Subgroup = 0; struct pga_vars pga; Logical user_supplied = FALSE; Logical group_present = FALSE; Logical identity_map; Logical finished; Logical valid; Logical equal; int output = DEFAULT_STANDARD_PRINT; int start_class, final_class; int option; int t; int status; int complete; int iteration; int *seq1; int *seq2; int len1, len2; int nmr_items; int ***auts; int x_dim, y_dim; FILE *GAP_library = 0; char *name = 0; int nmr_of_exponents; StandardPresentation = TRUE; pga.nmr_soluble = 0; list_isom_menu(); do { option = read_option(MAXOPTION); switch (option) { case -1: list_isom_menu(); break; case START_INFO: t = runTime(); group_present = setup_start_info(FALSE, 0, stdin, format, &pga, pcp); handle_error(group_present); user_supplied = TRUE; t = runTime() - t; /* it is possible that the p-quotient is trivial */ if (pcp->cc == 0) { group_present = FALSE; break; } printf("Class %d %d-quotient and its %d-covering group computed in " "%.2f seconds\n", pcp->cc - 1, pcp->p, pcp->p, t * CLK_SCALE); break; case CONSTRUCT: if (!user_supplied) { name = GetString("Enter input file name for group information: "); FileName = OpenFile(name, "r"); if (FileName == NULL) break; } name = GetString("Enter output file name for group information: "); read_value( TRUE, "Standardise presentation to what class? ", &final_class, 0); if (user_supplied && final_class < pcp->cc) { printf("Value supplied for end class must be at least %d\n", pcp->cc); } /* read in data from file and set up group to end of start_class and compute its p-covering group */ if (!user_supplied) { group_present = setup_start_info(FALSE, 0, FileName, FILE_INPUT, &pga, pcp); handle_error(group_present); if (final_class < pcp->cc) { CloseFile(FileName); printf("Value supplied for end class must be at least %d\n", pcp->cc); } } if (pcp->cc == 0) { printf("%d-quotient is trivial\n", pcp->p); break; } complete = (pcp->newgen == 0) ? TERMINAL : CAPABLE; iteration = 0; for (start_class = pcp->cc; start_class <= final_class && complete != TERMINAL; ++start_class) { t = runTime(); identity_map = FALSE; Subgroup = OpenFile("ISOM_Subgroup", "w"); do { ++iteration; set_defaults(&pga); /* pga.space_efficient = TRUE; */ /* either prompt for information or read it from file */ if (user_supplied) { auts = read_auts(STANDARDISE, &pga.m, &nmr_of_exponents, pcp); pga.fixed = 0; query_solubility(&pga); user_supplied = FALSE; #ifdef HAVE_GMP autgp_order(&pga, pcp); #endif } else { auts = read_auts_from_file(FileName, &pga.m, pcp); nmr_items = fscanf(FileName, "%d", &pga.fixed); verify_read(nmr_items, 1); nmr_items = fscanf(FileName, "%d", &pga.soluble); verify_read(nmr_items, 1); #ifdef HAVE_GMP fscanf(FileName, "\n"); mpz_init(&pga.aut_order); mpz_inp_str(&pga.aut_order, FileName, 10); #endif CloseFile(FileName); } x_dim = pga.m; y_dim = pcp->lastg; /* construct standard presentation relative to smallest permissible characteristic subgroup in p-multiplicator */ standard_presentation(&identity_map, output, auts, &pga, pcp); free_array(auts, x_dim, y_dim, 1); /* was the characteristic subgroup chosen in this iteration the whole of the p-multiplicator? */ Status = OpenFile("ISOM_Status", "r"); fscanf(Status, "%d", &status); fscanf(Status, "%d", &complete); CloseFile(Status); /* have we finished the construction? */ finished = (status == END_OF_CLASS && (start_class == final_class || complete == TERMINAL)); /* organise to write modified presentation + automorphisms to file ISOM_PP */ if (!identity_map || finished) { copy_file("ISOM_present", "ISOM_PP"); append_file("ISOM_NextClass", "ISOM_PP"); } else copy_file("ISOM_NextClass", "ISOM_PP"); if (finished) break; /* if necessary, set up new presentation + other information */ FileName = OpenFile("ISOM_PP", "r"); group_present = setup_start_info( identity_map, status, FileName, FILE_INPUT, &pga, pcp); handle_error(group_present); /* if appropriate, factor subgroup from p-multiplicator */ if (status != END_OF_CLASS) factor_subgroup(pcp); /* reinitialise pga structure */ initialise_pga(&pga, pcp); pga.m = 0; pga.ndgen = y[pcp->clend + 1]; set_values(&pga, pcp); } while (status != END_OF_CLASS && complete != TERMINAL); CloseFile(Subgroup); /* the group may have completed only when relations are enforced; this is an attempt to determine this case */ if (pga.nuclear_rank != 0 && pcp->complete) break; t = runTime() - t; printf("Computing standard presentation for class %d took %.2f " "seconds\n", start_class, t * CLK_SCALE); } /* we currently may have presentation for p-covering group; or is the starting group terminal? if so, we may want to use last_class to revert to group presentation */ if (!user_supplied && iteration == 0 && !pcp->complete) last_class(pcp); /* is the group terminal? */ if (complete == TERMINAL) printf("The largest %d-quotient of the group has class %d\n", pcp->p, pcp->cc); if (iteration == 0) break; /* rename file ISOM_PP containing iteration info to nominated file */ rename("ISOM_PP", name); break; case PRINT_PCP: if (group_present) print_presentation(TRUE, pcp); break; case SAVE_PRES: name = GetString("Enter output file name: "); FileName = OpenFileOutput(name); if (group_present && FileName != NULL) { save_pcp(FileName, pcp); CloseFile(FileName); printf("Presentation written to file\n"); } break; case COMPARE: valid = get_description( "Enter file name storing first presentation: ", &len1, &seq1, pcp); if (!valid) break; valid = get_description("Enter file name storing second presentation: ", &len2, &seq2, pcp); if (!valid) break; equal = (len1 == len2) ? compare_sequences(seq1, seq2, len1) : FALSE; printf("Identical presentations? %s\n", equal == TRUE ? "True" : "False"); free_vector(seq1, 1); free_vector(seq2, 1); break; case STANDARD_PRINT_LEVEL: read_value( TRUE, "Input print level for construction (0-2): ", &output, 0); /* allow user to supply same max print level as for p-quotient calculations */ if (output == MAX_STANDARD_PRINT + 1) --output; if (output > MAX_STANDARD_PRINT) { printf("Print level must lie between %d and %d\n", MIN_STANDARD_PRINT, MAX_STANDARD_PRINT); output = DEFAULT_STANDARD_PRINT; } break; case PQ_MENU: options(ISOM_MENU, format, pcp); break; case ISOM_OPTION: assert(name); FileName = OpenFile(name, "r"); group_present = setup_start_info(FALSE, 0, FileName, FILE_INPUT, &pga, pcp); pcp->multiplicator_rank = pcp->lastg - y[pcp->clend + pcp->cc - 1]; last_class(pcp); auts = read_auts_from_file(FileName, &pga.m, pcp); nmr_items = fscanf(FileName, "%d", &pga.fixed); verify_read(nmr_items, 1); nmr_items = fscanf(FileName, "%d", &pga.soluble); verify_read(nmr_items, 1); printf("Images of user-supplied generators are listed last below\n"); print_map(pcp); #ifdef HAVE_GMP fscanf(FileName, "\n"); mpz_init(&pga.aut_order); mpz_inp_str(&pga.aut_order, FileName, 10); #endif CloseFile(FileName); GAP_library = OpenFile("GAP_library", "a+"); write_GAP_library(GAP_library, pcp); pga.nmr_centrals = pga.m; pga.nmr_stabilisers = 0; GAP_auts(GAP_library, auts, auts, &pga, pcp); CloseFile(GAP_library); printf("Presentation listing images of user-supplied generators " "written to GAP_library\n"); break; case EXIT: case MAXOPTION: unlink("ISOM_present"); unlink("ISOM_Subgroup"); unlink("ISOM_cover_file"); unlink("ISOM_group_file"); unlink("ISOM_XX"); unlink("ISOM_NextClass"); unlink("ISOM_Status"); printf("Exiting from ANU p-Quotient Program\n"); break; } /* switch */ } while (option != 0 && option != MAXOPTION); } /* list available menu options */ void list_isom_menu(void) { printf("\nStandard Presentation Menu\n"); printf("-----------------------------\n"); printf("%d. Supply start information\n", START_INFO); printf("%d. Compute standard presentation to supplied class\n", CONSTRUCT); printf("%d. Save presentation to file\n", SAVE_PRES); printf("%d. Display presentation\n", PRINT_PCP); printf("%d. Set print level for construction\n", STANDARD_PRINT_LEVEL); printf("%d. Compare two presentations stored in files\n", COMPARE); printf("%d. Call basic menu for p-Quotient program\n", PQ_MENU); printf("%d. Compute the isomorphism\n", ISOM_OPTION); printf("%d. Exit from program\n", MAXOPTION); } /* set up the group to the desired class and its p-covering group; identity_map indicates whether standard automorphism applied was the identity; status indicates whether we are end of class; the presentation is read from file using indicated format */ static Logical setup_start_info(Logical identity_map, Logical status, FILE *file, int format, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; FILE *FileName; FILE *presentation_file; Logical group_present = FALSE; int exit_value; int *list, *head; int i; #if defined(TIME) int t; t = runTime(); #endif if (!identity_map) { /* we must recompute the presentation since generators and relations have been altered by applying the standard map */ /* memory leak September 1996 */ if (user_gen_name != NULL) { num_gens = user_gen_name[0].first; for (i = 1; i <= num_gens; ++i) { free_vector(user_gen_name[i].g, 0); } free(user_gen_name); user_gen_name = NULL; free_vector(inv_of, 0); free_vector(pairnumber, 0); } exit_value = pquotient(0, 0, file, format, pcp); if (exit_value == SUCCESS) group_present = TRUE; #if defined(TIME) printf("Time to recompute pcp is %.2f\n", (runTime() - t) * CLK_SCALE); #endif } else { /* generators and relations of presentation have not changed -- we can restore presentation for either full p-covering group or class c + 1 quotient */ if (status == END_OF_CLASS) presentation_file = OpenFile("ISOM_group_file", "r"); else presentation_file = OpenFile("ISOM_cover_file", "r"); restore_pcp(presentation_file, pcp); CloseFile(presentation_file); group_present = TRUE; } #if defined(DEBUG) pcp->diagn = TRUE; printf("The modified presentation is \n"); print_presentation(TRUE, pcp); pcp->diagn = FALSE; #endif if (!group_present || pcp->cc == 0) return group_present; /* do we need to compute the full p-covering group? */ if (!identity_map || status == END_OF_CLASS) { pcp->multiplicator = TRUE; next_class(FALSE, &head, &list, pcp); pga->exponent_law = pcp->extra_relations; pga->metabelian = pcp->metabelian; enforce_laws(pga, pga, pcp); pcp->multiplicator = FALSE; FileName = OpenFile("ISOM_cover_file", "w"); save_pcp(FileName, pcp); CloseFile(FileName); } initialise_pga(pga, pcp); pga->m = 0; pga->ndgen = y[pcp->clend + 1]; set_values(pga, pcp); return group_present; } /* factor subgroup whose generators are listed in Subgroup file from p-multiplicator to give reduced p-multiplicator */ void factor_subgroup(struct pcp_vars *pcp) { register int *y = y_address; FILE *Subgroup; int flag; int cp; int i; Subgroup = fopen("ISOM_Subgroup", "r"); if (Subgroup == (FILE *)NULL) return; while (!feof(Subgroup)) { if (fscanf(Subgroup, "%d", &flag) == -1) continue; /* should we eliminate (in order to renumber the generators)? */ if (flag == ELIMINATE) eliminate(FALSE, pcp); if (fscanf(Subgroup, "%d", &flag) == -1) continue; setup_symbols(pcp); cp = pcp->lused; setup_word_to_collect(Subgroup, PRETTY, WORD, cp, pcp); for (i = 1; i <= pcp->lastg; ++i) y[cp + pcp->lastg + i] = 0; echelon(pcp); } CloseFile(Subgroup); } void handle_error(Logical group_present) { if (group_present == FALSE) { printf("Error in Standard Presentation Program\n"); exit(FAILURE); } } /* compare two sequences, s and t, of length length */ static Logical compare_sequences(int *s, int *t, int length) { /* TODO: Replace this by memcmp? */ register int i; Logical equal = TRUE; for (i = 1; i <= length && (equal = (s[i] == t[i])); ++i) ; return equal; } /* read group from file and set up its compact description as sequence seq of length len */ int get_description(char *string, int *len, int **seq, struct pcp_vars *pcp) { char *name; FILE *file; name = GetString(string); file = OpenFile(name, "r"); if (file == NULL) { if (isatty(0)) return FALSE; else exit(FAILURE); } restore_pcp(file, pcp); CloseFile(file); /* length of sequence */ *len = choose(pcp->lastg + 1, 3); /* sequence of exponents */ *seq = compact_description(FALSE, pcp); return TRUE; } #endif #endif anupq-3.3.0/src/pretty_filter.c000644 000766 000024 00000027715 14355420571 017001 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A pretty_filter.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pq_functions.h" #include "constants.h" #include "pcp_vars.h" #include "pretty_filterfns.h" /* SIGNIFICANT is the number of significant characters in the keyword strings; if you change this, you'll have to change the calls to strcmp so that the strings being compared with label continue to have length SIGNIFICANT */ #define SIGNIFICANT 3 static int rfileno; static FILE *rfile; static FILE *wfile; extern int num_gens; extern gen_type *inv_of; extern word *user_gen_name; extern int gen_array_size; extern int *pairnumber; extern int paired_gens; char gpname[MAXIDENT]; char filename[MAXIDENT]; /* process "pretty" presentation input from file using key words; this is a modified version of code written by Sarah Rees */ int pretty_filter(FILE *file, int *max_class, int *output, struct pcp_vars *pcp) { register int *y = y_address; int prime = 0; int exponent = 0; int nrels = 0; int end = MAXIDENT - 1; int count, posn; int ptr, relp, length; int i = 1; char c; word w; word_link *root = word_link_create(); word_link *wlp = 0; word_link *next = 0; gen_type g; char label[SIGNIFICANT + 1]; Logical metabelian_flag = FALSE; rfile = file; rfileno = fileno(rfile); wfile = stdout; *max_class = 10; *output = 1; inv_of = 0; paired_gens = 0; strcpy(gpname, "G"); wfile = stdout; pcp->cover = 0; while (read_next_string(label, SIGNIFICANT, rfile)) { if (strcmp(label, "nam") == 0) { read_next_string(gpname, end, rfile); /* knock off the blank spaces at the end */ i = end - 1; while (i >= 0 && gpname[i] == ' ') i--; gpname[i + 1] = '\0'; } else if (strcmp(label, "pri") == 0) { read_next_int(&prime, rfile); } else if (strcmp(label, "cla") == 0) { read_next_int(max_class, rfile); } else if (strcmp(label, "out") == 0) { read_next_int(output, rfile); } else if (strcmp(label, "met") == 0) { metabelian_flag = TRUE; } else if (strcmp(label, "exp") == 0) { read_next_int(&exponent, rfile); } else if (strcmp(label, "gen") == 0) { read_gen_name_array(rfile); default_inverse_array(); pairnumber = anu_valloc(int, num_gens + 1); for (i = 1; i <= num_gens; i++) { if (i <= inv(i)) { paired_gens++; pairnumber[i] = pairnumber[inv(i)] = paired_gens; } } } else if (strcmp(label, "rel") == 0) { /* read in and store the relations/relators; every relator/relation is actually stored as a relation (i.e. two consecutive words in the list) */ find_char('{', rfile); pc_word_init(&w); wlp = root; while (read_next_word(&w, rfile)) { nrels++; word_link_init(wlp); word2prog_word(&w, wlp->wp); wlp = wlp->next; pc_word_reset(&w); while ((c = read_char(rfile)) == ' ') ; word_link_init(wlp); if (c == '=') { count = 1; if (!isatty(rfileno)) posn = ftell(rfile); /* mark posn */ /* pick up the word at the end of the chain of '=''s as the right hand side of the equation */ do { read_next_word(&w, rfile); while ((c = read_char(rfile)) == ' ') ; if (c == '=') { pc_word_reset(&w); count++; } } while (c == '='); ungetc(c, rfile); word2prog_word(&w, wlp->wp); pc_word_reset(&w); if (count > 1) { if (!isatty(rfileno)) fseek(rfile, posn, 0); /* go back to the marker if there was more than one '=' */ else { /* we can't use fseek if we're inputting from stdin */ printf("You may not input relations of the type u = v = w " "from terminal\n"); exit(FAILURE); } } } else ungetc(c, rfile); wlp = wlp->next; } find_char('}', rfile); word_clear(&w); } } /* a single ; or one preceded by an unrecognised keyword marks the end of the data */ find_char(';', rfile); /* pick up the terminating ';' */ pcp->p = prime; pcp->ndgen = paired_gens; pcp->ndrel = nrels; pcp->extra_relations = exponent; strcpy(pcp->ident, gpname); pcp->diagn = (*output == MAX_PRINT); pcp->fullop = (*output >= INTERMEDIATE_PRINT); check_input(*output, max_class, pcp); if (!pcp->valid) return INPUT_ERROR; initialise_pcp(*output, pcp); /* set the metabelian flag appropriately */ pcp->metabelian = metabelian_flag; setup(pcp); /* next set up each relation in the list, as left hand side followed by right hand side, after expressing each as a power if possible */ wlp = root; ptr = pcp->lused; relp = pcp->relp; while (wlp->wp) { word *wp = wlp->wp; gen_type *gp = wp->g + wp->first; gen_type *ggp = wp->g + wp->last; ptr = pcp->lused + 1; length = 1; while (gp <= ggp) { g = *gp; y[ptr + (++length)] = (g <= inv(g)) ? pairnumber[g] : -pairnumber[g]; gp++; } /* set up exponent */ if (wp->n) y[ptr + 1] = wp->n; else if (length == 1) y[ptr + 1] = 0; /* this deals with the trivial word */ else y[ptr + 1] = 1; /* set up relation length */ if (wp->type == 'c') y[ptr] = -length; else y[ptr] = length; ++relp; y[relp] = ptr; pcp->lused += (length + 1); next = wlp->next; word_link_clear(wlp); wlp = next; } pcp->gspace = pcp->lused + 1; free((char *)wlp); if (user_gen_name) { for (i = 0; i < gen_array_size; ++i) word_clear(user_gen_name + i); free((char *)user_gen_name); user_gen_name = 0; } if (inv_of) { free((char *)inv_of); inv_of = 0; } return SUCCESS; } /* check the input supplied to the p-quotient calculation */ void check_input(int output, int *max_class, struct pcp_vars *pcp) { pcp->valid = TRUE; if (output < 0 || output > MAX_PRINT) { printf("Print level must lie between %d and %d\n", MIN_PRINT, MAX_PRINT); pcp->valid = FALSE; } if (pcp->ndgen > MAXGENS) { printf("The maximum number of defining generators is %d\n", MAXGENS); pcp->valid = FALSE; } if (pcp->ndgen < 1) { printf("The minimum number of defining generators is 1\n"); pcp->valid = FALSE; } if (pcp->p != 2 && MOD(pcp->p, 2) == 0) { printf("%d is not a prime\n", pcp->p); pcp->valid = FALSE; } if (*max_class == 0) { *max_class = DEFAULT_CLASS; text(15, DEFAULT_CLASS, 0, 0, 0); } else if (*max_class > MAXCLASS) { *max_class = MAXCLASS; text(15, MAXCLASS, 0, 0, 0); } else if (*max_class < 0) { printf("Class must be a non-negative integer\n"); pcp->valid = FALSE; } } /* read the generator list */ void pretty_read_generators(struct pcp_vars *pcp) { Logical reading = TRUE; int i; rfile = stdin; wfile = stdout; while (reading) { printf("Input generating set (in { }): "); paired_gens = 0; inv_of = 0; /* bug fix */ read_gen_name_array(rfile); default_inverse_array(); pairnumber = anu_valloc(int, num_gens + 1); for (i = 1; i <= num_gens; i++) { if (i <= inv(i)) { paired_gens++; pairnumber[i] = pairnumber[inv(i)] = paired_gens; } } pcp->ndgen = paired_gens; reading = (pcp->ndgen > MAXGENS); if (reading) printf("The maximum number of defining generators is %d\n", MAXGENS); if (!isatty(0)) printf("\n"); } } /* read the list of relations (and the exponent) using pretty format */ void pretty_read_relations(int output, int *max_class, struct pcp_vars *pcp) { register int *y = y_address; int ptr, relp, length; int i = 1; char c; int nrels = 0; int count, posn; word w; word_link *root = word_link_create(); word_link *wlp = 0; word_link *next = 0; gen_type g; rfile = stdin; rfileno = fileno(rfile); wfile = stdout; printf("Input defining set of relations (in { }): "); /* read in and store the relations/relators; each relator/relation is stored as a relation (two consecutive words in the list) */ find_char('{', rfile); pc_word_init(&w); wlp = root; while (read_next_word(&w, rfile)) { nrels++; word_link_init(wlp); word2prog_word(&w, wlp->wp); wlp = wlp->next; pc_word_reset(&w); while ((c = read_char(rfile)) == ' ') ; word_link_init(wlp); if (c == '=') { count = 1; if (!isatty(rfileno)) posn = ftell(rfile); /* mark position */ /* pick up the word at the end of the chain of '=''s as the right hand side of the equation */ do { read_next_word(&w, rfile); while ((c = read_char(rfile)) == ' ') ; if (c == '=') { pc_word_reset(&w); count++; } } while (c == '='); ungetc(c, rfile); word2prog_word(&w, wlp->wp); pc_word_reset(&w); if (count > 1) { if (!isatty(rfileno)) fseek(rfile, posn, 0); /* go back to the marker if there was more than one '=' */ else { /* we can't use fseek if we're inputting from stdin */ printf("You may not input relations of the type u = v = w from " "terminal\n"); exit(FAILURE); } } } else ungetc(c, rfile); wlp = wlp->next; } find_char('}', rfile); if (!isatty(0)) printf("\n"); pcp->ndrel = nrels; check_input(output, max_class, pcp); if (!pcp->valid) return; #if defined(GROUP) read_value( TRUE, "Input exponent law (0 if none): ", &pcp->extra_relations, 0); #endif initialise_pcp(output, pcp); setup(pcp); /* next set up each relation in the list, as left hand side followed by right hand side, after expressing each as a power if possible */ wlp = root; ptr = pcp->lused; relp = pcp->relp; while (wlp->wp) { word *wp = wlp->wp; gen_type *gp = wp->g + wp->first; gen_type *ggp = wp->g + wp->last; ptr = pcp->lused + 1; length = 1; while (gp <= ggp) { g = *gp; y[ptr + (++length)] = (g <= inv(g)) ? pairnumber[g] : -pairnumber[g]; gp++; } /* set up exponent */ if (wp->n) y[ptr + 1] = wp->n; else if (length == 1) y[ptr + 1] = 0; /* this deals with the trivial word */ else y[ptr + 1] = 1; /* set up relation length */ if (wp->type == 'c') y[ptr] = -length; else y[ptr] = length; ++relp; y[relp] = ptr; pcp->lused += (length + 1); next = wlp->next; word_link_clear(wlp); wlp = next; } pcp->gspace = pcp->lused + 1; free((char *)wlp); if (user_gen_name) { for (i = 0; i < gen_array_size; ++i) word_clear(user_gen_name + i); free((char *)user_gen_name); user_gen_name = 0; } if (inv_of) { free((char *)inv_of); inv_of = 0; } } anupq-3.3.0/src/read_relations.c000644 000766 000024 00000002570 14355420571 017070 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A read_relations.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" /* read defining relations and store each relation as a word */ void read_relations(struct pcp_vars *pcp) { register int *y = y_address; register int relp = pcp->relp; register int ndrel = pcp->ndrel; register int k, l; register int type; register int length; register int disp = 0; /* read and store side l of defining relation k; each side of a defining relation is stored with its length followed by its exponent followed by the base relator */ for (k = 1; k <= ndrel; ++k) { for (l = 1; l <= 2; ++l) { type = l; ++relp; read_word(stdin, disp, type, pcp); /* note length of relation */ length = abs(y[pcp->lused + disp + 1]); /* an zero exponent signifies a trivial relation */ if (y[pcp->lused + disp + 2] == 0) { y[pcp->lused + disp + 1] = 1; length = 1; } y[relp] = pcp->lused + 1; pcp->lused += length + 1; } } pcp->gspace = pcp->lused + 1; } anupq-3.3.0/src/AllocateSpace.c000644 000766 000024 00000023574 14355420571 016604 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A AllocateSpace.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" /* allocate space for array y */ void Allocate_WorkSpace(int work_space, struct pcp_vars *pcp) { if ((y_address = (int *)malloc((work_space + 1) * sizeof(int))) == (int *)0) { perror("malloc failed in Allocate_WorkSpace ()"); exit(FAILURE); } /* initialise the pcp structure */ pcp->fronty = 1; pcp->backy = work_space; } /* allocate space for a vector, a, of size n, whose subscript commences at position start */ int *allocate_vector(int n, int start, Logical zero) /* start may be 0 or 1 */ { int *a; #ifdef DEBUG printf("allocate vector of size %d\n", n); #endif /* some versions of malloc crash when repeatedly asked to allocate small amounts of space -- in particular, under AIX and Ultrix */ if (n < 4) n = 4; if (zero) { if ((a = (int *)calloc(n, sizeof(int))) == (int *)0) { perror("Call to allocate_vector"); exit(FAILURE); } } else if ((a = (int *)malloc(n * sizeof(int))) == (int *)0) { perror("Call to allocate_vector"); exit(FAILURE); } while (start) { --a; --start; } return a; } /* allocate space for an n x m integer matrix a, whose subscripts start at position 0 or 1 */ int **allocate_matrix(int n, int m, int start, Logical zero) { int **a; int i; #ifdef DEBUG printf("allocate matrix %d x %d\n", n, m); #endif if (n == 0) n = 1; if (m < 4) m = 4; if ((a = (int **)malloc(n * sizeof(int *))) == (int **)0) { perror("Call to allocate_matrix"); exit(FAILURE); } if (start != 0) --a; for (i = start; i < start + n; ++i) { if (zero) { if ((a[i] = (int *)calloc(m, sizeof(int))) == (int *)0) { perror("Call to allocate_matrix"); exit(FAILURE); } } else if ((a[i] = (int *)malloc(m * sizeof(int))) == (int *)0) { perror("Call to allocate_matrix"); exit(FAILURE); } if (start != 0) --a[i]; } return a; } /* allocate space for an n x m x r integer array a, whose subscripts begin at 1, not 0 */ int ***allocate_array(int n, int m, int r, Logical zero) { int ***a; register int i, j; #ifdef DEBUG printf("allocate array %d x %d x %d\n", n, m, r); #endif if (n == 0) n = 1; if (m == 0) m = 1; if (r < 4) r = 4; if ((a = (int ***)malloc(n * sizeof(int **))) == (int ***)0) { perror("Call to allocate_array"); exit(FAILURE); } --a; for (i = 1; i <= n; ++i) { if ((a[i] = (int **)malloc(m * sizeof(int *))) == (int **)0) { perror("Call to allocate_array"); exit(FAILURE); } --a[i]; for (j = 1; j <= m; ++j) { if (zero) { if ((a[i][j] = (int *)calloc(r, sizeof(int))) == (int *)0) { perror("Call to allocate_array"); exit(FAILURE); } } else if ((a[i][j] = (int *)malloc(r * sizeof(int))) == (int *)0) { perror("Call to allocate_array"); exit(FAILURE); } --a[i][j]; } } return a; } /* reallocate space for a vector, a, of size new which was originally of size original */ int *reallocate_vector(int *a, int original, int new, int start, Logical zero) { int j; #ifdef DEBUG printf("reallocate vector\n"); #endif if (original < 4) original = 4; if (start && original != 0) ++a; #ifdef DEBUG printf("In reallocate: original = %d; new = %d\n", original, new); printf("before reallocate: a = %d\n", a); #endif if ((a = (int *)realloc(a, new * sizeof(int))) == (int *)0) { #ifdef DEBUG printf("Original size is %d; new size is %d\n", original, new); #endif perror("Call to reallocate_vector"); exit(FAILURE); } if (start) --a; if (zero) for (j = start + original; j < start + new; ++j) a[j] = 0; #ifdef DEBUG printf("after reallocate: a = %d\n", a); #endif return a; } /* reallocate space for an n x m integer matrix a, whose subscripts begin at 1, not 0; the original sizes are supplied */ int ** reallocate_matrix(int **a, int orig_n, int orig_m, int n, int m, Logical zero) { register int i, j; #ifdef DEBUG printf("reallocate matrix\n"); #endif if (orig_n == 0) orig_n = 1; if (orig_m < 4) orig_m = 4; if ((a = (int **)realloc(++a, n * sizeof(int *))) == (int **)0) { perror("Call to reallocate_matrix"); exit(FAILURE); } --a; for (i = 1; i <= n; ++i) { if (i > orig_n) { if ((a[i] = (int *)malloc(m * sizeof(int))) == (int *)0) { perror("Call to reallocate_matrix"); exit(FAILURE); } } else { if ((a[i] = (int *)realloc(++a[i], m * sizeof(int))) == (int *)0) { perror("Call to reallocate_matrix"); exit(FAILURE); } } --a[i]; } if (zero) { for (i = 1; i <= n; ++i) for (j = 1; j <= m; ++j) if (i > orig_n || j > orig_m) a[i][j] = 0; } return a; } /* reallocate space for an n x m x r integer array a, whose subscripts begin at 1, not 0; the original sizes are supplied */ int ***reallocate_array(int ***a, int orig_n, int orig_m, int orig_r, int n, int m, int r, Logical zero) { register int i, j, k; #ifdef DEBUG printf("reallocate array\n"); #endif if (orig_n == 0) orig_n = 1; if (orig_m == 0) orig_m = 1; if (orig_r < 4) orig_r = 4; if ((a = (int ***)realloc(++a, n * sizeof(int **))) == (int ***)0) { perror("Call to reallocate_array"); exit(FAILURE); } --a; for (i = 1; i <= n; ++i) { if (i > orig_n) { if ((a[i] = (int **)malloc(m * sizeof(int *))) == (int **)0) { perror("Call to reallocate_array"); exit(FAILURE); } } else { if ((a[i] = (int **)realloc(++a[i], m * sizeof(int *))) == (int **)0) { perror("Call to reallocate_array"); exit(FAILURE); } } --a[i]; for (j = 1; j <= m; ++j) { if (j > orig_m || i > orig_n) { if ((a[i][j] = (int *)malloc(r * sizeof(int))) == (int *)0) { perror("Call to allocate_array"); exit(FAILURE); } } else { if ((a[i][j] = (int *)realloc(++a[i][j], r * sizeof(int))) == (int *)0) { perror("Call to allocate_array"); exit(FAILURE); } } --a[i][j]; } } if (zero) { for (i = 1; i <= n; ++i) for (j = 1; j <= m; ++j) for (k = 1; k <= r; ++k) if (i > orig_n || j > orig_m || k > orig_r) a[i][j][k] = 0; } return a; } /* allocate space for a character vector, a, of size n, whose subscript commences at position start */ char *allocate_char_vector(int n, int start, Logical zero) { char *a; #ifdef DEBUG printf("allocate char vector\n"); #endif if (n < 4) n = 4; if (zero) { if ((a = (char *)calloc(n, sizeof(char))) == (char *)0) { perror("Call to allocate_char_vector"); exit(FAILURE); } } else if ((a = (char *)malloc(n * sizeof(char))) == (char *)0) { perror("Call to allocate_char_vector"); exit(FAILURE); } while (start) { --a; --start; } return a; } /* allocate space for an n x m character matrix a, whose subscripts start at position 0 or 1 */ char **allocate_char_matrix(int n, int m, int start, Logical zero) { char **a; int i; #ifdef DEBUG printf("allocate char matrix\n"); #endif if (n == 0) n = 1; if (m < 4) m = 4; if ((a = (char **)malloc(n * sizeof(char *))) == (char **)0) { perror("Call to allocate_matrix"); exit(FAILURE); } if (start != 0) --a; for (i = start; i < start + n; ++i) { if (zero) { if ((a[i] = (char *)calloc(m, sizeof(char))) == (char *)0) { perror("Call to allocate_matrix"); exit(FAILURE); } } else if ((a[i] = (char *)malloc(m * sizeof(char))) == (char *)0) { perror("Call to allocate_matrix"); exit(FAILURE); } if (start != 0) --a[i]; } return a; } /* allocate space for an n x m x r character array a, whose subscripts begin at 1, not 0 */ char ***allocate_char_array(int n, int m, int r, Logical zero) { char ***a; register int i, j; #ifdef DEBUG printf("allocate char array\n"); #endif if (n == 0) n = 1; if (m == 0) m = 1; if (r < 4) r = 4; if ((a = (char ***)malloc(n * sizeof(char **))) == (char ***)0) { perror("Call to allocate_char_array"); exit(FAILURE); } --a; for (i = 1; i <= n; ++i) { if ((a[i] = (char **)malloc(m * sizeof(char *))) == (char **)0) { perror("Call to allocate_char_array"); exit(FAILURE); } --a[i]; for (j = 1; j <= m; ++j) { if (zero) { if ((a[i][j] = (char *)calloc(r, sizeof(char))) == (char *)0) { perror("Call to allocate_char_array"); exit(FAILURE); } } else { if ((a[i][j] = (char *)malloc(r * sizeof(char))) == (char *)0) { perror("Call to allocate_char_array"); exit(FAILURE); } } --a[i][j]; } } return a; } anupq-3.3.0/src/tails_filter.c000644 000766 000024 00000017765 14355420571 016572 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A tails_filter.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" #include "pq_functions.h" #if defined(TAILS_FILTER) && defined(GROUP) /* look up the definitions of two pcp generator */ int lookup_structure(int generator, int *weight_vector, struct pcp_vars *pcp) { register int *y = y_address; int structure = pcp->structure; int pointer = pcp->lused + 1; int weight; int index; int i; #include "access.h" weight = WT(y[structure + generator]); for (i = 1; i <= weight; ++i) y[pointer + i] = 0; find_definition(generator, pointer, weight, pcp); for (i = 1; i <= weight; ++i) { index = y[pointer + i]; ++weight_vector[index]; } } /* add vec1 to vec2 component wise and return sum */ int *add_weights(int *vec1, int *vec2, int length) { int i; int *sum; sum = allocate_vector(length, 1, TRUE); for (i = 1; i <= length; ++i) sum[i] = vec1[i] + vec2[i]; return sum; } /* where maximal occurrence for each generator is set to 1, does any generator occur in definition with weight at least 2? if so, we do not need to compute tail */ Logical mo_filter(int *weight_vector, struct pcp_vars *pcp) { register int *y = y_address; Logical filter; int frattini_rank = y[pcp->clend + 1]; int moccur = pcp->ndgen + pcp->dgen; int i; #ifdef DEBUG printf("Definition array total is "); print_array(weight_vector, 1, y[pcp->clend + 1] + 1); #endif /* is maximal occurrences option set to one for each generator? */ for (i = moccur + 1; i <= moccur + frattini_rank; ++i) if (y[i] != 1) return FALSE; filter = FALSE; /* does any defining generator occur at least 2 times? */ for (i = 1; i <= frattini_rank && !filter; ++i) filter = (weight_vector[i] >= 2); return filter; } Logical exp4_filter(int left, int right, int *weight_vector, struct pcp_vars *pcp) { register int *y = y_address; Logical filter; int frattini_rank = y[pcp->clend + 1]; int structure = pcp->structure; int i; #include "access.h" #ifdef DEBUG printf("Definition array total is "); print_array(weight_vector, 1, y[pcp->clend + 1] + 1); #endif filter = (WT(y[structure + left]) + WT(y[structure + right]) != 5); if (filter == FALSE) return FALSE; filter = FALSE; /* does any defining generator occur at least 4 times? */ for (i = 1; i <= frattini_rank && !filter; ++i) filter = (weight_vector[i] >= 4); return filter; } Logical exp5_filter(int *weight_vector, struct pcp_vars *pcp) { register int *y = y_address; int frattini_rank = y[pcp->clend + 1]; Logical filter; int i; #ifdef DEBUG printf("Definition array total is "); print_array(weight_vector, 1, y[pcp->clend + 1] + 1); #endif filter = FALSE; /* does any defining generator occur at least 7 times? */ for (i = 1; i <= frattini_rank && !filter; ++i) filter = (weight_vector[i] >= 7); return filter; } /* calculate pth powers of class final_class generators which are commutators by doing the appropriate collections */ void calculate_tails(int final_class, struct pcp_vars *pcp) { register int *y = y_address; register int structure = pcp->structure; register int class_end = pcp->clend; register int f; register int start = y[class_end + final_class - 1] + 1; register int end = y[class_end + final_class]; register int s, s1, s2; register int start_class = 1; register int a, b; register int value; register int p1; int **definition; int exponent = pcp->extra_relations; Logical filter = (pcp->nocset || exponent == 4 || exponent == 5); Logical compute; int *weight_vector; int frattini_rank = y[pcp->clend + 1]; int processed, filtered; #include "access.h" if (filter) definition = allocate_matrix(pcp->lastg, frattini_rank + 1, 0, TRUE); if (filter || pcp->fullop || pcp->diagn) printf("Processing tails for generators of weight %d and %d\n", final_class, 1); for (f = start; f <= end; f++) { #ifdef DEBUG printf("Processing generator f = %d, Lused = %d\n", f, pcp->lused); #endif value = y[structure + f]; a = PART3(value); if (a == 0) break; b = PART2(value); /* f is the commutator (b, a); calculate the class current_class part of f^p by collecting (b^p) a = b^(p-1) (ba); by formal collection, we see that the class current_class part of f^p is obtained by subtracting (modulo p) the rhs of the above equation from the lhs */ jacobi(b, b, a, pcp->ppower + f, pcp); if (pcp->overflow) return; } /* calculate the non left-normed commutators of class work_class in the order (work_class - 2, 2), (work_class - 3, 3) .. */ class_end = pcp->clend; while (--final_class >= ++start_class) { processed = 0; filtered = 0; if (filter || pcp->fullop || pcp->diagn) printf("Processing tails for generators of weight %d and %d\n", final_class, start_class); start = y[class_end + final_class - 1] + 1; end = y[class_end + final_class]; s1 = y[class_end + start_class - 1] + 1; for (f = start; f <= end; f++) { #ifdef DEBUG printf("Processing generator f = %d, Lused = %d\n", f, pcp->lused); #endif if (filter) { if (definition[f][0] == FALSE) { lookup_structure(f, definition[f], pcp); definition[f][0] = TRUE; } } s2 = MIN(f - 1, y[class_end + start_class]); if (s2 - s1 < 0) continue; p1 = y[pcp->ppcomm + f]; for (s = s1; s <= s2; s++) { /* insert the class current_class part on (f, s) */ value = y[structure + s]; b = PART2(value); a = PART3(value); if (a == 0) a = b; else if (pcp->metabelian && PART3(y[structure + f]) != 0) continue; /* s = (b, a); calculate the class current_class part of (f, (b, a)) by collecting (fb) a = f (ba) or the class current_class part of (f, (b^p)) by collecting (fb) b^(p - 1) = f (b^p); since we require only the class current_class part - the rest has been computed earlier - we calculate it by subtracting (modulo p) the rhs of the above equation from the lhs (proof by formal collection) */ if (filter) { if (definition[s][0] == FALSE) { lookup_structure(s, definition[s], pcp); definition[s][0] = TRUE; } weight_vector = add_weights(definition[f], definition[s], y[pcp->clend + 1]); free_vector(weight_vector, 1); if (pcp->nocset) compute = (mo_filter(weight_vector, pcp) == FALSE); else if (exponent == 4) compute = (exp4_filter(f, s, weight_vector, pcp) == FALSE); else if (exponent == 5) compute = (exp5_filter(weight_vector, pcp) == FALSE); else compute = TRUE; if (compute) { jacobi(f, b, a, p1 + s, pcp); ++processed; } else ++filtered; } else jacobi(f, b, a, p1 + s, pcp); if (pcp->overflow) return; } } if (filter) { printf("Number evaluated = %d, Number filtered = %d\n", processed, filtered); } } if (filter) free_matrix(definition, pcp->lastg, 0); } #endif anupq-3.3.0/src/check_exponent.c000644 000766 000024 00000002365 14355420571 017074 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A check_exponent.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" #include "pq_functions.h" #include "exp_vars.h" /* determine whether trial value is upper bound on exponent of the group; do this by checking that all test words are trivial */ Logical check_exponent(int trial_exponent, struct exp_vars *exp_flag, struct pcp_vars *pcp) { int known_exponent; initialise_exponent(exp_flag, pcp); exp_flag->check_exponent = TRUE; exp_flag->all_trivial = TRUE; known_exponent = pcp->extra_relations; if (known_exponent) return known_exponent == trial_exponent; pcp->extra_relations = trial_exponent; /* now generate and power all test words */ extra_relations(exp_flag, pcp); /* restore existing exponent law */ pcp->extra_relations = known_exponent; /* if trivial flag is true, we have (upper bound on) exponent */ return exp_flag->all_trivial; } anupq-3.3.0/src/is_genlim_exceeded.c000644 000766 000024 00000001635 14355420571 017672 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A is_genlim_exceeded.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" /* test that the total number of occurrences of each defining generator in the structure of a pcp-generator about to be introduced in tails does not exceed some maximum set up in option */ Logical is_genlim_exceeded(struct pcp_vars *pcp) { register int *y = y_address; register int i, j; register int moccur; register int toccur; moccur = pcp->dgen + pcp->ndgen; toccur = pcp->lused + pcp->cc; for (i = pcp->ndgen; i > 0; i--) if ((j = y[moccur + i]) > 0 && y[toccur + i] > j) return FALSE; return TRUE; } anupq-3.3.0/src/orbit_summary.c000644 000766 000024 00000001366 14355420571 016773 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A orbit_summary.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pga_vars.h" /* print a summary of the orbits, listing their lengths and their representatives */ void orbit_summary(int *length, struct pga_vars *pga) { register int i; printf("\n Orbit Length Representative\n"); for (i = 1; i <= pga->nmr_orbits; ++i) printf("%7d %15d %15d\n", i, length[i], pga->rep[i]); printf("\nNumber of orbits is %d\n", pga->nmr_orbits); } anupq-3.3.0/src/text.c000644 000766 000024 00000005044 14355420571 015060 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A text.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" /* print an informational or error message */ void text(int message, int arg1, int arg2, int arg3, int arg4) { char *s, *t; switch (message) { case 1: PRINT("Defining relation was %d\n", arg1); return; case 2: PRINT("Compact workspace: Lused = %d, Structure = %d\n", arg1, arg2); return; case 3: PRINT("Generator %d is trivial\n", arg1); return; case 4: PRINT("Generator %d is redundant\n", arg1); return; case 5: #if defined(GROUP) PRINT("\nGroup completed."); #endif PRINT(" Lower exponent-%d central class = %d,", arg2, arg1); PRINT(" Order = %d^%d\n", arg2, arg3); return; case 6: PRINT("Relation not homogeneous of class %d.", arg1); PRINT(" Relation ignored.\n"); return; case 7: PRINT("%d-quotient is trivial\n", arg1); return; case 8: PRINT("%d-quotient is cyclic\n", arg1); return; case 9: PRINT("Jacobi was "); PRINT("%d %d %d\n", arg1, arg2, arg3); return; case 10: PRINT("Invalid Last Class call - option may be used only once\n"); return; case 11: PRINT("Ran out of space during computation\n"); PRINT("Number of generators in last class is %d\n", arg1); return; case 12: PRINT("\nRank of %d-multiplicator is %d\n", arg1, arg2); return; case 13: PRINT("%d ", arg1); s = (arg1 == 1) ? "" : "s"; t = (arg3 == TRUE) ? "collected" : "will be collected"; PRINT("relation%s of class %d %s\n", s, arg2, t); return; case 14: PRINT("Inappropriate value for exponent parameter: %d\n", arg1); return; case 15: PRINT("Class bound of %d taken\n", arg1); return; case 16: PRINT("Validity error. Results may be incorrect\n"); return; case 17: PRINT("The number of defining generators must be less than %d\n", arg1); return; case 18: PRINT("A relation is too long -- increase the value of MAXWORD "); PRINT("in constants.h\nand recompile pq\n"); return; case 19: PRINT("Evaluation in compute_degree may cause integer overflow\n"); return; default: PRINT("Bad message number %d", message); } } anupq-3.3.0/src/interactive_pq.c000644 000766 000024 00000052436 14355420571 017120 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A interactive_pq.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "exp_vars.h" #include "constants.h" #include "menus.h" #include "pq_functions.h" #include "pretty_filterfns.h" #include "word_types.h" #include "global.h" #define MAXOPTION 31 /* maximum number of menu options */ #define GAP_PRES_FORMAT 2 #define BOTH_TAILS 0 #define NEW_TAILS 1 #define COMPUTE_TAILS 2 #if defined(GROUP) /* interactive menu for p-quotient calculation */ void interactive_pq(Logical group_present, int format, int output_level, int **head, int **list, struct pcp_vars *pcp) { register int *y = y_address; int option, t, class; register int cp; Logical print_flag; int type; int i; int factor, limit; int ***auts; char *s; char *name; FILE *FileName; int *queue, *long_queue; int start_length = 0; int prev_qlength = 0, current_qlength; int long_queue_length = 0, queue_length = 0; int consistency_type; int nmr_of_auts; int nmr_of_exponents; int tail_type; int start_gen, final_gen; Logical queue_setup = FALSE; /* redundancy queue set up? */ Logical echelon_ready = FALSE; /* ready to echelonise? */ Logical output; /* temporarily store value of pcp->fullop */ struct exp_vars exp_flag; Logical symbols_setup = FALSE; int file_format; if (isatty(0)) list_interactive_pq_menu(); if (format != BASIC && group_present == TRUE) { setup_symbols(pcp); symbols_setup = TRUE; } do { option = read_option(MAXOPTION); switch (option) { case -1: list_interactive_pq_menu(); break; case COLLECT: t = runTime(); if (format != BASIC && symbols_setup == FALSE) { setup_symbols(pcp); symbols_setup = TRUE; } type = WORD; if (!is_space_exhausted(3 * pcp->lastg + 2, pcp)) { cp = pcp->lused; setup_word_to_collect(stdin, format, type, cp, pcp); t = runTime() - t; printf("Collection took %.2f seconds\n", t * CLK_SCALE); echelon_ready = TRUE; } break; case SOLVE: t = runTime(); if (format != BASIC && symbols_setup == FALSE) { setup_symbols(pcp); symbols_setup = TRUE; } setup_to_solve_equation(format, pcp); t = runTime() - t; printf("Solving the equation took %.2f seconds\n", t * CLK_SCALE); break; case COMMUTATOR: t = runTime(); if (format != BASIC && symbols_setup == FALSE) { setup_symbols(pcp); symbols_setup = TRUE; } calculate_commutator(format, pcp); cp = pcp->lused; echelon_ready = TRUE; t = runTime() - t; printf("Commutator calculation took %.2f seconds\n", t * CLK_SCALE); break; case DISPLAY_PRESENTATION: print_flag = (output_level >= MAX_PRINT - 1) ? TRUE : FALSE; print_presentation(print_flag, pcp); break; case PRINT_LEVEL: print_level(&output_level, pcp); break; case SETUP: if (pcp->complete) { printf("Group is complete\n"); break; } setup(pcp); pcp->update = FALSE; pcp->middle_of_tails = FALSE; printf("Setup performed for class %d\n", pcp->cc); break; case TAILS: t = runTime(); if (pcp->complete) { printf("Group is complete\n"); break; } pcp->middle_of_tails = FALSE; read_value(TRUE, "Input class for tails computation (0 for all): ", &class, -9999); /* by negative class we mean that we want to extend the lower central series up to -class, by adding p-powers. Variable i is hijacked. */ if (class < 0) { i = class; class = 0; } else { i = 1; } tail_info(&tail_type); if (class == 0 || (class > 1 && class <= pcp->cc)) { if (class > 0) { tails(tail_type, class, pcp->cc, i, pcp); if (class != 2) pcp->middle_of_tails = TRUE; } else { /* variable end_weight is never used. We hijack it to pass the l.c.s. desired depth. */ for (class = pcp->cc; class > 1; --class) tails(tail_type, class, pcp->cc, i, pcp); } if (pcp->overflow && !isatty(0)) exit(FAILURE); t = runTime() - t; printf("Tails computation took %.2f seconds \n", t * CLK_SCALE); } else printf("Class %d is invalid for tails calculations\n", class); break; case CONSISTENCY: t = runTime(); if (pcp->complete) { printf("Group is complete\n"); break; } read_value(TRUE, "Input class for consistency check (0 for all): ", &class, 0); consistency_info(&consistency_type); if (class == 0 || (class > 2 && class <= pcp->cc)) { if (pcp->m != 0) { queue_setup = TRUE; start_length = queue_length; queue_space( &queue, &long_queue, ¤t_qlength, &prev_qlength, pcp); } if (class > 0) consistency(consistency_type, queue, &queue_length, class, pcp); else for (class = pcp->cc; class > 2; --class) consistency( consistency_type, queue, &queue_length, class, pcp); if (pcp->overflow && !isatty(0)) exit(FAILURE); if (pcp->m != 0) { s = (queue_length - start_length == 1) ? "y" : "ies"; printf("Consistency checks gave %d redundanc%s\n", queue_length - start_length, s); } if (pcp->complete && output_level <= 1) text(5, pcp->cc, pcp->p, pcp->lastg, 0); t = runTime() - t; printf("Consistency checks took %.2f seconds\n", t * CLK_SCALE); } else printf("Class %d is invalid for consistency checks\n", class); break; case RELATIONS: t = runTime(); if (pcp->complete) { printf("Group is complete\n"); break; } /* if no tails have been added, do not perform update */ if (y[pcp->clend + pcp->cc - 1] < pcp->lastg) { if (!pcp->complete && pcp->cc > 1 && !pcp->middle_of_tails && !pcp->update) { update_generators(pcp); pcp->update = TRUE; } if (!pcp->complete) collect_relations(pcp); } if (pcp->complete && output_level <= 1) text(5, pcp->cc, pcp->p, pcp->lastg, 0); t = runTime() - t; printf("Collection of relations took %.2f seconds\n", t * CLK_SCALE); break; case EXTRA_RELATIONS: t = runTime(); if (pcp->complete) { printf("Group is complete\n"); break; } if (pcp->extra_relations == 0) { read_value(TRUE, "Input exponent law (0 if none): ", &pcp->extra_relations, 0); } read_value(TRUE, "Input start weight for exponent checking: ", &pcp->start_wt, 1); read_value(TRUE, "Input end weight for exponent checking: ", &pcp->end_wt, pcp->start_wt); exponent_info(&exp_flag, pcp); if (pcp->m != 0) { queue_setup = TRUE; start_length = queue_length; queue_space( &queue, &long_queue, ¤t_qlength, &prev_qlength, pcp); exp_flag.queue = queue; exp_flag.queue_length = queue_length; } extra_relations(&exp_flag, pcp); if (pcp->m != 0) { queue = exp_flag.queue; queue_length = exp_flag.queue_length; s = (queue_length - start_length == 1) ? "y" : "ies"; printf("Exponent checks gave %d redundanc%s\n", queue_length - start_length, s); } if (pcp->complete && output_level <= 1) text(5, pcp->cc, pcp->p, pcp->lastg, 0); t = runTime() - t; printf("Time to check exponents is %.2f seconds\n", t * CLK_SCALE); break; case ELIMINATE: t = runTime(); symbols_setup = FALSE; if (pcp->cc == 1) class1_eliminate(pcp); else { /* if no tails have been added, do not perform update */ if (y[pcp->clend + pcp->cc - 1] < pcp->lastg) { if (pcp->cc > 1 && !pcp->middle_of_tails && !pcp->update) { update_generators(pcp); pcp->update = TRUE; } eliminate(pcp->middle_of_tails, pcp); queue_length = 0; long_queue_length = 0; } } t = runTime() - t; printf("Elimination took %.2f seconds\n", t * CLK_SCALE); break; case LAST_CLASS: last_class(pcp); break; case MAXOCCUR: set_maxoccur(pcp); break; case METABELIAN: pcp->metabelian = TRUE; break; case JACOBI: calculate_jacobi(pcp); if (pcp->redgen != 0 && pcp->m != 0) { queue_setup = TRUE; if (prev_qlength == 0) queue_space( &queue, &long_queue, ¤t_qlength, &prev_qlength, pcp); queue[++queue_length] = pcp->redgen; } break; case ECHELON: if (echelon_ready) { for (i = 1; i <= pcp->lastg; ++i) y[cp + pcp->lastg + i] = 0; output = pcp->fullop; pcp->fullop = TRUE; echelon(pcp); pcp->fullop = output; if (pcp->redgen != 0 && pcp->m != 0) { queue_setup = TRUE; if (prev_qlength == 0) queue_space(&queue, &long_queue, ¤t_qlength, &prev_qlength, pcp); queue[++queue_length] = pcp->redgen; } echelon_ready = FALSE; } else printf("No relation to echelonise; first collect or commute\n"); break; case AUTS: t = runTime(); if (pcp->m == 0) { auts = read_auts(PQ, &pcp->m, &nmr_of_exponents, pcp); Setup_Action(head, list, auts, nmr_of_exponents, pcp); } Extend_Auts(head, list, y[pcp->clend + 1] + 1, pcp); #ifdef DEBUG read_value(TRUE, "Input start generator: ", &start_gen, 1); read_value(TRUE, "Input final generator: ", &final_gen, start_gen); List_Auts(*head, *list, start_gen, final_gen, pcp); /* print_array (*head, 0, (*head)[0] + 2); */ #endif queue_setup = TRUE; queue_space(&queue, &long_queue, ¤t_qlength, &prev_qlength, pcp); t = runTime() - t; printf("Extension of automorphisms took %.2f seconds\n", t * CLK_SCALE); break; case CLOSE_RELATIONS: t = runTime(); s = (queue_length == 1) ? "y" : "ies"; printf("The queue currently contains %d entr%s\n", queue_length, s); /* print_array (queue, 1, queue_length + 1); */ read_value(TRUE, "Input queue factor: ", &factor, 0); limit = factor * (pcp->lastg - pcp->ccbeg + 1) / 100; if (!pcp->complete) { close_relations(TRUE, limit, 1, *head, *list, queue, queue_length, long_queue, &long_queue_length, pcp); } if (!pcp->complete && !pcp->overflow) { if (pcp->fullop || pcp->diagn) printf("Length of long queue after short queue closed is %d\n", long_queue_length); close_relations(TRUE, limit, 2, *head, *list, long_queue, long_queue_length, long_queue, &long_queue_length, pcp); if (pcp->fullop || pcp->diagn) { printf("Final long queue length was %d\n", long_queue_length); } } if (pcp->complete && output_level <= 1) text(5, pcp->cc, pcp->p, pcp->lastg, 0); queue_length = long_queue_length = 0; t = runTime() - t; printf("Closing relations took %.2f seconds\n", t * CLK_SCALE); break; case STRUCTURE: read_value( TRUE, "Input initial pcp generator number: ", &start_gen, 1); if (start_gen <= pcp->lastg) { read_value(TRUE, "Input final pcp generator number: ", &final_gen, start_gen); print_structure(start_gen, MIN(final_gen, pcp->lastg), pcp); } else printf("Invalid range supplied for pcp generator numbers\n"); break; case ENGEL: t = runTime(); queue_setup = TRUE; queue_space(&queue, &long_queue, ¤t_qlength, &prev_qlength, pcp); list_commutators(queue, &queue_length, pcp); /* List_Commutators (queue, &queue_length, pcp); */ t = runTime() - t; printf( "Evaluation of Engel [y, (p - 1)x] identity took %.2f seconds\n", t * CLK_SCALE); break; case LIST_AUTOMORPHISMS: read_value(TRUE, "Input start generator: ", &start_gen, 1); read_value(TRUE, "Input final generator: ", &final_gen, start_gen); List_Auts(*head, *list, start_gen, final_gen, pcp); break; break; case RELATIONS_FILE: t = runTime(); if (pcp->m != 0) { queue_setup = TRUE; start_length = queue_length; queue_space( &queue, &long_queue, ¤t_qlength, &prev_qlength, pcp); } read_relator_file(queue, &queue_length, pcp); if (pcp->m != 0) { s = (queue_length - start_length == 1) ? "y" : "ies"; printf("Relation file gave %d redundanc%s\n", queue_length - start_length, s); if (queue_length != 0) print_array(queue, 1, queue_length + 1); } t = runTime() - t; printf("Processing relations file took %.2f seconds\n", t * CLK_SCALE); break; case DGEN_WORD: if (format != BASIC && symbols_setup == FALSE) { setup_symbols(pcp); symbols_setup = TRUE; } type = WORD; if (!is_space_exhausted(3 * pcp->lastg + 2, pcp)) { cp = pcp->lused; setup_defgen_word_to_collect(stdin, format, type, pcp->lused, pcp); echelon_ready = TRUE; } break; case DGEN_COMM: if (format != BASIC && symbols_setup == FALSE) { setup_symbols(pcp); symbols_setup = TRUE; } commute_defining_generators(format, pcp); echelon_ready = TRUE; break; case DGEN_AUT: if (format != BASIC && symbols_setup == FALSE) { setup_symbols(pcp); symbols_setup = TRUE; } auts = determine_action(format, &nmr_of_auts, pcp); break; case COMPACT: compact(pcp); break; case FORMULA: t = runTime(); if (pcp->m != 0) { queue_setup = TRUE; start_length = queue_length; queue_space( &queue, &long_queue, ¤t_qlength, &prev_qlength, pcp); } evaluate_formula(queue, &queue_length, pcp); if (pcp->m != 0) { s = (queue_length - start_length == 1) ? "y" : "ies"; printf("Formula checks gave %d redundanc%s\n", queue_length - start_length, s); if (queue_length != 0) print_array(queue, 1, queue_length + 1); } t = runTime() - t; printf("Formula evaluation took %.2f seconds\n", t * CLK_SCALE); break; case OUTPUT_PRESENTATION: /* TODO: We used to support more output formats, but now only GAP output is supported. As such, the following query is no redundant. We keep it for backward compatibility only. */ name = GetString("Enter output file name: "); read_value(TRUE, "Output file in GAP (2) format? ", &file_format, GAP_PRES_FORMAT); FileName = OpenFile(name, "a+"); if (FileName != NULL) { if (file_format == GAP_PRES_FORMAT) { GAP_presentation(FileName, pcp, 1); printf("Group presentation written in GAP format to file\n"); } else printf("Format must be %d\n", GAP_PRES_FORMAT); } CloseFile(FileName); break; case COMPACT_PRESENTATION: compact_description(TRUE, pcp); printf("Group description written to gps%d^%d\n", pcp->p, pcp->lastg); break; case EXIT: case MAXOPTION: printf("Exiting from interactive p-Quotient menu\n"); break; } /* switch */ } while (option != 0 && option != MAXOPTION); if (queue_setup) { free_vector(queue, 1); free_vector(long_queue, 1); } } /* interactive p-quotient menu */ void list_interactive_pq_menu(void) { printf("\nAdvanced p-Quotient Menu\n"); printf("-------------------------\n"); printf("%d. Do individual collection\n", COLLECT); printf("%d. Solve the equation ax = b for x\n", SOLVE); printf("%d. Calculate commutator\n", COMMUTATOR); printf("%d. Display group presentation\n", DISPLAY_PRESENTATION); printf("%d. Set print level\n", PRINT_LEVEL); printf("%d. Set up tables for next class\n", SETUP); printf("%d. Insert tails for some or all classes\n", TAILS); printf("%d. Check consistency for some or all classes\n", CONSISTENCY); printf("%d. Collect defining relations\n", RELATIONS); printf("%d. Carry out exponent checks\n", EXTRA_RELATIONS); printf("%d. Eliminate redundant generators\n", ELIMINATE); printf("%d. Revert to presentation for previous class\n", LAST_CLASS); printf("%d. Set maximal occurrences for pcp generators\n", MAXOCCUR); printf("%d. Set metabelian flag\n", METABELIAN); printf("%d. Carry out an individual consistency calculation\n", JACOBI); printf("%d. Carry out compaction\n", COMPACT); printf("%d. Carry out echelonisation\n", ECHELON); printf("%d. Supply and/or extend automorphisms\n", AUTS); printf("%d. Close relations under automorphism actions\n", CLOSE_RELATIONS); printf("%d. Print structure of a range of pcp generators\n", STRUCTURE); printf("%d. Display automorphism actions on generators\n", LIST_AUTOMORPHISMS); printf("%d. Collect word in defining generators\n", DGEN_WORD); printf("%d. Compute commutator of defining generators\n", DGEN_COMM); printf("%d. Write presentation to file in GAP format\n", OUTPUT_PRESENTATION); printf("%d. Write compact description of group to file\n", COMPACT_PRESENTATION); printf("%d. Evaluate certain formulae\n", FORMULA); printf("%d. Evaluate action specified on defining generators\n", DGEN_AUT); printf("%d. Evaluate Engel (p - 1)-identity\n", ENGEL); printf("%d. Process contents of relation file\n", RELATIONS_FILE); printf("%d. Exit to basic menu\n", MAXOPTION); } #endif /* set up space for the queues used in exponent checking */ int queue_space(int **queue, int **long_queue, int *current_qlength, int *prev_qlength, struct pcp_vars *pcp) { *current_qlength = pcp->lastg - pcp->ccbeg + 1; if (*prev_qlength == 0) { *queue = allocate_vector(*current_qlength, 1, FALSE); *long_queue = allocate_vector(*current_qlength, 1, FALSE); } else if (*current_qlength != *prev_qlength) { *queue = reallocate_vector(*queue, *prev_qlength, *current_qlength, 1, FALSE); *long_queue = reallocate_vector( *long_queue, *prev_qlength, *current_qlength, 1, FALSE); } *prev_qlength = *current_qlength; return 0; } anupq-3.3.0/src/iteration.c000644 000766 000024 00000007060 14355420571 016072 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A iteration.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "pq_functions.h" #define ITERATION 6 /* this procedure controls each iteration of the generation algorithm; it is called recursively and sets out to construct the immediate descendants of some or all of the groups present on input_file; call_depth is the level of recursion; class_bound, step_sequence, order_bound are set up in iteration_information; subgroup_rank is the rank of the initial segment subgroup; flag is a copy of the basic pga flags */ void iteration(int call_depth, int *step_sequence, int subgroup_rank, struct pga_vars *flag, FILE *input_file, int nmr_of_descendants, int class_bound, int order_bound, struct pga_vars *pga, struct pcp_vars *pcp) { int ***auts; register int group_nmr, first = 1; int next_class = 0; FILE *descendant_file; char name[MAXWORD]; char *s, *t; if (step_sequence != NULL) { pga->step_size = step_sequence[call_depth]; flag->step_size = step_sequence[call_depth]; } CreateName(name, call_depth, pcp); if (call_depth == 1) { first = nmr_of_descendants; if (nmr_of_descendants > 1) { auts = restore_group(FALSE, input_file, nmr_of_descendants - 1, pga, pcp); free_array(auts, pga->m, pcp->lastg, 1); } } descendant_file = OpenFile(name, "w+"); for (group_nmr = first; group_nmr <= nmr_of_descendants; ++group_nmr) next_class += construct(call_depth, flag, ITERATION, descendant_file, input_file, subgroup_rank, order_bound, group_nmr, pga, pcp); if (call_depth != 1) CloseFile(input_file); if (next_class != 0) { RESET(descendant_file); printf("\n**************************************************\n"); s = (next_class == 1) ? "" : "s"; t = (pga->terminal) ? "" : " capable"; printf("%d%s group%s saved on file %s\n", next_class, t, s, name); if ((pcp->newgen == 0 && pcp->cc < class_bound - 1) || (pcp->newgen != 0 && pcp->cc < class_bound)) iteration(call_depth + 1, step_sequence, subgroup_rank, flag, descendant_file, next_class, class_bound, order_bound, pga, pcp); } else CloseFile(descendant_file); } /* set up output file name */ void CreateName(char *name, int call_depth, struct pcp_vars *pcp) { register int i, adjoin; for (i = 0; i <= (int)strlen(pcp->ident) && pcp->ident[i] != ' '; ++i) name[i] = pcp->ident[i]; name[i] = '\0'; strcat(name, "_class"); if (call_depth == 1) adjoin = pcp->cc; else if (pcp->newgen == 0) adjoin = pcp->cc + 2; else adjoin = pcp->cc + 1; sprintf(name + strlen(name), "%d", adjoin); } anupq-3.3.0/src/read_value.c000644 000766 000024 00000004434 14355420571 016205 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A read_value.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" #include "pcp_vars.h" /* function to read line */ void read_line(void) { int c; while ((c = getchar()) != EOF && c != '\n') ; } /* continue to read parameter until its value is at least lower_bound */ void read_value(Logical newline, char *string, int *value, int lower_bound) { char response[MAXWORD]; Logical error; Logical reading = TRUE; int nmr_items; while (reading) { printf("%s", string); nmr_items = scanf("%s", response); verify_read(nmr_items, 1); /* read past any comments */ while (response[0] == COMMENT) { read_line(); nmr_items = scanf("%s", response); verify_read(nmr_items, 1); } if (!isatty(0)) printf("%s ", response); if (!isatty(0) && newline) printf("\n"); *value = string_to_int(response, &error); if (error) printf("Error in input -- must be integer only (but is '%s')\n", response); else if ((reading = (*value < lower_bound))) printf("Error: supplied value must be at least %d\n", lower_bound); } } /* convert string s to integer */ int string_to_int(char *s, Logical *error) { int i, n, sign; *error = FALSE; for (i = 0; isspace(s[i]); i++) /* skip white space */ ; sign = (s[i] == '-') ? -1 : 1; if (s[i] == '+' || s[i] == '-') /* skip sign */ i++; for (n = 0; s[i] != '\0'; i++) { if (isdigit(s[i])) { n = 10 * n + (s[i] - '0'); } else { *error = TRUE; return 0; } } return sign * n; } /* read in string */ char *GetString(char *string) { int nmr_items; char *s = (char *)malloc(MAXIDENT * sizeof(char)); printf("%s", string); nmr_items = scanf("%s", s); verify_read(nmr_items, 1); while (s[0] == COMMENT) { read_line(); nmr_items = scanf("%s", s); verify_read(nmr_items, 1); } if (!isatty(0)) printf("%s\n", s); return s; } anupq-3.3.0/src/consistency_info.c000644 000766 000024 00000001546 14355420571 017453 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A consistency_info.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" #include "pcp_vars.h" #include "exp_vars.h" #include "pq_functions.h" /* read information for consistency checking */ void consistency_info(int *consistency_flag) { Logical reading = TRUE; while (reading) { read_value( TRUE, "Process all consistency relations (0), Type 1, Type 2, or Type 3? ", consistency_flag, 0); reading = (*consistency_flag > 3); if (reading) printf("Supplied value must lie between 0 and 3\n"); } } anupq-3.3.0/src/subgroup_to_label.c000644 000766 000024 00000002102 14355420571 017573 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A subgroup_to_label.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pga_vars.h" /* compute the label for the allowable subgroup having standard matrix S */ int subgroup_to_label(int **S, int K, int *subset, struct pga_vars *pga) /* bit string representation of definition set */ /* definition set */ { register int i, j; register int exp = 0; register int label = 1; register int index = 0; /* first determine the offset */ while (index < pga->nmr_def_sets && pga->list[index] != K) ++index; label += pga->offset[index]; for (i = 0; i < pga->s; ++i) for (j = subset[i] + 1; j < pga->q; ++j) { if (1 << j & K) continue; if (S[i][j] != 0) label += S[i][j] * pga->powers[exp]; ++exp; } return label; } anupq-3.3.0/src/consistency_filter.c000644 000766 000024 00000020245 14355420571 020002 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A consistency_filter.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" #if defined(CONSISTENCY_FILTER) int *add_weights(); /* process those consistency relations of weight wc not already used; the value of type determines the consistency relations processed; if type = 0 then all relations are processed */ void consistency( int type, int *queue, int *queue_length, int wc, struct pcp_vars *pcp) { register int *y = y_address; register int a; register int b; register int c; int **definition; int *copy_vector; int processed, filtered; register int wta; /* weight of a */ register int a_start; /* start of range for a */ register int a_end; /* end of range for a */ register int b_start; register int b_end; register int c_start; register int c_end; register int jacobi_wt = wc; register int bound = jacobi_wt >> 1; register int constant; register int offset; register int entry; register int p1; register int class_end = pcp->clend; register int p_pcomm = pcp->ppcomm; register int p_power = pcp->ppower; register int structure = pcp->structure; register Logical metabelian = pcp->metabelian; register Logical compute; /* is it necessary to compute jacobi? */ register filter = (pcp->nocset); Logical can_filter; int moccur = pcp->ndgen + pcp->dgen; int frattini_rank = y[pcp->clend + 1]; int l; int *weight_vector; #include "access.h" processed = 0; filtered = 0; if (filter) { definition = allocate_matrix(pcp->lastg, frattini_rank + 1, 0, TRUE); } /* process the consistency equations (a^p) a = a (a^p) where 2 * WT(a) + 1 = jacobi_wt */ if (type == 0 || type == 1) { if (MOD(jacobi_wt, 2) != 0) { /* find range of a */ offset = class_end + bound - 1; a_start = y[offset] + 1; a_end = y[++offset]; for (a = a_start; a <= a_end; a++) { compute = (!metabelian || (metabelian && (PART2(y[structure + a]) == 0 || PART3(y[structure + a]) == 0))); if (compute) { jacobi(a, a, a, 0, pcp); if (pcp->redgen != 0 && pcp->m != 0) queue[++*queue_length] = pcp->redgen; } if (pcp->overflow || (pcp->complete != 0 && !pcp->multiplicator)) return; } } } /* process the consistency equations (b^p) a = b^(p - 1) (ba) and b (a^p) = (ba) a^(p - 1) where b > a and WT(b) + WT(a) + 1 = jacobi_wt */ if (type == 0 || type == 2) { for (wta = 1; wta <= bound; ++wta) { /* find range of a */ offset = class_end + wta - 1; a_start = y[offset] + 1; a_end = y[++offset]; /* find maximum value of b */ offset = class_end + jacobi_wt - wta - 2; b_end = y[offset + 1]; for (a = a_start; a <= a_end; ++a) { /* ensure b > a */ b_start = MAX(y[offset] + 1, a + 1); for (b = b_start; b <= b_end; ++b) { /* introduce Vaughan-Lee consistency check restriction */ if (wta == 1) { /* check if this jacobi relation has already been used in filling in the tail on (b, a)^p */ p1 = y[p_pcomm + b]; if (y[p1 + a] <= 0 || y[p1 + a] >= pcp->first_pseudo) { compute = (!metabelian || (metabelian && (PART2(y[structure + b]) == 0 || PART3(y[structure + b]) == 0))); if (compute) { jacobi(b, b, a, 0, pcp); if (pcp->redgen != 0 && pcp->m != 0) queue[++*queue_length] = pcp->redgen; } if (pcp->overflow || pcp->complete && !pcp->multiplicator) return; } } /* check if this jacobi relation has already been used in filling in the tail on (b, a^p) */ entry = y[p_power + a]; if (entry <= 0 || entry >= b) { compute = (!metabelian || (metabelian && (PART2(y[structure + a]) == 0 || PART3(y[structure + a]) == 0 || PART2(y[structure + b]) == 0 || PART3(y[structure + b]) == 0))); if (compute) { jacobi(b, a, a, 0, pcp); if (pcp->redgen != 0 && pcp->m != 0) queue[++*queue_length] = pcp->redgen; } if (pcp->overflow || (pcp->complete != 0 && !pcp->multiplicator)) return; } } } } } /* process the consistency equations (cb) a = c (ba), where c > b > a, WT(a) + WT(b) + WT(c) = jacobi_wt, and WT(a) = 1 */ if (type == 0 || type == 3) { /* first, find maximum values of a and b */ a_end = y[class_end + 1]; b_end = y[class_end + ((jacobi_wt - 1) >> 1)]; constant = class_end + jacobi_wt - 2; for (a = 1; a <= a_end; ++a) { if (filter) { if (definition[a][0] == FALSE) { lookup_structure(a, definition[a], pcp); definition[a][0] = TRUE; } } for (b = a + 1; b <= b_end; ++b) { if (filter) { if (definition[b][0] == FALSE) { lookup_structure(b, definition[b], pcp); definition[b][0] = TRUE; } } /* find range of c and ensure c > b */ offset = constant - WT(y[structure + b]); c_start = MAX(y[offset] + 1, b + 1); c_end = y[++offset]; /* where possible, avoid redoing those jacobis used to fill in tails on (c, (b, a)) */ if (!metabelian) { p1 = y[p_pcomm + b]; if (y[p1 + a] > 0) c_end = MIN(c_end, y[p1 + a]); } for (c = c_start; c <= c_end; ++c) { can_filter = FALSE; if (filter) { if (definition[c][0] == FALSE) { lookup_structure(c, definition[c], pcp); definition[c][0] = TRUE; } weight_vector = add_weights( definition[a], definition[b], y[pcp->clend + 1]); weight_vector = add_weights( weight_vector, definition[c], y[pcp->clend + 1]); for (l = 1; l <= frattini_rank && !can_filter; ++l) can_filter = (weight_vector[l] > y[moccur + l]); } if (can_filter) ++filtered; compute = (!metabelian || (metabelian && (PART2(y[structure + b]) == 0 || PART3(y[structure + b]) == 0 || PART2(y[structure + c]) == 0 || PART3(y[structure + c]) == 0))); /* only evaluate if we must */ if (compute && can_filter == FALSE) { ++processed; jacobi(c, b, a, 0, pcp); if (pcp->redgen != 0 && pcp->m != 0) queue[++*queue_length] = pcp->redgen; } if (pcp->overflow || (pcp->complete != 0 && !pcp->multiplicator)) return; } } } } if (filter) { printf( "Number evaluated = %d, Number filtered = %d\n", processed, filtered); free_matrix(definition, pcp->lastg, 0); } } #endif anupq-3.3.0/src/compact.c000644 000766 000024 00000002670 14355420571 015524 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A compact.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" /* compact the group tables from pcp->gspace onwards */ void compact(struct pcp_vars *pcp) { register int *y = y_address; register int i; register int j; register int p1; register int new_address; register int bound; new_address = pcp->gspace - 1; i = pcp->gspace; #ifndef DEBUG if (pcp->fullop || pcp->diagn) #endif text(2, pcp->lused, pcp->structure, 0, 0); while (i < pcp->lused) { /* the next block is currently allocated */ if (y[i] > 0) { p1 = y[i]; ++new_address; y[p1] = -new_address; y[new_address] = y[i]; bound = y[i + 1] + 1; for (j = 1; j <= bound; ++j) y[++new_address] = y[++i]; ++i; } else if (y[i] == 0) /* this block is currently deallocated */ i += y[i + 1] + 2; else /* this block consists only of the header block of length 1 */ ++i; } pcp->lused = new_address; #ifndef DEBUG if (pcp->fullop || pcp->diagn) #endif PRINT("After compaction Lused = %d\n", pcp->lused); return; } anupq-3.3.0/src/print_presentation.c000644 000766 000024 00000010141 14355420571 020015 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A print_presentation.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" /* print relationship between group defining generators and consistent power-commutator presentation generators */ void print_map(struct pcp_vars *pcp) { register int *y = y_address; int ndgen = pcp->ndgen; int dgen = pcp->dgen; int p2; int i; #if defined(GROUP) printf("\nRelationship between group defining generators and "); printf("consistent\npower-commutator presentation generators:\n"); #endif for (i = 1; i <= ndgen; i++) { p2 = y[dgen + i]; printf("%d", i); printf(" "); printf(" ="); print_word(p2, pcp); p2 = y[dgen - i]; if (p2 <= 0) { printf("%d", i); printf("^-1 ="); print_word(p2, pcp); } } } /* print the pcp presentation of the group; if full output, print non-trivial power and commutator relations; if diagnostic output, also print relationship and structure information */ void print_presentation(Logical full, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int k; register int l; register int length; register int relp = pcp->relp; register int ndrel = pcp->ndrel; register int gen, pointer; Logical commutator_relation; char *s; #if defined(GROUP) printf("\nGroup: %s to lower exponent-%d central class %d has order %d^%d\n", pcp->ident, pcp->p, pcp->cc, pcp->p, pcp->lastg); #endif if (!full) return; if (pcp->diagn) { /* print out the defining relations of the group */ #if defined(GROUP) s = "Group"; #endif if (pcp->ndrel != 0) printf("\n%s defining relations:\n", s); for (k = 1; k <= ndrel; ++k) { for (l = 1; l <= 2; ++l) { i = (k - 1) * 2 + l; pointer = y[relp + i]; commutator_relation = (y[pointer] < 0); length = abs(y[pointer]); if (length == 0) printf("0"); else printf("%d", y[pointer + 1]); if (commutator_relation) printf(" ["); for (i = 2; i <= length; ++i) { gen = y[pointer + i]; printf(" %d", gen); } if (commutator_relation) printf(" ]"); printf("\n"); } printf("\n"); } /* print map from defining generators to pcp generators */ print_map(pcp); #if defined(GROUP) printf("\nValues of power-commutator presentation generators\n"); #endif print_structure(1, pcp->lastg, pcp); } if (pcp->cc != 1) print_pcp_relations(pcp); } /* print out non-trivial pcp relations */ void print_pcp_relations(struct pcp_vars *pcp) { register int *y = y_address; register int i; register int j; register int k; register int l; register int p1; register int p2; register int weight; #include "access.h" k = y[pcp->clend + pcp->cc - 1]; /* int start, finish; printf ("input start, finish: "); scanf ("%d %d", &start, &finish); */ #if defined(GROUP) printf("\nNon-trivial powers:\n"); /* for (i = start; i <= finish; i++) { */ for (i = 1; i <= k; i++) { p2 = y[pcp->ppower + i]; if (p2 != 0) { printf(" .%d^%d =", i, pcp->p); print_word(p2, pcp); } } printf("\nNon-trivial commutators:\n"); #endif /* for (i = start; i <= finish; i++) { */ for (i = 2; i <= k; i++) { weight = WT(y[pcp->structure + i]); p1 = y[pcp->ppcomm + i]; l = MIN(i - 1, y[pcp->clend + pcp->cc - weight]); for (j = 1; j <= l; j++) { p2 = y[p1 + j]; if (p2 != 0) { printf("[ .%d, .%d ] =", i, j); print_word(p2, pcp); } } } } anupq-3.3.0/src/restore_group.c000644 000766 000024 00000002033 14355420571 016766 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A restore_group.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "pq_functions.h" /* restore the pcp description of group group_number and its pga structure from input_file */ int ***restore_group(Logical rewind_flag, FILE *input_file, int group_number, struct pga_vars *pga, struct pcp_vars *pcp) { int ***auts = 0; while (group_number > 0) { restore_pcp(input_file, pcp); auts = restore_pga(input_file, pga, pcp); --group_number; if (group_number > 0) free_array(auts, pga->m, pcp->lastg, 1); } if (rewind_flag) RESET(input_file); return auts; } anupq-3.3.0/src/int_power.c000644 000766 000024 00000001054 14355420571 016077 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A int_power.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ /* return the power, x^n */ int int_power(int x, int n) { register int result = 1; while (n != 0) { if (n % 2 == 1) result *= x; if (n > 1) x *= x; n = n >> 1; } return result; } anupq-3.3.0/src/tails.c000644 000766 000024 00000026111 14355420571 015206 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A tails.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" #define BOTH_TAILS 0 #define NEW_TAILS 1 #define COMPUTE_TAILS 2 /* introduce tails for the class work_class part of class pcp->cc */ /* end_weight is never used, and always equal to 1. We hijack it as follows: if end_weight<0, then we actually want to compute the lower central series up to class -end_weight, by adding p-powers but not commutators as tails. */ void tails(int type, int work_class, int start_weight, int end_weight, struct pcp_vars *pcp) { register int *y = y_address; register int structure = pcp->structure; register int class_end = pcp->clend; register int lastg = pcp->lastg; register int current_class = pcp->cc; register int nmr_at_start = pcp->lastg; register int final_class = work_class - 1; register int start = y[class_end + final_class - 1] + 1; register int end = y[class_end + final_class]; register int f, ff; register int s, bound; register int value; register int p1; Logical equal = FALSE; #include "access.h" /* recover desired l.c.s. class */ int lcs_class; int lcs_degree[end+1]; if (end_weight < 0) { int gen; lcs_class = -end_weight; end_weight = 1; /* compute lcs degrees of generators */ for (gen = 1; gen <= end; gen++) { int pointer = y[pcp->structure+gen]; if (pointer <= 0) lcs_degree[gen] = 0; /* pointer<=0 means a redundant generator. Ignore */ else { int u = PART2(pointer), v = PART3(pointer); if (u == 0) /* generator */ lcs_degree[gen] = 1; else if (v == 0) /* power relation */ lcs_degree[gen] = lcs_degree[u]; else /* commutator relation */ lcs_degree[gen] = lcs_degree[u] + lcs_degree[v]; } } } else lcs_class = 0; if (pcp->complete != 0 && !pcp->multiplicator) return; if (type == NEW_TAILS || type == BOTH_TAILS) { /* first, introduce left-normed commutators of class work_class as generators or pseudo-generators */ for (f = start; f <= end; f++) { /* we're about to add a tail for (f,s) with s a generator. We only accept f less than the desired class */ if (lcs_class && lcs_degree[f]>=lcs_class) continue; bound = MIN(f - 1, y[class_end + 1]); if (bound > 0) { p1 = y[pcp->ppcomm + f]; for (s = 1; s <= bound; s++) { value = y[p1 + s]; if (value == 0) /* we are inserting generators or pseudo-generators with old entry trivial; if we are inserting pseudo-generators we do not insert one if (f, s) is defining */ create_tail(p1 + s, f, s, pcp); else if (value < 0) /* old entry was non-trivial so we deallocate it and insert pseudo-generator */ extend_tail(p1 + s, f, s, pcp); if (pcp->overflow) return; lastg = pcp->lastg; } } } #if defined(GROUP) #ifndef EXPONENT_P /* now, introduce pth powers of final_class generators which are pth powers or correspond to defining generators */ if (final_class == 1) ff = 1; else { ff = end; while (PART3(y[structure + ff]) == 0 && --ff >= start) ; if (ff != end) ++ff; else equal = TRUE; } if (!equal) { for (f = ff; f <= end; f++) { /* f is a pth power or corresponds to a defining generator; if we are inserting pseudo-generators, we do not insert one if f^p is defining */ value = y[pcp->ppower + f]; if (value == 0) /* we are inserting generators or pseudo-generators with old entry trivial */ create_tail(pcp->ppower + f, f, 0, pcp); else if (value < 0) /* old entry was non-trivial so we deallocate it and insert pseudo-generator */ extend_tail(pcp->ppower + f, f, 0, pcp); if (pcp->overflow) return; lastg = pcp->lastg; } } #endif #endif } if (type == COMPUTE_TAILS || type == BOTH_TAILS) { /* calculate pth powers of class final_class generators which are commutators by doing the appropriate collections */ if (final_class != 1) calculate_tails(final_class, pcp); if (pcp->overflow) return; } pcp->submlg = pcp->subgrp - lastg; if (work_class == current_class) { /* note first pseudo-generator and number of actual generators */ pcp->first_pseudo = lastg + 1; pcp->newgen = pcp->first_pseudo - pcp->ccbeg; } /* report on the number of new generators added */ if ((pcp->fullop || pcp->diagn) && type != COMPUTE_TAILS) printf("The number of new generators introduced for weight %d is %d\n", work_class, pcp->lastg - nmr_at_start); } #if !defined(TAILS_FILTER) /* calculate pth powers of class final_class generators which are commutators by doing the appropriate collections */ void calculate_tails(int final_class, struct pcp_vars *pcp) { register int *y = y_address; register int structure = pcp->structure; register int class_end = pcp->clend; register int f; register int start = y[class_end + final_class - 1] + 1; register int end = y[class_end + final_class]; register int s, s1, s2; register int start_class = 1; register int a, b; register int value; register int p1; #include "access.h" #if defined(GROUP) if (pcp->fullop || pcp->diagn) printf("Processing tails for generators of weight %d and %d\n", final_class, 1); for (f = start; f <= end; f++) { #ifdef DEBUG printf("Processing generator f = %d, Lused = %d\n", f, pcp->lused); #endif value = y[structure + f]; a = PART3(value); if (a == 0) break; b = PART2(value); /* f is the commutator (b, a); calculate the class current_class part of f^p by collecting (b^p) a = b^(p-1) (ba); by formal collection, we see that the class current_class part of f^p is obtained by subtracting (modulo p) the rhs of the above equation from the lhs */ jacobi(b, b, a, pcp->ppower + f, pcp); if (pcp->overflow) return; } #endif /* calculate the non left-normed commutators of class work_class in the order (work_class - 2, 2), (work_class - 3, 3) .. */ class_end = pcp->clend; while (--final_class >= ++start_class) { if (pcp->fullop || pcp->diagn) printf("Processing tails for generators of weight %d and %d\n", final_class, start_class); start = y[class_end + final_class - 1] + 1; end = y[class_end + final_class]; s1 = y[class_end + start_class - 1] + 1; for (f = start; f <= end; f++) { #ifdef DEBUG printf("Processing generator f = %d, Lused = %d\n", f, pcp->lused); #endif s2 = MIN(f - 1, y[class_end + start_class]); if (s2 - s1 < 0) continue; p1 = y[pcp->ppcomm + f]; for (s = s1; s <= s2; s++) { /* insert the class current_class part on (f, s) */ value = y[structure + s]; b = PART2(value); a = PART3(value); if (a == 0) a = b; else if (pcp->metabelian && PART3(y[structure + f]) != 0) continue; /* s = (b, a); calculate the class current_class part of (f, (b, a)) by collecting (fb) a = f (ba) or the class current_class part of (f, (b^p)) by collecting (fb) b^(p - 1) = f (b^p); since we require only the class current_class part - the rest has been computed earlier - we calculate it by subtracting (modulo p) the rhs of the above equation from the lhs (proof by formal collection) */ jacobi(f, b, a, p1 + s, pcp); if (pcp->overflow) return; } } } } #endif /* insert a new generator or pseudo-generator */ void create_tail(int address, int f, int s, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int bound; register int lastg; register int lused = pcp->lused; register int structure = pcp->structure; register int current_class = pcp->cc; register int pointer; #include "access.h" pcp->lastg++; lastg = pcp->lastg; y[address] = lastg; y[structure + lastg] = PACK3(0, f, s) + INSWT(current_class); if (pcp->nocset == 0) return; /* work out the number of occurrences of each defining generator in the new generator, storing this in a table above y[lused + current_class] -- the entry y[lused + current_class + gen] is the number of occurrences of defining generator gen */ if (is_space_exhausted(current_class + pcp->ndgen, pcp)) return; lused = pcp->lused; pointer = find_definition(lastg, lused, current_class, pcp); for (i = 1, bound = pcp->ndgen; i <= bound; i++) y[lused + current_class + i] = 0; for (i = pointer, bound = lused + current_class; i <= bound; i++) ++y[lused + current_class + y[i]]; /* see that the number of occurrences of a defining generator passes some test that has been set up in option */ if (is_genlim_exceeded(pcp)) return; /* the test wasn't passed, so we discard the new generator */ pcp->lastg--; y[address] = 0; } /* insert a new pseudo-generator, where the old entry was non-trivial and must be deallocated */ void extend_tail(int address, int f, int s, struct pcp_vars *pcp) { register int *y = y_address; register int i; register int start; register int length; register int lastg; register int lused; register int current_class = pcp->cc; #include "access.h" if (is_space_exhausted(pcp->ccbeg + 1, pcp)) return; lused = pcp->lused; start = -y[address]; length = y[start + 1]; /* set up new header block with length increased by 1 */ y[lused + 1] = y[start]; y[lused + 2] = length + 1; /* set up pointer to new block */ y[address] = -(lused + 1); /* deallocate old block by setting its pointer to 0 */ y[start] = 0; /* copy old entry across */ for (i = 1; i <= length; i++) y[lused + 2 + i] = y[start + i + 1]; pcp->lused += length + 3; lused = pcp->lused; /* add pseudo-generator */ pcp->lastg++; lastg = pcp->lastg; y[lused] = PACK2(1, lastg); y[pcp->structure + lastg] = PACK3(0, f, s) + INSWT(current_class); } anupq-3.3.0/src/read_auts.c000644 000766 000024 00000004264 14355420571 016046 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A read_auts.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" #include "pcp_vars.h" #include "pq_functions.h" #include "standard.h" /* for each automorphism in turn, read its actions on each of the pcp generators of the Frattini quotient */ int ***read_auts(int option, int *nmr_of_auts, int *nmr_of_exponents, struct pcp_vars *pcp) { register int *y = y_address; register int i, j, k; int ***auts; int nmr_of_generators; read_value(TRUE, "Input the number of automorphisms: ", nmr_of_auts, 0); if (*nmr_of_auts == 0) return NULL; /* allocate sufficient space to store the automorphisms -- the indices of the array have been adjusted to start at 1, rather than 0, because it simplifies the automorphism handling */ if (option == PGA || option == STANDARDISE) *nmr_of_exponents = y[pcp->clend + pcp->cc - 1]; else { if (option == PQ && pcp->cc > 1) read_value(TRUE, "Input the number of exponents: ", nmr_of_exponents, y[pcp->clend + 1]); else *nmr_of_exponents = y[pcp->clend + 1]; } nmr_of_generators = y[pcp->clend + 1]; if (option == PGA || option == STANDARDISE) auts = allocate_array(*nmr_of_auts, pcp->lastg, pcp->lastg, TRUE); else auts = allocate_array( *nmr_of_auts, nmr_of_generators, *nmr_of_exponents, TRUE); for (i = 1; i <= *nmr_of_auts; ++i) { printf("Now enter the data for automorphism %d\n", i); for (j = 1; j <= nmr_of_generators; ++j) { printf("Input %d exponents for image of pcp generator %d: ", *nmr_of_exponents, j); for (k = 1; k < *nmr_of_exponents; ++k) read_value(FALSE, "", &auts[i][j][k], 0); read_value(TRUE, "", &auts[i][j][k], 0); } } return auts; } anupq-3.3.0/src/echelon.c000644 000766 000024 00000027052 14355420571 015514 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A echelon.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" #define CAREFUL /* echelonise the relation stored in exponent form in two parts; left-hand side is in y[lused + 1] to y[lused + lastg]; right-hand side is in y[lused + lastg + 1] to y[lused + 2 * lastg]; the relation should be homogeneous of class pcp->cc; if the result is nontrivial, set it up as a new relation pointed to by the appropriate y[structure + ..]; then remove all occurrences of newly found redundant generator from the other equations */ int echelon(struct pcp_vars *pcp) { register int *y = y_address; register int i; register int j; register int k; register int p1; register int exp; register int redgen = 0; register int count = 0; register int factor; register int bound; register int offset; register int temp; register int value; register int free; register Logical trivial; register Logical first; register int p = pcp->p; register int pm1 = pcp->pm1; #include "access.h" pcp->redgen = 0; pcp->eliminate_flag = FALSE; /* check that the relation is homogeneous of class pcp->cc */ if (pcp->cc != 1) { offset = pcp->lused - 1; temp = pcp->lastg; for (i = 2, bound = pcp->ccbeg; i <= bound; i++) { if (y[offset + i] != y[offset + temp + i]) { text(6, pcp->cc, 0, 0, 0); pcp->eliminate_flag = TRUE; return -1; } } } /* compute quotient of the relations and store quotient as an exponent vector in y[pcp->lused + pcp->ccbeg] to y[pcp->lused + pcp->lastg] */ k = 0; offset = pcp->lused; for (i = pcp->ccbeg, bound = pcp->lastg; i <= bound; i++) { y[offset + i] -= y[offset + bound + i]; if ((j = y[offset + i])) { if (j < 0) y[offset + i] += p; k = i; } } if (k <= 0) return -1; /* print out the quotient of the relations */ if (pcp->diagn) { /* a call to compact is not permitted at this point */ if (pcp->lused + 4 * pcp->lastg + 2 < pcp->structure) { /* first copy relevant entries to new position in y */ free = pcp->lused + 2 * pcp->lastg + 1; for (i = 1; i < pcp->ccbeg; ++i) y[free + i] = 0; for (i = pcp->ccbeg; i <= pcp->lastg; ++i) y[free + i] = y[pcp->lused + i]; setup_word_to_print( "quotient relation", free, free + pcp->lastg + 1, pcp); } } first = TRUE; while (first || --k >= pcp->ccbeg) { /* does generator k occur in the unechelonised relation? */ if (!first && y[pcp->lused + k] <= 0) continue; /* yes */ first = FALSE; exp = y[pcp->lused + k]; if ((i = y[pcp->structure + k]) <= 0) { if (i < 0) { /* generator k was previously redundant, so eliminate it */ p1 = -y[pcp->structure + k]; count = y[p1 + 1]; offset = pcp->lused; for (i = 1; i <= count; i++) { value = y[p1 + i + 1]; j = FIELD2(value); /* integer overflow can occur here; see comments in collect */ y[offset + j] = (y[offset + j] + exp * FIELD1(value)) % p; } } y[pcp->lused + k] = 0; } else { /* generator k was previously irredundant; have we already found a generator to eliminate using this relation? */ if (redgen > 0) { /* yes, so multiply this term by the appropriate factor and note that the value of redgen is not trivial */ trivial = FALSE; /* integer overflow can occur here; see comments in collect */ y[pcp->lused + k] = (y[pcp->lused + k] * factor) % p; } else { /* no, we will eliminate k using this relation */ redgen = k; trivial = TRUE; /* we want to compute the value of k so we will multiply the rest of the relation by the appropriate factor; integer overflow can occur here; see comments in collect */ factor = pm1 * invert_modp(exp, p); /* we carry out this mod computation to reduce possibility of integer overflow */ #if defined(CAREFUL) factor = factor % p; #endif y[pcp->lused + k] = 0; } } } if (redgen <= 0) return -1; else pcp->redgen = redgen; /* the relation is nontrivial; redgen is either trivial or redundant */ if (trivial) { /* mark redgen as trivial */ y[pcp->structure + redgen] = 0; if (pcp->fullop) text(3, redgen, 0, 0, 0); complete_echelon(1, redgen, pcp); } else { /* redgen has value in exponent form in y[pcp->lused + pcp->ccbeg] to y[pcp->lused + redgen(-1)] */ count = 0; offset = pcp->lused; for (i = pcp->ccbeg; i <= redgen; i++) if (y[offset + i] > 0) { count++; y[offset + count] = PACK2(y[offset + i], i); } offset = pcp->lused + count + 1; for (i = 1; i <= count; i++) y[offset + 2 - i] = y[offset - i]; /* set up the relation for redgen */ y[pcp->lused + 1] = pcp->structure + redgen; y[pcp->lused + 2] = count; y[pcp->structure + redgen] = -(pcp->lused + 1); pcp->lused += count + 2; if (pcp->fullop) text(4, redgen, 0, 0, 0); complete_echelon(0, redgen, pcp); } pcp->eliminate_flag = TRUE; if (redgen < pcp->first_pseudo) pcp->newgen--; if (pcp->newgen != 0 || pcp->multiplicator) return count; /* group is completed because all actual generators are redundant, so it is not necessary to continue calculation of this class */ pcp->complete = 1; last_class(pcp); if (pcp->fullop || pcp->diagn) text(5, pcp->cc, p, pcp->lastg, 0); return -1; } /* complete echelonisation of this relation by removing all occurrences of redgen from the other relations; if the generator redgen is trivial, then the flag trivial is TRUE */ void complete_echelon(Logical trivial, int redgen, struct pcp_vars *pcp) { register int *y = y_address; int k; int i, j, jj, exp; int p1; int factor; int count, count1, count2; int predg; int offset; int temp; int value; int bound; int l; int p = pcp->p; #include "access.h" if (trivial) { /* delete all occurrences of redgen from other equations */ for (k = redgen + 1, bound = pcp->lastg; k <= bound; k++) { if (y[pcp->structure + k] >= 0) continue; p1 = -y[pcp->structure + k]; count = y[p1 + 1]; for (j = 1; j <= count; j++) if ((temp = FIELD2(y[p1 + j + 1])) >= redgen) break; if (j > count || temp > redgen) continue; /* redgen occurs in this relation, so eliminate it; is redgen in the last word? */ count1 = count - 1; if (j < count) { /* no, so pack up relation */ for (jj = j; jj <= count1; jj++) y[p1 + jj + 1] = y[p1 + jj + 2]; } if (j < count || (j >= count && count1 > 0)) { /* deallocate last word and fix count in header block */ y[p1 + count + 1] = -1; y[p1 + 1] = count1; continue; } /* old relation is to be eliminated (it was 1 word long) */ y[p1] = 0; y[pcp->structure + k] = 0; } } else { p1 = -y[pcp->structure + redgen]; count = y[p1 + 1]; /* eliminate all occurrences of redgen from the other relations by substituting its value */ for (k = redgen + 1, bound = pcp->lastg; k <= bound; k++) { if (y[pcp->structure + k] >= 0) continue; if (is_space_exhausted(pcp->lastg + 1, pcp)) return; p1 = -y[pcp->structure + k]; count1 = y[p1 + 1]; for (j = 1; j <= count1; j++) if ((temp = FIELD2(y[p1 + j + 1])) >= redgen) break; if (j > count1 || temp > redgen) continue; /* redgen occurs in this relation, so eliminate it */ factor = FIELD1(y[p1 + j + 1]); predg = -y[pcp->structure + redgen]; /* merge old relation with factor * (new relation), deleting redgen; old relation is longer than new relation since it contains redgen */ /* commence merge */ count2 = 0; offset = pcp->lused + 2; for (i = 1, l = 1;;) { temp = FIELD2(y[p1 + i + 1]) - FIELD2(y[predg + l + 1]); if (temp < 0) { count2++; y[offset + count2] = y[p1 + i + 1]; i++; } else if (temp > 0) { count2++; /* integer overflow can occur here; see comments in collect */ value = y[predg + l + 1]; y[offset + count2] = PACK2((factor * FIELD1(value)) % p, FIELD2(value)); if (++l > count) break; } else { /* integer overflow can occur here; see comments in collect */ value = y[p1 + i + 1]; exp = (FIELD1(value) + factor * FIELD1(y[predg + l + 1])) % p; if (exp > 0) { count2++; y[offset + count2] = PACK2(exp, FIELD2(value)); } i++; if (++l > count) break; } } /* all of the value of redgen has been merged in; copy in the remainder of the old relation with redgen deleted */ offset = pcp->lused + 2; for (jj = i; jj <= count1; jj++) if (jj != j) { count2++; y[offset + count2] = y[p1 + jj + 1]; } /* new relation is now in y[lused + 2 + 1] to y[lused + 2 + count2] */ /* new relation indicates generator k is trivial; deallocate old */ if (count2 <= 0) { y[p1] = 0; y[pcp->structure + k] = 0; continue; } /* new relation is nontrivial */ if (count2 < count1) { /* new relation is shorter than old; copy in new relation */ for (i = 1; i <= count2; i++) y[p1 + i + 1] = y[pcp->lused + 2 + i]; /* reset count field for new relation */ y[p1 + 1] = count2; /* deallocate rest of old relation */ if (count1 == count2 + 1) y[p1 + count2 + 2] = -1; else { y[p1 + count2 + 2] = 0; y[p1 + count2 + 3] = count1 - count2 - 2; } } else if (count1 == count2) { /* new relation has same length as old; overwrite old relation */ offset = pcp->lused + 2; for (i = 1; i <= count2; i++) y[p1 + i + 1] = y[offset + i]; } else { /* new relation is longer than old; deallocate old relation */ y[p1] = 0; /* set up pointer to new relation and header block */ y[pcp->structure + k] = -(pcp->lused + 1); y[pcp->lused + 1] = pcp->structure + k; y[pcp->lused + 2] = count2; pcp->lused += count2 + 2; } } } } anupq-3.3.0/src/permute_elements.c000644 000766 000024 00000013510 14355420571 017446 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A permute_elements.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #undef DEBUG #include "pga_vars.h" #include "pq_functions.h" /* compute automorphism classes of elements of a vector space; procedure requests as input rank and prime and those matrices which act on the space; it also permits the computation of the permutations induced by multiplying each element of the vector space by a supplied basis element; the basis element are numbered 1 .. elements are generated in sequence and their images computed by matrix multiplication; orbits under the action of these permutations are then computed and orbit representatives listed; given the label of an orbit representative, its p-adic expansion corresponds to the element */ void expand_padic(int x, int k, int p, int *expand) { register int alpha; register int val; while (x > 0 && k >= 0) { val = int_power(p, k); if (val <= x) { /* find largest multiple of p^k < x */ alpha = p - 1; while (alpha * val > x) --alpha; expand[k] = alpha; x -= alpha * val; } --k; } } void padic(int p, int rank, struct pga_vars *pga) { int number; int *expand; int bound = rank; int i, r; expand = allocate_vector(rank + 1, 0, FALSE); for (r = 1; r <= pga->nmr_orbits; ++r) { number = pga->rep[r]; for (i = 0; i <= rank; ++i) expand[i] = 0; bound = rank; while (bound > 0 && int_power(p, bound) > number) --bound; ++bound; expand_padic(number, bound, p, expand); printf("The element with label %5d is ", number); print_array(expand, 0, rank); } } void permute_elements(void) { int index; int **position; int rank; int p; int i; int label; int map; int **A; int **B; int subgp = 0; int **permutation; struct pga_vars pga; int *length; int alpha; int m; int q, x; int *orbit; char *schreier; int *backptr; int nmr_maps; int Degree; read_value(TRUE, "Input rank of vector space: ", &rank, 1); read_value(TRUE, "Input prime: ", &p, 2); read_value(TRUE, "Input number of automorphism matrices: ", &m, 0); read_value(TRUE, "Input number of multiplication maps: ", &nmr_maps, 0); Degree = int_power(p, rank); position = allocate_matrix(1, rank + 1, 0, 0); permutation = allocate_matrix(nmr_maps + m, Degree, 1, 0); q = rank; A = allocate_matrix(q, rank + 1, 0, 0); /* first process automorphisms */ for (alpha = 1; alpha <= m; ++alpha) { printf("Input the matrix for automorphism %d\n", alpha); read_matrix(A, q, q); for (x = 0; x <= rank; ++x) position[0][x] = 0; subgp = 0; do { index = 0; ++position[0][0]; while (index < rank && position[0][index] == p) { position[0][index] = 0; ++index; ++position[0][index]; } #ifdef DEBUG printf("\n"); for (i = 0; i < rank; ++i) printf("%d ", position[0][i]); #endif label = 0; for (i = 0; i < rank; ++i) label += (position[0][i] * int_power(p, i)); #ifdef DEBUG printf("label is %d\n", label); #endif /* now multiply mod p */ B = multiply_matrix(position, 1, q, A, q, p); #ifdef DEBUG print_matrix(B, 1, q); #endif label = 0; for (i = 0; i < rank; ++i) label += (B[0][i] * int_power(p, i)); #ifdef DEBUG printf("label is %d\n", label); if (subgp % 10000 == 0) printf("Completed %d subgroups\n", subgp); #endif if (label == 0) label = Degree; permutation[alpha][++subgp] = label; free_matrix(B, 1, 0); } while (index < rank); #ifdef DEBUG print_array(permutation[alpha], 1, subgp + 1); #endif } pga.Degree = Degree; /* now process multiplication maps */ for (alpha = 1; alpha <= nmr_maps; ++alpha) { subgp = 0; for (x = 0; x <= rank; ++x) position[0][x] = 0; read_value(TRUE, "Input basis element to multiply by: ", &map, 1); --map; do { index = 0; ++position[0][0]; while (index < rank && position[0][index] == p) { position[0][index] = 0; ++index; ++position[0][index]; } #if DEBUG printf("\n"); for (i = 0; i < rank; ++i) printf("%d ", position[0][i]); #endif label = 0; for (i = 0; i < rank; ++i) label += (position[0][i] * int_power(p, i)); #if DEBUG printf("label is %d\n", label); #endif B = allocate_matrix(1, rank + 1, 0, 0); for (i = 0; i < rank; ++i) B[0][i] = position[0][i]; B[0][map] = (B[0][map] + 1) % p; #if DEBUG print_matrix(B, 1, q); #endif label = 0; for (i = 0; i < rank; ++i) label += (B[0][i] * int_power(p, i)); #if DEBUG printf("label is %d\n", label); #endif if (label == 0) label = pga.Degree; permutation[m + alpha][++subgp] = label; free_matrix(B, 1, 0); } while (index < rank); #if DEBUG print_array(permutation[m + alpha], 1, subgp + 1); #endif } pga.Degree = subgp; pga.m = m + nmr_maps; pga.nmr_of_perms = m + nmr_maps; pga.soluble = FALSE; pga.print_orbits = FALSE; insoluble_compute_orbits(&orbit, &backptr, &schreier, permutation, &pga); length = find_orbit_reps(orbit, orbit, &pga); orbit_summary(length, &pga); padic(p, rank, &pga); } anupq-3.3.0/src/class1_eliminate.c000644 000766 000024 00000005606 14355420571 017315 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A class1_eliminate.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" /* eliminate all redundant generators to construct the consistent power commutator presentation for the class 1 quotient; this procedure is called only for class 1 in order to eliminate redundancies brought about by collecting and then echelonising words against an existing consistent class 1 presentation; in all other circumstances, the usual eliminate procedure is called */ void class1_eliminate(struct pcp_vars *pcp) { register int *y = y_address; register int i; register int j; register int k; register int p1; register int ba; register int lg; register int bound; register int structure = pcp->structure; register int current_class = pcp->cc; register int lused = pcp->lused; register int dgen = pcp->dgen; register int ndgen = pcp->ndgen; /* calculate new values for irredundant generators and set them up in a renumbering table of length pcp->lastg - pcp->ccbeg + 1 which looks to compact like a normal exponent-generator string pointed to by y[dgen] */ structure = pcp->structure; lused = pcp->lused; y[lused + 1] = dgen; y[dgen] = -(lused + 1); y[lused + 2] = pcp->lastg - pcp->ccbeg + 1; ba = lused + 3 - pcp->ccbeg; pcp->lused += pcp->lastg - pcp->ccbeg + 3; lused = pcp->lused; lg = pcp->ccbeg - 1; for (i = pcp->ccbeg, bound = pcp->lastg; i <= bound; i++) { y[ba + i] = 0; if (y[structure + i] > 0) y[ba + i] = ++lg; } /* update the redundant defining generators and inverses */ for (i = 1; i <= ndgen; i++) { update(dgen + i, pcp); if (pcp->overflow) return; update(dgen - i, pcp); if (pcp->overflow) return; } /* finally update and move structure information */ pcp->ppcomm = pcp->structure; pcp->ppower = pcp->ppcomm; k = pcp->ppower; structure = pcp->structure; for (i = pcp->lastg; i >= pcp->ccbeg; i--) { if ((j = y[structure + i]) > 0) { y[k] = j; k--; } else if (j < 0) { /* deallocate equation for redundant generator i */ p1 = -j; y[p1] = 0; } } for (; i > 0; i--) y[k--] = y[structure + i]; if (pcp->subgrp != structure) delete_tables(0, pcp); pcp->structure = k; structure = pcp->structure; pcp->words = k; pcp->subgrp = k; pcp->submlg = pcp->subgrp - lg; pcp->lastg = lg; y[pcp->clend + current_class] = pcp->lastg; /* deallocate the renumbering table */ p1 = -y[dgen]; y[p1] = 0; return; } anupq-3.3.0/src/get_definition_sets.c000644 000766 000024 00000004627 14355420571 020127 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A get_definition_sets.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pga_vars.h" #include "pq_functions.h" int *subset; /* temporary storage for definition set */ /* a definition set is a subset of cardinality pga->s of the relative nucleus, a set of cardinality pga->r; here, we find all subsets of cardinality pga->s which contain the elements 0 .. pga->fixed - 1; set up all of the definition sets as a array, list */ void get_definition_sets(struct pga_vars *pga) { register int i; register int bound; pga->nmr_def_sets = 0; subset = allocate_vector(pga->s, 0, 0); /* initialise each definition set to contain 0 .. pga->fixed - 1 */ for (i = 0; i < pga->fixed; ++i) subset[i] = i; if (pga->fixed == pga->s) add_to_list(subset, pga); else { bound = MIN(pga->r - (pga->s - pga->fixed), pga->r); for (i = pga->fixed; i <= bound; ++i) visit(i, pga->s - pga->fixed - 1, pga); } free_vector(subset, 0); } /* store the definition set as a bit string; compute the number of available positions determined by this definition set */ void add_to_list(int *subset, struct pga_vars *pga) { register int i; int bit_string = 0; /* to store subset */ /* convert each subset to bit string */ for (i = 0; i < pga->s; ++i) bit_string |= 1 << subset[i]; pga->list[pga->nmr_def_sets] = bit_string; /* compute the number of available positions */ pga->available[pga->nmr_def_sets] = available_positions(subset, pga); ++pga->nmr_def_sets; } /* visit node k; d remaining elements to be found to make up subset of cardinality pga->s */ void visit(int k, int d, struct pga_vars *pga) { register int i; subset[pga->s - d - 1] = k; if (d == 0) add_to_list(subset, pga); for (i = k + 1; i < pga->r && d > 0; ++i) visit(i, d - 1, pga); } /* find the number of available positions for definition set K */ int available_positions(int *K, struct pga_vars *pga) { register int l; register int available = pga->q * pga->s - pga->s * (pga->s - 1) / 2; for (l = 0; l < pga->s; ++l) available -= (K[l] + 1); return available; } anupq-3.3.0/src/extend_matrix.c000644 000766 000024 00000001763 14355420571 016753 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A extend_matrix.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" #include "pq_functions.h" int ** reallocate_matrix(int **a, int orig_n, int orig_m, int n, int m, Logical zero); /* extend the space available for storage of automorphisms */ int **extend_matrix(int **current, struct pcp_vars *pcp) { register int *y = y_address; int nmr_of_generators; int **auts; nmr_of_generators = y[pcp->clend + 1]; auts = reallocate_matrix(current, nmr_of_generators, nmr_of_generators, pcp->lastg, pcp->lastg, TRUE); return auts; } anupq-3.3.0/src/print_arrays.c000644 000766 000024 00000001451 14355420571 016607 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A print_arrays.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" /* procedure to print out integer array */ void print_array(int *a, int first, int last) { register int i; for (i = first; i < last; ++i) { printf("%d ", a[i]); if (i > first && (i - first) % 20 == 0) printf("\n"); } printf("\n"); } /* procedure to print out character array */ void print_chars(char *a, int first, int last) { register int i; for (i = first; i < last; ++i) printf("%d ", a[i]); printf("\n"); } anupq-3.3.0/src/find_image.c000644 000766 000024 00000002721 14355420571 016155 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A find_image.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "pq_functions.h" /* find the image of the allowable subgroup having supplied label under the action of automorphism; compute and return its label */ int find_image(int label, int **auts, struct pga_vars *pga, struct pcp_vars *pcp) { int index; int **A; int **Image, **Image_transpose; int **S, **S_transpose; int *subset; int K; subset = allocate_vector(pga->s, 0, 0); A = allocate_matrix(pga->q, pga->q, 0, FALSE); assemble_matrix(A, pga->q, auts, pcp); S = label_to_subgroup(&index, &subset, label, pga); S_transpose = transpose(S, pga->s, pga->q); Image_transpose = multiply_matrix(A, pga->q, pga->q, S_transpose, pga->s, pga->p); Image = transpose(Image_transpose, pga->q, pga->s); K = echelonise_matrix(Image, pga->s, pga->q, pga->p, subset, pga); free_matrix(A, pga->q, 0); free_matrix(S, pga->s, 0); free_matrix(S_transpose, pga->q, 0); free_matrix(Image_transpose, pga->q, 0); label = subgroup_to_label(Image, K, subset, pga); free_matrix(Image, pga->s, 0); free_vector(subset, 0); return label; } anupq-3.3.0/src/generator_definition.c000644 000766 000024 00000002661 14355420571 020274 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A generator_definition.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pq_functions.h" /* find the structure of a pcp generator, gen, recursively from struct, storing the result in y[pcp->lused + k] to y[pcp->lused + pcp->cc]; room is needed to store a string of length pcp->cc */ void generator_definition(int gen, int *k, struct pcp_vars *pcp) { register int *y = y_address; register int i, j; #include "access.h" if (is_space_exhausted(pcp->cc, pcp)) return; *k = pcp->cc + 1; do { i = PART2(y[pcp->structure + gen]); j = PART3(y[pcp->structure + gen]); if (j != 0) { --(*k); y[pcp->lused + *k] = j; gen = i; } else { /* we have a power entry -- work out its structure recursively; the structure (d^p)^j, where d is a defining generator, has weight j + 1 and thus its structure is j + 1 copies of d */ j = 2; while (i > pcp->ndgen) { i = PART2(y[pcp->structure + i]); ++j; } for (; j > 0; --j, --(*k)) y[pcp->lused + *k] = i; } } while (i != 0); } anupq-3.3.0/src/write.c000644 000766 000024 00000002762 14355420571 015232 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A write.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" /* write using fwrite pcp to file ofp */ void save_pcp(FILE *ofp, struct pcp_vars *pcp) { register int *y = y_address; compact(pcp); fwrite(pcp, sizeof(struct pcp_vars), 1, ofp); fwrite(y, sizeof(int), pcp->lused + 1, ofp); fwrite(y + pcp->subgrp, sizeof(int), pcp->backy - pcp->subgrp + 1, ofp); } /* save using fwrite a description of the pga structure of the group and of its automorphisms to file ofp */ void save_pga(FILE *ofp, int ***central, int ***stabiliser, struct pga_vars *pga, struct pcp_vars *pcp) { register int i, j; #ifdef HAVE_GMP mpz_out_str(ofp, 10, &pga->aut_order); #endif fwrite(pga, sizeof(struct pga_vars), 1, ofp); for (i = 1; i <= pga->nmr_centrals; ++i) for (j = 1; j <= pga->ndgen; ++j) fwrite(central[i][j] + 1, sizeof(int), pcp->lastg, ofp); for (i = 1; i <= pga->nmr_stabilisers; ++i) for (j = 1; j <= pga->ndgen; ++j) fwrite(stabiliser[i][j] + 1, sizeof(int), pcp->lastg, ofp); fwrite(pga->relative + 1, sizeof(int), pga->nmr_soluble, ofp); } anupq-3.3.0/src/GAP_present.c000644 000766 000024 00000024025 14355420571 016243 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A GAP_present.c ANUPQ source Eamonn O'Brien *A & Frank Celler *A & Benedikt Rothe ** *Y Copyright 1995-1997, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-1997, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "pq_functions.h" #include "menus.h" /**************************************************************************** ** *F print_GAP_word ** print out a word of a pcp presentation */ static void print_GAP_word(FILE *file, int ptr) { register int *y = y_address; int gen, exp; int i; int count; #include "access.h" if (ptr == 0) fprintf(file, " One(F)"); else if (ptr > 0) fprintf(file, " F.%d", ptr); else { ptr = -ptr + 1; count = y[ptr]; fprintf(file, " %s", (1 < count) ? "(" : ""); for (i = 1; i <= count; i++) { exp = FIELD1(y[ptr + i]); gen = FIELD2(y[ptr + i]); fprintf(file, "F.%d", gen); if (exp != 1) fprintf(file, "^%d", exp); if (i != count) fprintf(file, "*"); } if (1 < count) fprintf(file, ")"); } } /**************************************************************************** ** *F GAP_presentation ** write pq presentation to file in GAP format */ void GAP_presentation(FILE *file, struct pcp_vars *pcp, int aspcgroup) { register int *y = y_address; int i; int j; int k; int l; int p1; int p2; int weight; int comma; int ndgen = pcp->ndgen; int dgen = pcp->dgen; #include "access.h" /* construct a free group with enough generators */ fprintf(file, "F := FreeGroup( %d );\n", pcp->lastg); if (aspcgroup) { fprintf(file, "F := PcGroupFpGroupNC( F / [\n"); } else fprintf(file, "F := F / [\n"); /* write power-relators with possible non-trivial rhs */ comma = 0; k = y[pcp->clend + pcp->cc - 1]; for (i = 1; i <= k; i++) { if (comma) fprintf(file, ",\n"); else comma = 1; p2 = y[pcp->ppower + i]; if (p2 == 0) fprintf(file, " F.%d^%d", i, pcp->p); else { fprintf(file, " F.%d^%d /", i, pcp->p); print_GAP_word(file, p2); } } /* write power-relators with trivial rhs */ for (i = k + 1; i <= pcp->lastg; ++i) { if (comma) fprintf(file, ",\n"); else comma = 1; fprintf(file, " F.%d^%d", i, pcp->p); } /* write commutator-relators */ for (i = 2; i <= k; i++) { weight = WT(y[pcp->structure + i]); p1 = y[pcp->ppcomm + i]; l = MIN(i - 1, y[pcp->clend + pcp->cc - weight]); for (j = 1; j <= l; j++) { p2 = y[p1 + j]; if (p2 != 0) { fprintf(file, ",\n"); fprintf(file, " Comm( F.%d, F.%d ) /", i, j); print_GAP_word(file, p2); } } } if (aspcgroup) fprintf(file, "] );\n"); else fprintf(file, "];\n"); /* store the relation between pc gens and fp gens */ fprintf(file, "MapImages := [];\n"); for (i = 1; i <= ndgen; i++) { p2 = y[dgen + i]; fprintf(file, "MapImages[%d] := ", i); print_GAP_word(file, p2); fprintf(file, ";\n"); } } /**************************************************************************** ** *F MakeNameList ** create p-group generation identifier for group */ char *nextnumber(char *ident) { while (*ident != '\0' && *ident != '#') ident++; if (*ident == '#') ident++; return ident; } void MakeNameList(FILE *file, char *ident) { int first = 1; fprintf(file, "SetANUPQIdentity( F, [ "); while (*(ident = nextnumber(ident)) != '\0') { if (!first) fprintf(file, ","); first = 0; fprintf(file, "["); do fprintf(file, "%c", *ident); while (*++ident != ';'); ident++; fprintf(file, ","); do { fprintf(file, "%c", *ident); ident++; } while ('0' <= *ident && *ident <= '9'); fprintf(file, "]"); } fprintf(file, " ] );\n"); } /**************************************************************************** ** *F write_GAP_library ** write GAP library file in form suitable for reading into GAP */ int countcall = 0; void write_GAP_library(FILE *file, struct pcp_vars *pcp) { /* if this is the first call initialise 'ANUgroups' */ if (countcall == 0) { fprintf(file, "ANUPQgroups := [];\n"); fprintf(file, "ANUPQautos := [];\n\n"); } countcall++; /* write function call to .th position of */ fprintf(file, "## group number: %d\n", countcall); fprintf(file, "ANUPQgroups[%d] := function( L )\n", countcall); fprintf(file, "local MapImages, F;\n\n"); /* write the GAP presentation to file */ GAP_presentation(file, pcp, 0); /* convert to a pc group in descendants case ... has to be done here; otherwise, we lose the property/attributes */ fprintf(file, "if IsList(L) then\n F := PcGroupFpGroupNC(F);\nfi;\n"); /* add info. whether group is capable, and its nuclear and mult'r ranks*/ fprintf(file, "SetIsCapable(F, %s);\n", (pcp->newgen) ? "true" : "false"); fprintf(file, "SetNuclearRank(F, %d);\n", pcp->newgen); fprintf(file, "SetMultiplicatorRank (F, %d);\n", pcp->multiplicator_rank); /* add the pq identitfier */ MakeNameList(file, pcp->ident); /* add the group to */ fprintf(file, "if IsList(L) then\n Add( L, F );\n"); fprintf(file, "else\n L.group := F;\n L.map := MapImages;\nfi;"); fprintf(file, "\nend;\n\n\n"); } /**************************************************************************** ** *F GAP_auts ** write a description of the automorphism group of the current ** group to a file in a format suitable for input to GAP */ void GAP_auts(FILE *file, int ***central, int ***stabiliser, struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; int i, j, k, ngens, first; /* if this is the first call something is wrong ' */ if (countcall == 0) { fprintf(stderr, "internal error in 'GAP_auts'"); exit(FAILURE); } /* write function call to .th position of */ fprintf(file, "## automorphisms number: %d\n", countcall); fprintf(file, "ANUPQautos[%d] := function( G )\n", countcall); fprintf(file, "local frattGens,\n"); fprintf(file, " relOrders,\n"); fprintf(file, " centralAutos,\n"); fprintf(file, " otherAutos;\n"); /* write information about automorphisms to file */ ngens = y[pcp->clend + 1]; fprintf(file, "SetIsPcgsAutomorphisms(G,%s);\n", pga->soluble ? "true" : "false"); fprintf(file, "SetIsCapable(G,%s);\n", pga->capable ? "true" : "false"); /* first write the Frattini generators */ fprintf(file, "frattGens := ["); for (k = 1; k <= ngens; k++) { if (k != 1) fprintf(file, ","); fprintf(file, "G.%d", k); } fprintf(file, "];\n"); fprintf(file, "centralAutos := []; # nr of central autos: %d\n", pga->nmr_centrals); /* write out all central automorphisms */ for (i = 1; i <= pga->nmr_centrals; ++i) { fprintf(file, "Add( centralAutos, ["); for (j = 1; j <= pga->ndgen; ++j) { if (j != 1) fprintf(file, ","); first = 1; for (k = 1; k <= pcp->lastg; ++k) { if (0 != central[i][j][k]) { if (!first) fprintf(file, "*"); first = 0; if (1 != central[i][j][k]) fprintf(file, "G.%d^%d", k, central[i][j][k]); else fprintf(file, "G.%d", k); } } if (first) { fprintf(stderr, "internal error in 'GAP_auts'\n"); exit(FAILURE); } } fprintf(file, "] );\n"); } fprintf(file, "otherAutos := []; # nr of other autos: %d\n", pga->nmr_stabilisers); /* write out all other automorphisms */ for (i = 1; i <= pga->nmr_stabilisers; ++i) { fprintf(file, "Add( otherAutos, ["); for (j = 1; j <= pga->ndgen; ++j) { if (j != 1) fprintf(file, ","); first = 1; for (k = 1; k <= pcp->lastg; ++k) { if (0 != stabiliser[i][j][k]) { if (!first) fprintf(file, "*"); first = 0; if (1 != stabiliser[i][j][k]) fprintf(file, "G.%d^%d", k, stabiliser[i][j][k]); else fprintf(file, "G.%d", k); } } if (first) { fprintf(stderr, "internal error in 'GAP_auts'\n"); exit(FAILURE); } } fprintf(file, "] );\n"); } fprintf(file, "relOrders := ["); if (pga->nmr_soluble > 0) { for (i = 1; i <= pga->nmr_soluble; ++i) fprintf(file, "%d, ", pga->relative[i]); fprintf(file, "%d", pga->relative[pga->nmr_soluble]); } fprintf(file, "];\n"); fprintf(file, "ANUPQSetAutomorphismGroup( "); fprintf(file, "G, frattGens, centralAutos, otherAutos, relOrders, "); fprintf(file, "%s );\n", pga->soluble ? "true" : "false"); fprintf(file, "end;\n\n\n"); } anupq-3.3.0/src/read_word.c000644 000766 000024 00000022343 14355420571 016043 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A read_word.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "constants.h" #include "pq_functions.h" #include "pretty_filterfns.h" #include "word_types.h" static void setup_relation(int disp, int length, int type, Logical commutator, int *t, struct pcp_vars *pcp); static int check_for_commutator(char *s); static int check_for_symbol(char *s); static int string_to_integer(char *s, int *integer); /* display the appropriate input message */ static void display_message(int type) { switch (type) { case LHS: printf("Input left-hand side of relation:\n"); break; case RHS: printf("Input right-hand side of relation:\n"); break; case WORD: printf("Input the word for collection:\n"); printf("(use generators x1,x2,... and terminate with a semicolon)\n"); break; case VALUE_A: printf("Input the value of a:\n"); printf("(use generators x1,x2,... and terminate with a semicolon)\n"); break; case VALUE_B: printf("Input the value of b:\n"); break; case FIRST_ENTRY: printf("Input the first component of commutator:\n"); break; case NEXT_ENTRY: printf("Input the next component of commutator:\n"); break; case ACTION: break; } } /* set up array of generators x1, x2, .., xlastg and their inverses to represent the pcp generators of the group; this permits words to be input using the pretty format */ void setup_symbols(struct pcp_vars *pcp) { int i, j, k, m; int log, digit; /* space for this array may have been previously allocated */ /* memory leak September 1996 */ if (user_gen_name != NULL) { num_gens = user_gen_name[0].first; for (i = 1; i <= num_gens; ++i) { free_vector(user_gen_name[i].g, 0); } free(user_gen_name); user_gen_name = NULL; free_vector(inv_of, 0); free_vector(pairnumber, 0); } paired_gens = pcp->lastg; num_gens = 2 * paired_gens; user_gen_name = anu_valloc(word, num_gens + 1); inv_of = anu_valloc(gen_type, num_gens + 1); pairnumber = anu_valloc(int, num_gens + 1); /* memory leak September 1996 */ user_gen_name[0].first = num_gens; for (i = 1; i <= paired_gens; i++) { j = i; word_init(user_gen_name + 2 * i - 1); word_init(user_gen_name + 2 * i); word_put_last(user_gen_name + 2 * i - 1, 'x'); word_put_last(user_gen_name + 2 * i, 'x'); /* extract the digits of the number, i, from left to right */ log = log10((double)j); for (k = log; k >= 0; --k) { m = int_power(10, k); digit = j / m; word_put_last(user_gen_name + 2 * i - 1, digit + '0'); word_put_last(user_gen_name + 2 * i, digit + '0'); j %= m; } word_put_last(user_gen_name + 2 * i, '^'); word_put_last(user_gen_name + 2 * i, '-'); word_put_last(user_gen_name + 2 * i, '1'); inv_of[2 * i - 1] = 2 * i; inv_of[2 * i] = 2 * i - 1; pairnumber[2 * i] = pairnumber[2 * i - 1] = i; } } /* read in a word using the basic format; type determines the message printed out; store the word with address ptr which has value lused + 1 + disp; y[ptr] is the length of the word (includes exponent); if the word is one side of a relation, and it is a commutator, then y[ptr] is the negative of the length, as this allows collect_relations to recognise that this word is a commutator; y[ptr + 1] is the exponent; y[ptr + 2] .. y[ptr + length] are generators (either defining or pcp) or their inverses */ void read_word(FILE *file, int disp, int type, struct pcp_vars *pcp) { Logical finish = FALSE; Logical commutator = FALSE; char s[MAXWORD]; int t[MAXWORD]; int integer, temp; int length = 0; int nmr_items; display_message(type); while (!finish && (nmr_items = fscanf(file, "%s", s)) != EOF) { verify_read(nmr_items, 1); while (s[0] == COMMENT) { read_line(); nmr_items = fscanf(file, "%s", s); verify_read(nmr_items, 1); } /* check for end of relation marker */ if (check_for_symbol(s)) finish = TRUE; /* check for commutator symbol */ if (!commutator) commutator = check_for_commutator(s); /* convert string to integer */ integer = 0; temp = string_to_integer(s, &integer); if (integer == 0 && !(commutator || finish || *s == ',')) { printf("Error in input data -- %s\n", s); if (!isatty(0)) exit(FAILURE); } if (integer != 0) { if ((length == 0 && temp == 0) || temp != 0) { t[length] = temp; ++length; } } } setup_relation(disp, length, type, commutator, t, pcp); } /* read word using pretty format */ void pretty_read_word(FILE *file, int disp, int type, struct pcp_vars *pcp) { register int *y = y_address; int ptr = pcp->lused + 1 + disp; word w1, w2, w3; gen_type g; int i, exp; int length; if (file == stdin) display_message(type); word_init(&w1); word_init(&w2); word_init(&w3); read_next_word(&w1, file); find_char(';', file); word2prog_word(&w1, &w2); word_factor(&w2, &w3, &exp); y[ptr] = length = 0; y[ptr + 1] = exp; while (word_delget_first(&w3, &g)) if (g != 0) y[ptr + 1 + (++length)] = (g <= inv(g)) ? pairnumber[g] : -pairnumber[g]; word_clear(&w1); word_clear(&w2); word_clear(&w3); if (length != 0) y[ptr] = ++length; if (file != stdin) return; printf("The input word is "); for (i = 1; i <= length; ++i) printf("%d ", y[ptr + i]); printf("\n"); } /* process the input word and set it up as an entry in y */ static void setup_relation(int disp, int length, int type, Logical commutator, int *t, struct pcp_vars *pcp) { register int *y = y_address; register int i; int u[MAXWORD]; register int total; register int ptr; Logical commutator_relation; /* currently, only a commutator which is one side of a relation is not expanded -- this may be changed later */ commutator_relation = (commutator && (type == LHS || type == RHS)); /* is the word trivial? */ if (t[0] == 0 || length == 1) { length = 1; ptr = pcp->lused + 1 + disp; y[ptr + 1] = 0; } else { /* set up relation */ for (i = 1; i < MAXWORD; ++i) u[i] = 0; u[0] = t[1]; if (length >= MAXWORD) { text(18, 0, 0, 0, 0); exit(FAILURE); } if (commutator_relation || !commutator) for (i = 1; i < length - 1; ++i) u[i] = t[i + 1]; else { for (i = 2; i < length; ++i) expand_commutator(u, t[i]); } /* check how much space is required to store the word in y */ total = 2; while (u[total] != 0) ++total; /* the length of the relation is total */ if (total >= MAXWORD) { text(18, 0, 0, 0, 0); exit(FAILURE); } /* is there enough room in array y to store the word? */ if (is_space_exhausted(total, pcp)) return; ptr = pcp->lused + 1 + disp; /* copy expanded word and set up as relation stored in y */ y[ptr + 1] = t[0]; length = 0; while (u[length] != 0) { y[ptr + 2 + length] = u[length]; ++length; } ++length; } /* set up the length */ if (commutator_relation) y[ptr] = -length; else y[ptr] = length; PRINT("The input word is "); PRINT("%d ", y[ptr + 1]); if (commutator_relation) PRINT("[ "); for (i = 2; i <= length; ++i) PRINT("%d ", y[ptr + i]); if (commutator_relation) PRINT("]"); PRINT("\n"); } /* check whether relation is a commutator */ static int check_for_commutator(char *s) { int not_found = 0; register int length = strlen(s); while (length > 0 && (not_found = (s[length - 1] != LHS_COMMUTATOR && s[length - 1] != RHS_COMMUTATOR))) --length; return !not_found; } /* check for occurrence of END_OF_WORD in word */ static int check_for_symbol(char *s) { int not_found = 0; register int length = strlen(s); while (length > 0 && (not_found = (s[length - 1] != END_OF_WORD))) --length; return !not_found; } /* convert string s to integer */ static int string_to_integer(char *s, int *integer) { int i, n, sign; for (i = 0; isspace(s[i]); i++) /* skip white space */ ; sign = (s[i] == '-') ? -1 : 1; if (s[i] == '+' || s[i] == '-') /* skip sign */ i++; for (n = 0; s[i] != '\0'; i++) { if (isdigit(s[i])) { *integer = 1; n = 10 * n + (s[i] - '0'); } } return sign * n; } anupq-3.3.0/src/action.c000644 000766 000024 00000003031 14355420571 015343 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A action.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "constants.h" #include "pcp_vars.h" #include "pq_functions.h" #include "standard.h" #include "word_types.h" /* specify automorphims in terms of defining generators and compute resultant action on pc generators; return action as array auts */ int ***determine_action(int format, int *nmr_of_auts, struct pcp_vars *pcp) { register int *y = y_address; register int i, j, k; int ***auts; int cp, pcp_generator; read_value(TRUE, "Input the number of automorphisms: ", nmr_of_auts, 0); auts = allocate_array(*nmr_of_auts, pcp->lastg, pcp->lastg, TRUE); cp = pcp->lused; for (i = 1; i <= *nmr_of_auts; ++i) { printf("Now enter the data for automorphism %d\n", i); for (j = 1; j <= pcp->ndgen; ++j) { pcp_generator = y[pcp->dgen + j]; printf("Input image of defining generator %d as word:\n", j); setup_defgen_word_to_collect(stdin, format, ACTION, cp, pcp); if (pcp_generator > 0) { for (k = 1; k <= pcp->lastg; ++k) auts[i][pcp_generator][k] = y[cp + k]; } } } extend_automorphisms(auts, *nmr_of_auts, pcp); print_auts(*nmr_of_auts, pcp->lastg, auts, pcp); return auts; } anupq-3.3.0/src/start_iteration.c000644 000766 000024 00000004065 14355420571 017311 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A start_iteration.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "pq_functions.h" #define ITERATION 6 /* read class and order bounds and step size information required in iteration of the algorithm */ void iteration_information(int *subgroup_rank, struct pga_vars *flag, int *class_bound, int *order_bound, int **step_sequence, struct pga_vars *pga, struct pcp_vars *pcp) { Logical All, Constant = 0; int nmr_iterations; register int i; read_class_bound(class_bound, pcp); read_value(TRUE, "Construct all descendants? ", &All, INT_MIN); if (All) { pga->step_size = ALL; read_value(TRUE, "Set an order bound on the descendants? ", order_bound, INT_MIN); if (*order_bound) read_order_bound(order_bound, pcp); else *order_bound = ALL; } else *order_bound = ALL; nmr_iterations = *class_bound - pcp->cc + 1; if (!All) { if (nmr_iterations != 1) { read_value(TRUE, "Constant step size? ", &Constant, INT_MIN); } if (Constant || nmr_iterations == 1) { read_step_size(pga, pcp); Constant = TRUE; } } if (!All && !Constant) { *step_sequence = allocate_vector(nmr_iterations, 1, 0); printf("Input %d step sizes: ", nmr_iterations); for (i = 1; i < nmr_iterations; ++i) read_value(FALSE, "", &(*step_sequence)[i], 1); read_value(TRUE, "", &(*step_sequence)[i], 1); } else *step_sequence = NULL; defaults_pga(ITERATION, subgroup_rank, flag, pga, pcp); } anupq-3.3.0/src/central_auts.c000644 000766 000024 00000012214 14355420571 016555 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A central_auts.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "pq_functions.h" /* determine which of the central outer automorphisms of the immediate descendant are required for iteration purposes; set up those which are necessary in the array central, which is returned */ int ***central_automorphisms(struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; int ***central = 0; int **commutator; /* result of commutator calculations */ char **redundant; /* automorphisms which are not required */ Logical found; register int gamma = 0; register int i, j, k; register int u, v; /* number of generators of last class in group */ int x = y[pcp->clend + pcp->cc - 1] - y[pcp->clend + pcp->cc - 2]; register int nmr_columns; /* dummy variable -- not used in this routine but required for echelonise_matrix call */ /* int *subset; subset = allocate_vector (x, 0, 0); echelonise_matrix (commutator, x, nmr_columns, pcp->p, subset, pga); free_vector (subset, 0); */ /* maximum number of central outer automorphisms */ nmr_columns = pga->nmr_centrals = pga->ndgen * pga->s; commutator = commutator_matrix(pga, pcp); if (pga->print_commutator_matrix) { printf("The commutator matrix is \n"); print_matrix(commutator, x, nmr_columns); } reduce_matrix(commutator, x, nmr_columns, pcp->p, pga); redundant = allocate_char_matrix(pga->ndgen, pga->s, 0, TRUE); for (i = 0; i < x; ++i) { found = FALSE; j = 0; while (j < nmr_columns && !(found = (commutator[i][j] == 1))) ++j; if (found) { u = j / pga->s; v = j % pga->s; redundant[u][v] = TRUE; --pga->nmr_centrals; } } /* set up, in the array central, all necessary automorphisms of the form u --> u * (pcp->ccbeg + v) k --> k where both u and k are defining generators, k distinct from u, and v runs from 0 to pga->s - 1 */ if (pga->nmr_centrals != 0) { central = allocate_array(pga->nmr_centrals, pga->ndgen, pcp->lastg, TRUE); for (u = 0; u < pga->ndgen; ++u) { for (v = 0; v < pga->s; ++v) { if (redundant[u][v] == FALSE) { ++gamma; for (k = 0; k < pga->ndgen; ++k) { central[gamma][k + 1][k + 1] = 1; if (k == u) central[gamma][k + 1][pcp->ccbeg + v] = 1; } } } } } free_matrix(commutator, x, 0); free_char_matrix(redundant, pga->ndgen); return central; } /* for each of the x generators of highest class - 1, look up its commutator with each of the pga->ndgen defining generators; set up the exponents of the pga->s new generators which occur in the commutator as part of a row of an x by pga->ndgen * pga->s matrix, commutator, which is returned */ int **commutator_matrix(struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; /* first and last generator of last class of parent */ int first = y[pcp->clend + pcp->cc - 2] + 1; int last = y[pcp->clend + pcp->cc - 1]; int x = last - first + 1; int **commutator; int *result; int pointer, value, entry, length; int offset; int u, v; register int i, j, k; #include "access.h" #ifdef CARANTI commutator = allocate_matrix(x, pga->ndgen * pga->s, 0, TRUE); return commutator; #else commutator = allocate_matrix(x, pga->ndgen * pga->s, 0, FALSE); #endif for (i = first; i <= last; ++i) { offset = 0; for (j = 1; j <= pga->ndgen; ++j) { /* store the result of [i, j] */ result = allocate_vector(pga->s, 0, 1); if (i != j) { if (i < j) { u = i; v = j; } else { u = j; v = i; } /* look up the value of [v, u] */ pointer = y[pcp->ppcomm + v]; entry = y[pointer + u]; if (entry > 0) result[entry - pcp->ccbeg] = 1; else if (entry < 0) { length = y[-entry + 1]; for (k = 1; k <= length; ++k) { value = y[-entry + 1 + k]; result[FIELD2(value) - pcp->ccbeg] = FIELD1(value); } } /* since, we want the value of [i, j], we may now need to invert [v, u] */ if (j == v) { for (k = 0; k < pga->s; ++k) if (result[k] != 0) result[k] = (pga->p - result[k]) % pga->p; } } /* now copy the result to commutator */ for (k = 0; k < pga->s; ++k) commutator[i - first][k + offset] = result[k]; offset += pga->s; free_vector(result, 0); } } return commutator; } anupq-3.3.0/src/options.c000644 000766 000024 00000013217 14355420571 015570 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A options.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "menus.h" #include "constants.h" #include "pq_functions.h" #if defined(GROUP) #define MAXOPTION 10 /* maximum number of menu options */ /* control routine for p-quotient program */ void options(int call, int format, struct pcp_vars *pcp) { int option; int t; char *name; FILE *FileName; int output_level = DEFAULT_PRINT; Logical group_present = FALSE; Logical print_flag; int exit_value; Logical report; int *list, *head; if (isatty(0)) list_pqa_menu(); if (call != DEFAULT_MENU) group_present = TRUE; do { option = read_option(MAXOPTION); switch (option) { case -1: list_pqa_menu(); break; case COMPUTE_PCP: t = runTime(); exit_value = pquotient(0, 0, stdin, format, pcp); if (exit_value == SUCCESS) group_present = TRUE; t = runTime() - t; printf("Computation of presentation took %.2f seconds\n", t * CLK_SCALE); break; case SAVE_PCP: name = GetString("Enter output file name: "); FileName = OpenFileOutput(name); if (group_present && FileName != NULL) { save_pcp(FileName, pcp); if (pcp->m != 0) save_auts(FileName, head, list, pcp); CloseFile(FileName); printf("Presentation written to file\n"); } break; case RESTORE_GROUP: name = GetString("Enter input file name: "); FileName = OpenFileInput(name); if (FileName != NULL) { restore_pcp(FileName, pcp); #ifdef DEBUG pcp->m = 0; #endif if (pcp->m != 0) restore_automorphisms(FileName, &head, &list, pcp); group_present = TRUE; RESET(FileName); printf("Presentation read from file\n"); } break; case DISPLAY_PRESENTATION: print_flag = (output_level >= MAX_PRINT - 1) ? TRUE : FALSE; if (group_present) print_presentation(print_flag, pcp); break; case PRINT_LEVEL: print_level(&output_level, pcp); break; case NEXT_CLASS: if (pcp->cc >= MAXCLASS || pcp->lastg >= MAXPC) { printf("You have reached the specified limits on class or number " "of defining generators\n"); break; } if (!pcp->overflow && group_present) { t = runTime(); report = pcp->complete; next_class(FALSE, &head, &list, pcp); if (report || (output_level == 1 && pcp->complete) || pcp->lastg < 1) text(5, pcp->cc, pcp->p, pcp->lastg, 0); t = runTime() - t; if (!pcp->overflow) { print_flag = (output_level >= MAX_PRINT - 1) ? TRUE : FALSE; print_presentation(print_flag, pcp); } printf("Computation of next class took %.2f seconds\n", t * CLK_SCALE); } break; case PCOVER: if (group_present) { t = runTime(); pcp->multiplicator = TRUE; next_class(FALSE, &head, &list, pcp); pcp->multiplicator = FALSE; pcp->update = FALSE; pcp->middle_of_tails = FALSE; t = runTime() - t; print_flag = (output_level >= MAX_PRINT - 1) ? TRUE : FALSE; print_presentation(print_flag, pcp); printf("Computation of %d-covering group took %.2f seconds\n", pcp->p, t * CLK_SCALE); } break; case INTERACTIVE_PQ: interactive_pq(group_present, format, output_level, &head, &list, pcp); break; case PGP: pgroup_generation(&group_present, pcp); break; case EXIT: case MAXOPTION: printf("Exiting from ANU p-Quotient Program\n"); break; } /* switch */ } while (option != 0 && option != MAXOPTION); } /* list available menu options */ void list_pqa_menu(void) { printf("\nBasic Menu for p-Quotient Program\n"); printf("----------------------------------\n"); printf("%d. Compute pc presentation\n", COMPUTE_PCP); printf("%d. Save presentation to file\n", SAVE_PCP); printf("%d. Restore presentation from file\n", RESTORE_PCP); printf("%d. Display presentation of group\n", DISPLAY_PRESENTATION); printf("%d. Set print level\n", PRINT_LEVEL); printf("%d. Calculate next class\n", NEXT_CLASS); printf("%d. Compute p-covering group\n", PCOVER); printf("%d. Advanced p-quotient menu\n", INTERACTIVE_PQ); printf("%d. (Main) menu for p-group generation\n", PGP); printf("%d. Exit from p-quotient program\n", MAXOPTION); } #endif /* prompt for & read menu option and check its validity */ int read_option(int maxoption) { int option; Logical error; do { read_value(TRUE, "\nSelect option: ", &option, LEAST_OPTION); if ((error = valid(option, maxoption)) == 0) printf("Invalid option -- must lie between %d and %d\n", LEAST_OPTION, maxoption); } while (error == 0); return option; } /* check whether option is valid */ int valid(int option, int maxoption) { return option >= LEAST_OPTION && option <= maxoption; } anupq-3.3.0/src/reduced_covers.c000644 000766 000024 00000011361 14355420571 017067 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A reduced_covers.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" #include "constants.h" #include "pq_functions.h" void trace_details(struct pga_vars *pga); /* default processing -- 1. calculate the extended automorphisms 2. characteristically close k-initial segment subgroup 3. calculate the relevant permutations of the allowable subgroups relative to this subgroup 4. compute orbits of the allowable subgroups and choose the representatives of these orbits 4. factor each orbit representative to obtain descendant 5. save presentation + automorphisms to file return the number of reduced p-covering groups constructed */ int reduced_covers(FILE *descendant_file, FILE *covers_file, int k, int ***auts, struct pga_vars *pga, struct pcp_vars *pcp) { int lower_step, upper_step; int nmr_of_covers = 0; int *a, *b; /* arrays needed for orbit calculation */ char *c; /* array needed for stabiliser calculation */ int **perms; /* store all permutations */ int *orbit_length; /* length of orbits */ FILE *LINK_input; /* input file for GAP */ #if defined(GAP_LINK) Logical process_fork = FALSE; /* has GAP process forked? */ #endif Logical soluble_group; /* indicates that orbits and stabilisers may be computed using soluble machinery */ /* calculate the extended automorphisms */ extend_automorphisms(auts, pga->m, pcp); if (pcp->overflow) return 0; if (pga->print_extensions && pga->m != 0) { printf("\nThe extension%s:\n", pga->m == 1 ? " is" : "s are"); print_auts(pga->m, pcp->lastg, auts, pcp); } /* find range of permitted step sizes */ step_range(k, &lower_step, &upper_step, auts, pga, pcp); /* set up space for definition sets */ store_definition_sets(pga->r, lower_step, upper_step, pga); /* loop over each permitted step size */ for (pga->s = lower_step; pga->s <= upper_step; ++pga->s) { if (pga->trace) trace_details(pga); get_definition_sets(pga); compute_degree(pga); /* establish which automorphisms induce the identity on the relevant subgroup of the p-multiplicator */ strip_identities(auts, pga, pcp); /* if possible, use the more efficient soluble code -- in particular, certain extreme cases can be handled */ soluble_group = (pga->soluble || pga->Degree == 1 || pga->nmr_of_perms == 0); if (!soluble_group) { #if defined(GAP_LINK) if (!process_fork) { start_GAP_file(auts, pga); process_fork = TRUE; } StartGapFile(pga); #else #if defined(GAP_LINK_VIA_FILE) start_GAP_file(&LINK_input, auts, pga, pcp); #endif #endif } perms = permute_subgroups(LINK_input, &a, &b, &c, auts, pga, pcp); if (!pga->space_efficient) { if (soluble_group) compute_orbits(&a, &b, &c, perms, pga); else insoluble_compute_orbits(&a, &b, &c, perms, pga); } orbit_length = find_orbit_reps(a, b, pga); if (pga->print_orbit_summary) orbit_summary(orbit_length, pga); if (soluble_group && pga->print_orbit_arrays) print_orbit_information(a, b, c, pga); pga->final_stage = (pga->q == pga->multiplicator_rank); if (!soluble_group) { #if defined(GAP_LINK_VIA_FILE) CloseFile(LINK_input); #endif } setup_reps(pga->rep, pga->nmr_orbits, orbit_length, perms, a, b, c, auts, descendant_file, covers_file, pga, pcp); if (!pga->final_stage) nmr_of_covers += pga->nmr_orbits; free_space(soluble_group, perms, orbit_length, a, b, c, pga); } #if defined(GAP_LINK) if (process_fork) QuitGap(); #endif free_vector(pga->list, 0); free_vector(pga->available, 0); free_vector(pga->offset, 0); return nmr_of_covers; } /* print algorithm trace details for group */ void trace_details(struct pga_vars *pga) { printf("\n------------------------------------------------------\n"); printf("Processing step size %d\n", pga->s); printf("The value of FIXED is %d\n", pga->fixed); printf("The rank of the initial segment subgroup is %d\n", pga->q); } anupq-3.3.0/src/echelonise_matrix.c000644 000766 000024 00000004574 14355420571 017605 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A echelonise_matrix.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pga_vars.h" /* left echelonise mod p the matrix a, which has the supplied dimensions; set up its definition set both as a subset and as a bit string */ int echelonise_matrix(int **a, int nmr_rows, int nmr_columns, int p, int *subset, struct pga_vars *pga) { Logical zero; register int bound = nmr_columns - 1; register int row, column, i, j, index, val; register int entry; register int bit_string = 0; for (row = 0; row < nmr_rows; ++row) { /* start with the diagonal entry */ column = row; /* find first non-zero entry, if any, in this column; if none, advance to next column */ do { index = row; while (index < nmr_rows && (zero = (a[index][column] == 0))) ++index; if (zero) { if (column < bound) ++column; else return bit_string; } } while (zero); /* store the definition set information for this matrix */ bit_string |= 1 << column; subset[row] = column; /* if necessary, interchange current row with row index */ if (index > row) { for (j = column; j < nmr_columns; ++j) { val = a[index][j]; a[index][j] = a[row][j]; a[row][j] = val; } } /* multiply row by the inverse in GF(p) of a[row][column] */ if ((entry = a[row][column]) != 1) { val = pga->inverse_modp[entry]; a[row][column] = 1; for (j = column + 1; j < nmr_columns; ++j) a[row][j] = (a[row][j] * val) % p; } /* now zero out all other entries in this column */ for (i = 0; i < nmr_rows; ++i) { if (a[i][column] == 0 || i == row) continue; val = p - a[i][column]; a[i][column] = 0; for (j = column + 1; j < nmr_columns; ++j) a[i][j] = (a[i][j] + val * a[row][j]) % p; } } return bit_string; } anupq-3.3.0/src/consistency.c000644 000766 000024 00000014777 14355420571 016452 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A consistency.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #if !defined(CONSISTENCY_FILTER) /* process those consistency relations of weight wc not already used; the value of type determines the consistency relations processed; if type = 0 then all relations are processed; for Lie Algebra calculations, the type is always 3 */ void consistency( int type, int *queue, int *queue_length, int wc, struct pcp_vars *pcp) { register int *y = y_address; register int a; register int b; register int c; register int wta; /* weight of a */ register int a_start; /* start of range for a */ register int a_end; /* end of range for a */ register int b_start; register int b_end; register int c_start; register int c_end; register int jacobi_wt = wc; register int bound = jacobi_wt >> 1; register int constant; register int offset; register int entry; register int p1; register int class_end = pcp->clend; register int p_pcomm = pcp->ppcomm; register int p_power = pcp->ppower; register int structure = pcp->structure; register Logical metabelian = pcp->metabelian; register Logical compute; /* is it necessary to compute jacobi? */ #include "access.h" /* process the consistency equations (a^p) a = a (a^p) where 2 * WT(a) + 1 = jacobi_wt */ if (type == 0 || type == 1) { if (MOD(jacobi_wt, 2) != 0) { /* find range of a */ offset = class_end + bound - 1; a_start = y[offset] + 1; a_end = y[++offset]; for (a = a_start; a <= a_end; a++) { compute = (!metabelian || (metabelian && (PART2(y[structure + a]) == 0 || PART3(y[structure + a]) == 0))); if (compute) { jacobi(a, a, a, 0, pcp); if (pcp->redgen != 0 && pcp->m != 0) queue[++*queue_length] = pcp->redgen; } if (pcp->overflow || (pcp->complete != 0 && !pcp->multiplicator)) return; } } } /* process the consistency equations (b^p) a = b^(p - 1) (ba) and b (a^p) = (ba) a^(p - 1) where b > a and WT(b) + WT(a) + 1 = jacobi_wt */ if (type == 0 || type == 2) { for (wta = 1; wta <= bound; ++wta) { /* find range of a */ offset = class_end + wta - 1; a_start = y[offset] + 1; a_end = y[++offset]; /* find maximum value of b */ offset = class_end + jacobi_wt - wta - 2; b_end = y[offset + 1]; for (a = a_start; a <= a_end; ++a) { /* ensure b > a */ b_start = MAX(y[offset] + 1, a + 1); for (b = b_start; b <= b_end; ++b) { /* introduce Vaughan-Lee consistency check restriction */ if (wta == 1) { /* check if this jacobi relation has already been used in filling in the tail on (b, a)^p */ p1 = y[p_pcomm + b]; if (y[p1 + a] <= 0 || y[p1 + a] >= pcp->first_pseudo) { compute = (!metabelian || (metabelian && (PART2(y[structure + b]) == 0 || PART3(y[structure + b]) == 0))); if (compute) { jacobi(b, b, a, 0, pcp); if (pcp->redgen != 0 && pcp->m != 0) queue[++*queue_length] = pcp->redgen; } if (pcp->overflow || (pcp->complete != 0 && !pcp->multiplicator)) return; } } /* check if this jacobi relation has already been used in filling in the tail on (b, a^p) */ entry = y[p_power + a]; if (entry <= 0 || entry >= b) { compute = (!metabelian || (metabelian && (PART2(y[structure + a]) == 0 || PART3(y[structure + a]) == 0 || PART2(y[structure + b]) == 0 || PART3(y[structure + b]) == 0))); if (compute) { jacobi(b, a, a, 0, pcp); if (pcp->redgen != 0 && pcp->m != 0) queue[++*queue_length] = pcp->redgen; } if (pcp->overflow || (pcp->complete != 0 && !pcp->multiplicator)) return; } } } } } /* process the consistency equations (cb) a = c (ba), where c > b > a, WT(a) + WT(b) + WT(c) = jacobi_wt, and WT(a) = 1 */ if (type == 0 || type == 3) { /* first, find maximum values of a and b */ a_end = y[class_end + 1]; b_end = y[class_end + ((jacobi_wt - 1) >> 1)]; constant = class_end + jacobi_wt - 2; for (a = 1; a <= a_end; ++a) { for (b = a + 1; b <= b_end; ++b) { /* find range of c and ensure c > b */ offset = constant - WT(y[structure + b]); c_start = MAX(y[offset] + 1, b + 1); c_end = y[++offset]; /* where possible, avoid redoing those jacobis used to fill in tails on (c, (b, a)) */ if (!metabelian) { p1 = y[p_pcomm + b]; if (y[p1 + a] > 0) c_end = MIN(c_end, y[p1 + a]); } for (c = c_start; c <= c_end; ++c) { compute = (!metabelian || (metabelian && (PART2(y[structure + b]) == 0 || PART3(y[structure + b]) == 0 || PART2(y[structure + c]) == 0 || PART3(y[structure + c]) == 0))); if (compute) { jacobi(c, b, a, 0, pcp); if (pcp->redgen != 0 && pcp->m != 0) queue[++*queue_length] = pcp->redgen; } if (pcp->overflow || (pcp->complete != 0 && !pcp->multiplicator)) return; } } } } } #endif anupq-3.3.0/src/initialise_pga.c000644 000766 000024 00000002025 14355420571 017051 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A initialise_pga.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" #include "pga_vars.h" /* initialise the pga structure */ void initialise_pga(struct pga_vars *pga, struct pcp_vars *pcp) { pga->p = pcp->p; pga->q = pga->r = pga->s = 0; pga->fixed = 0; pga->Degree = 0; pga->nmr_of_descendants = 0; pga->available = NULL; pga->list = NULL; pga->map = NULL; pga->rep = NULL; pga->offset = NULL; pga->powers = NULL; pga->inverse_modp = NULL; } /* set up values for pga structure */ void set_values(struct pga_vars *pga, struct pcp_vars *pcp) { register int *y = y_address; pga->multiplicator_rank = y[pcp->clend + pcp->cc] - y[pcp->clend + pcp->cc - 1]; pga->nuclear_rank = pcp->newgen; } anupq-3.3.0/src/matrix.c000644 000766 000024 00000005040 14355420571 015374 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A matrix.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pq_functions.h" /* read an n x matrix, a */ void read_matrix(int **a, int n, int m) { register int i, j; for (i = 0; i < n; ++i) { for (j = 0; j < m - 1; ++j) read_value(FALSE, "", &a[i][j], 0); read_value(TRUE, "", &a[i][j], 0); } printf("\n"); } /* print an n x m matrix a */ void print_matrix(int **a, int n, int m) { register int i, j; for (i = 0; i < n; ++i) { for (j = 0; j < m; ++j) printf("%d ", a[i][j]); printf("\n"); } } /* modulo p, multiply the n x m matrix a by the m x q matrix b */ int **multiply_matrix(int **a, int n, int m, int **b, int q, int p) { register int i, j, k; int **product = allocate_matrix(n, q, 0, 1); for (i = 0; i < n; ++i) for (j = 0; j < q; ++j) { for (k = 0; k < m; ++k) product[i][j] += a[i][k] * b[k][j]; product[i][j] %= p; } return product; } int **transpose(int **a, int n, int m) { register int i, j; int **transpose = allocate_matrix(m, n, 0, 0); for (i = 0; i < m; ++i) for (j = 0; j < n; ++j) transpose[i][j] = a[j][i]; return transpose; } /* check if the n x n matrix a is the identity; start is its first index position */ Logical is_identity(int **a, int n, int start) { int identity = 1; register int i = start; register int j; while (i < n + start && identity) { j = start; while (j < n + start && identity) { identity = (i == j) ? a[i][j] == 1 : a[i][j] == 0; ++j; } ++i; } return identity; } /* check if each row of the n x n matrix a has a non-zero entry and whether its entries lie between 0 and p - 1; start is its first index position */ Logical valid_matrix(int **a, int n, int p, int start) { register int i, j; int non_zero = 0; Logical valid = TRUE; Logical first; for (i = start; i < n + start && valid; ++i) { first = TRUE; for (j = start; j < n + start && valid; ++j) { valid = (a[i][j] >= 0 && a[i][j] < p); if (a[i][j] > 0 && first) { ++non_zero; first = FALSE; } } } if (valid && non_zero == n) return TRUE; else return FALSE; } anupq-3.3.0/src/down_class.c000644 000766 000024 00000002371 14355420571 016230 0ustar00mhornstaff000000 000000 /**************************************************************************** ** *A down_class.c ANUPQ source Eamonn O'Brien ** *Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany *Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia ** */ #include "pq_defs.h" #include "pcp_vars.h" /* remove any class pcp->cc + 1 part on the value represented by y[ptr] */ void down_class(int ptr, struct pcp_vars *pcp) { register int *y = y_address; register int p1; register int p2; register int count; register int count1; register int lastg = pcp->lastg; #include "access.h" p1 = ptr; if (y[p1] >= 0) { if (y[p1] > lastg) y[p1] = 0; return; } p2 = -y[p1]; count = y[p2 + 1]; count1 = count; while (FIELD2(y[p2 + count1 + 1]) > lastg) { if (--count1 <= 0) { y[p2] = y[p1] = 0; return; } } if (count1 >= count) return; if (count == count1 + 1) /* only 1 generator of class pcp->cc + 1 found; mark it with a -1 header block */ y[p2 + count1 + 2] = -1; else { y[p2 + count1 + 2] = 0; y[p2 + count1 + 3] = count - count1 - 2; } y[p2 + 1] = count1; } anupq-3.3.0/standalone-doc/guide.tex000644 000766 000024 00000217542 14355420571 017663 0ustar00mhornstaff000000 000000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %W guide.tex ANUPQ standalone documentation Eamonn O'Brien %% %% %W Greg Gamble made a number of modifications: updated it for LaTeX2e; %W added a table of contents, cross-references and an examples appendix; %W updated the bibliography and Eamonn's address, improved some of the %W descriptions, re-arranged it slightly and updated it for changes made %W for Versions 1.5 and 1.6. The file needs to be latex-ed three times %W to obtain a correct `.dvi' file. %% \documentclass[12pt]{article} % %page layout - A4 paper is 210mm by 297mm. % \hoffset -25truemm \oddsidemargin=30truemm % \evensidemargin=25truemm % inner margin of 30mm, outer 25mm \textwidth=155truemm % \voffset -25truemm \topmargin=22truemm % top margin of 25mm \headheight=0truemm % no head \headsep=0truemm % no head \textheight=246truemm % bottom margin of 25mm, page nos. inside % \def\pq{the $p$-quotient implementation} \begin{document} \title{A guide to the ANU {\it p}-Quotient Program\\Version 1.9} \author{Eamonn O'Brien} \date{January 2012} \maketitle \tableofcontents \pagebreak \begin{abstract} \addcontentsline{toc}{section}{\numberline{}Abstract} The ANU {\it p}-Quotient Program (pq) provides access to implementations of an algorithm to construct a power-commutator presentation (pcp) for a {\it p}-group and of an algorithm to generate descriptions of {\it p}-groups. It also allows access to an implementation of an algorithm which can be used to construct a ``canonical" pcp for a $p$-group and via this construction it allows a user to determine whether two $p$-groups are isomorphic. The latter can be used to generate a description of its automorphism group. \end{abstract} \section{Program content}\label{sec:prog-content} The ANU {\it p}-Quotient Program (pq) is named for the $p$-quotient algorithm that it first implemented. Now, via menus it provides access to implementations of all the following algorithms: \begin{enumerate} \item A \emph{$p$-quotient algorithm} to compute a power-commutator presentation for a $p$-group. The algorithm implemented here is based on that described in Newman and O'Brien (1996), Havas and Newman (1980), and papers referred to there. Another description of the algorithm appears in Vaughan-Lee (1990b). A FORTRAN implementation of this algorithm was programmed by Alford \& Havas. The basic data structures of that implementation are retained. The current implementation incorporates the following features: \begin{enumerate} \item[a.] collection from the left (see Vaughan-Lee, 1990b); Vaughan-Lee's implementation of this collection algorithm is used in the program; \item[b.] an improved consistency algorithm (see Vaughan-Lee, 1982); \item[c.] new exponent law enforcement and power routines; \item[d.] closing of relations under the action of automorphisms; \item[e.] some formula evaluation. \end{enumerate} \item A \emph{$p$-group generation algorithm} to generate descriptions of $p$-groups. The algorithm implemented here is based on the algorithms described in Newman (1977) and O'Brien (1990). A FORTRAN implementation of this algorithm was earlier developed by Newman \& O'Brien. \item A \emph{standard presentation algorithm} used to compute a canonical power-commutator presentation of a $p$-group. The algorithm implemented here is described in O'Brien (1994). \item An algorithm which can be used to compute the \emph{automorphism group} of a $p$-group. The algorithm implemented here is described in O'Brien (1995). \end{enumerate} The pq program is written in traditional C and contains about 22000 lines of code. It was developed in a SUN OS environment and has been ported successfully to each of Solaris, AIX and Ultrix environments. The interface and input/output facilities of the program are rudimentary. Interfaces have been developed which allow parts of this program to be called from within the computational group theory system {\sf GAP}. This program is supplied as a package within {\sf GAP}. The link from {\sf GAP} to pq is described in the manual for {\sf GAP} 3.4 or in the manual found in the \texttt{doc} directory in the case of the {\sf GAP}~4 package {\sf ANUPQ}; all of the necessary code can be found in the \texttt{gap} directory of these distributions. The program is also distributed as part of Quotpic. Version 1.9 of the pq program (i.e.~the version you are currently reading the documentation for) is configured to call {\sf GAP}, at least version 4.5, to compute stabilisers when needed. The FORTRAN version of this program was known as the Nilpotent Quotient Program. \section{Installing pq}\label{sec:pq-install} To install pq just follow the instructions for installing the {\sf ANUPQ} package, i.e. in the directory above, do: \begin{quote} \verb|./configure|\\ \verb|make| \textit{TARGET} \verb|GAP=|\textit{GAPPATH} \end{quote} If you are running Linux you may omit \textit{TARGET}. The path \textit{GAPPATH} should be the path of a \emph{shell script} that runs {\sf GAP} 4 with packages {\sf AutPGrp} (at least version 1.5) and {\sf ANUPQ} (at least version 3.1) installed. If the {\sf ANUPQ} and/or {\sf AutPGrp} packages are not installed in the \texttt{pkg} directory of the {\sf GAP} 4 distribution, then the \texttt{-l} option (last line of the \emph{shell script} previously mentioned) \emph{must} be set to be a semicolon-separated list of paths of the main {\sf GAP} directory and the path of the \texttt{pkg} directory containing those packages of {\sf ANUPQ} and {\sf AutPGrp} that are missing from the {\sf GAP} 4 distribution \texttt{pkg} directory. The pq program only needs {\sf GAP} for computing stabilisers when you answer ``No'' (\texttt{0}) to the question ``\texttt{PAG-generating sequence for automorphism group?}''. If you neglect to add: ``\verb|GAP=|\textit{GAPPATH}'' to the \verb|make| command, never mind; the pq program first checks to see if the environment variable \verb|ANUPQ_GAP_EXEC| is set. For \texttt{csh} doing: \begin{quote} \verb|setenv ANUPQ_GAP_EXEC| \textit{GAPPATH} \end{quote} % is essentially equivalent to including: \verb|GAP=|\textit{GAPPATH} in the \verb|make| command. If you use a different shell just use the appropriate syntax for setting environment variables for your shell. A good test for checking that you have installed pq correctly is to try the example in Appendix~\ref{sec:pgrp-gen-eg}. \section{Organisation} Access to the implementations of each algorithm mentioned in Section~\ref{sec:prog-content} is provided via menus. The \emph{$p$-quotient algorithm} machinery is provided by the ``Basic Menu for {\it p}-Quotient Program" and the ``Advanced {\it p}-Quotient Menu"; access to the \emph{$p$-group generation algorithm} implementation is provided via the main ``Menu for {\it p}-Group Generation'' and the ``Advanced Menu for {\it p}-Group Generation"; and finally the \emph{standard presentation algorithm} and \emph{automorphism group algorithm} implementations may be accessed via the ``Standard Presentation Menu". By default, the pq program opens with the Basic Menu [for {\it p}-Quotient Program] (see~\ref{sec:basic-menu}), which provides ``basic'' options for the {\it p}-Quotient algorithm and via options \texttt{8} and \texttt{9} gives (immediate) access to two further menus, namely the Advanced {\it p}-Quotient Menu (see~\ref{sec:advanced-pq-menu}) and the (main) Menu for {\it p}-Group Generation (see~\ref{sec:pgrp-gen-main-menu}), respectively. The main Menu for {\it p}-Group Generation provides access to a further menu: the Advanced Menu for {\it p}-Group Generation (see~\ref{sec:pgrp-gen-advanced-menu}). If the pq program is invoked with the \texttt{-i} switch (see Section~\ref{sec:runtime}), the program opens with the Standard Presentation Menu (see Section~\ref{sec:stnd-pres-menu}) which gives one immediate access to the standard presentation and automorphism group machinery and via option \texttt{7} access to the Basic Menu and hence the other menus. To cleanly exit the pq program one must retrace one's path through the menus (by typing the number of the option that exits each menu or \texttt{0}). Exiting the menu that the pq program opened with (either the Basic Menu or the Standard Presentation Menu), exits the pq program. The Basic Menu, the main Menu for {\it p}-Group Generation and the Standard Presentation Menu are designed particularly for the new or occasional user; levels of control by the user are low, but there is little attendant risk of obtaining inaccurate information. The Advanced menus are designed for the knowledgeable user with specialised needs; they allow the user to make almost all decisions, provide little protection and if pre-requisite information for an option to succeed (e.g. a pc presentation for the group) is not in place, the pq will invariably exit horribly. Each menu is discussed in more detail later. See Section~\ref{sec:conventions} for the conventions that apply to these menus. \pagebreak \section{Runtime parameters}\label{sec:runtime} The program may be invoked with the following runtime parameters: \enlargethispage*{1\baselineskip} \begin{description} % An idea which may or may not be implemented %\item[\texttt{-2}\hspace*{1em}] % Gives the experimental Level 2 (non-menu) interface, which is % being designed to supersede the usage of the other runtime parameter % switches (except for \texttt{-v}) when pq is used with {\sf GAP} 4. \item[\texttt{-b}\hspace*{1em}] A ``basic" format can be used to input a group presentation. See~\ref{sec:basic-fmt}. \item[\texttt{-G}\hspace*{1em}] This option is used by {\sf GAP} 4. It is essentially equivalent to setting the switches \texttt{-g -i -k} simultaneously, except that it uses {\sf GAP}'s iostream to direct requests to {\sf GAP} to compute stabilisers when necessary. \item[\texttt{-g}\hspace*{1em}] If groups are generated using $p$-group generation, then their presentations are written to a file in a {\sf GAP} compatible format. The name of the file may be selected using the \texttt{-w} option; the default is \texttt{GAP\_library}. \item[\texttt{-i}\hspace*{1em}] This provides access to the Standard Presentation Menu, which can be used to construct the standard presentation of a given $p$-group. \item[\texttt{-k}\hspace*{1em}] The presentation may be defined and supplied using certain key words. Examples of this format can be found in those files in the \texttt{examples} directory whose names commence with \texttt{keywords\_}. This option cannot be used with \texttt{-b}. \item[\texttt{-s} {\it integer}]\ \\ All computations of power-commutator presentations occur in an integer array, $y$ -- the space of this array, by default 1000000, is set to {\em integer}. See the discussion on strategies to minimise time and space later in this document. \item[\texttt{-v}\hspace*{1em}] Gives the version of the ANU {\it p}-Quotient program and exits. \item[\texttt{-w} {\it file}]\ \\ Group descriptions are written in {\sf GAP} format to {\em file}. \texttt{-g} must be used in conjunction with this parameter. \end{description} If the program is compiled using the \texttt{RUN\_TIME} option, then there are two additional runtime options: \begin{description} \item[\texttt{-c}\hspace*{1em}] The maximum exponent-$p$ class to be considered. \item[\texttt{-d}\hspace*{1em}] A bound on the number of defining generators. \end{description} \pagebreak \section{Conventions}\label{sec:conventions} \subsection{Menu Conventions} The following conventions apply for all menus. \begin{itemize} \item Typing the integer identifying an option selects that option. \item At a number of points in running the program, you will be asked questions or prompted for input. A non-zero integer response signifies a positive response to the question; a response of \texttt{0} (zero) is a negative response. In this guide, a ``Yes" means a non-zero integer response; a ``No" is a zero response. \item For each menu, the option \texttt{-1} lists the menu, and \texttt{0} exits the menu. To cleanly exit the pq program one must retrace one's path through the menus (by typing the number of the option that exits each menu or \texttt{0}). Exiting the menu that the pq program opened with (either the Basic Menu or the Standard Presentation Menu), exits the pq program. \item If the program cannot open a file for any reason, it simply reports this and if not running interactively exits. \item Input from the first occurrence of a ``\texttt{\#}" symbol to the end of that line is interpreted as a comment and is ignored. \end{itemize} Language used in the menus for the construction of the pcp follows that used in Havas \& Newman (1980) and Newman \& O'Brien (1996); that in the {\it p}-group generation menus follows O'Brien (1990); that in the standard presentation menu follows O'Brien (1994). \subsection{Word input}\label{sec:word-input} The performance of the program is significantly enhanced if it can store the defining relations in their unexpanded form. It is currently only possible to store a supplied relation in its unexpanded form if the relation is either a power OR a commutator, and the components of the power or commutator are only defining generators or their inverses. Hence, it is frequently appropriate for the user to introduce redundant generators into the supplied presentation. There are two formats available for supplying generators and relations: the ``default format'' (see Section~\ref{sec:def-fmt}) and the ``basic format'' (see Section~\ref{sec:basic-fmt}). Examples of the usage of both formats can be found in the \texttt{examples} directory. \subsubsection{The default format for word input}\label{sec:def-fmt} Under the default format, a user is prompted for a list of generators, which must be supplied as a set. The user is then prompted for a defining set of relations, again supplied as a set. Any combination of relations and relators may be supplied. Note, however, you may NOT use relations of the form $u = v = w$. Relations are separated by commas, $\wedge$ is used for powers and conjugation, \texttt{[} and \texttt{]} are used to indicate the beginning and end of a commutator, and \texttt{1} is the identity of the group. The following are examples of valid input for relations: \newcommand{\wedg}{$\mathtt{\wedge}$} \begin{flushleft} \quad\verb|{x |{\wedg}\verb| 5 = [x, y, y], z |{\wedg}\verb| x = 1, z * y * x * z |{\wedg}\verb| -1 = 1}|\\ \quad\verb|{a3 * [a2, a1], a4 |{\wedg}\verb| a1 * a3 |{\wedg}\verb| a2 * [a2, a1 |{\wedg}\verb| -1, a4, a1 |{\wedg}\verb| 7] = 1}| \end{flushleft} \subsubsection{The basic format for word input}\label{sec:basic-fmt} The basic format is selected at start-up via the \texttt{-b} switch (see Section~\ref{sec:runtime}). In the pcp, the defining generators and the pcp generators are labeled as positive integers; in each case they commence at 1. Inverses of generators are labelled by the corresponding negative number. The format for word input is the following: \begin{displaymath} \textit{Exp}\; \textit{Gen}_1\; \textit{Gen}_2 \ldots \mathtt{;} \end{displaymath} where ``\textit{Exp}" is the exponent; if $\textit{Gen}_i$ is a positive integer, it represents the corresponding generator of the group; if it is a negative integer, it represents the inverse of that generator. Word input is terminated by a ``\texttt{;}". Entries in the word can be separated by any positive number of spaces. Defining relations may only be supplied as relations -- not as relators. Each side of the relation is supplied as a word using the above format. Where the input is a power of a left-normed commutator, the following simpler format may be used \begin{displaymath} \textit{Exp}\; \texttt{[} \textit{Gen}_1\; \textit{Gen}_2 \ldots \texttt{];} \end{displaymath} where \texttt{[} and \texttt{]} are used to indicate the beginning and end of the commutator. As for the default format, entries in the commutator can be separated by an optional number of spaces. The identity word is indicated by supplying a word with exponent \texttt{0} -- ``\texttt{0;}" is sufficient. Examples of acceptable input are the following: \begin{itemize} \item The input ``\texttt{5 2 1 -3 4;}" represents the word $(2 \times 1 \times 3^{-1} \times 4)^5$. \item The input ``\texttt{3 [2 1 1 3];}" represents the commutator power $[2,\; 1,\; 1,\; 3]^3$. \end{itemize} Under the basic format, the program only accepts input of either type in a word; you may not combine them. This may affect how you supply the defining relations for the presentation. \subsubsection{Advanced menu word input} Words are supplied as input to options to the Advanced menus on a number of occasions. Usually, these are words in the pcp generators of the group. Under the default format, the $n$ pcp generators of the group are, for convenience, automatically labelled as $\mathtt{x1, x2, \ldots, x}n$. All words in the pcp generators are then supplied as words in $\mathtt{x1, \ldots, x}n$, using the format prescribed above for the defining relators. Word input is terminated by a ``\texttt{;}". A few options allow input involving the defining generators. The $m$ defining generators of the group are also automatically labelled as $\mathtt{x1, x2, \ldots, x}m$. All words in the defining generators are then supplied as words in $\mathtt{x1, \ldots, x}m$, using the format prescribed above for the defining relators. As before, word input is terminated by a ``\texttt{;}". If you use the basic input format, then all words are supplied as specified in the basic format discussion. \subsection{Input and output facilities} Currently, facilities exist to save the computed presentation to file and to later restore and restart the computation. The files are saved and restored using the ``\texttt{fread}" and ``\texttt{fwrite}" facilities, respectively. For both save and restore, the user supplies a name for the file, which can be any valid (UNIX or VMS) name. In the case of writing to file, the program does not query the user before overwriting an existing file -- it is the user's responsibility to prevent such situations from occurring. \section{The {\it p}-Quotient implementation} \subsection{Basic Menu for {\it p}-Quotient Program}\label{sec:basic-menu} The default opening menu obtained on running the program is listed below. \begin{verbatim} Basic Menu for p-Quotient Program ---------------------------------- 1. Compute pc presentation 2. Save presentation to file 3. Restore presentation from file 4. Display presentation of group 5. Set print level 6. Calculate next class 7. Compute p-covering group 8. Advanced p-quotient menu 9. (Main) menu for p-group generation 10. Exit from p-quotient program \end{verbatim} We now discuss each of these options. \begin{description} \item[\texttt{1.\ Compute pc presentation}]\ \\ When you select this option, you will be given the following sequence of prompts for input. [If you start the pq program with the \texttt{-k} switch (see Section~\ref{sec:runtime}), you will not be prompted; instead you must supply input in the form: \begin{quote} \textit{keyword} \textit{value} \end{quote} where \textit{value} is the input you would otherwise have been prompted for. The last input for this option must also be terminated by a semicolon (\texttt{;}). Some data have default values if omitted, and there is no restriction on the order in which the data are supplied. The keyword \textit{keyword} needed and default value if there is one, for the corresponding \texttt{-k} input is given in square brackets after describing each prompt (but not after describing the prompts obtained when the pq program is called with \texttt{-b} --- the \texttt{-k} and \texttt{-b} switches cannot be used together). Actually, only the first 3 letters of each keyword are significant; so, in fact, \texttt{prime}, for example, may be abbreviated to \texttt{pri}.] % \begin{description} \item[\texttt{Input group identifier:}]\ \\ you may supply any sequence of characters, excluding spaces, as a valid identifier for the group. [keyword: \texttt{name}, default: \texttt{G}.] \item[\texttt{Input prime:}]\ \\ supply the prime $p$ used in computing the {\it p}-quotient. [keyword: \texttt{prime}.] \item[\texttt{Input maximum class:}]\ \\ supply the maximum exponent-{\it p} class of the quotient to be constructed. [keyword: \texttt{classbound}, default: \texttt{10}.] \item[\texttt{Input print level:}]\ \\ see option \texttt{5} below. [keyword: \texttt{outputlevel}, default: \texttt{1}.] \end{description} % If the default format is used (i.e.\ pq was not called with the \texttt{-b} switch) then you will be prompted as follows. % \begin{description} \item[\texttt{Input generating set}]\hspace*{-0.5em}\verb| (in { }):|\\ supply generating set. [keyword: \texttt{generators}.] \item[\texttt{Input defining set of relations}]\hspace*{-0.5em}\verb| (in { }):|\\ supply defining set of relations. [keyword: \texttt{relators}, default: \verb|{}|.] \end{description} % Otherwise, if the basic format is used (i.e.\ pq was called with the \texttt{-b} switch; see Section~\ref{sec:runtime}), you will not be prompted; instead you must supply input in the) then you will be given the following prompts. % \begin{description} \item[\texttt{Input number of generators:}]\ \\ supply number of defining generators. \item[\texttt{Input number of relations:}]\ \\ supply number of defining relations. \end{description} % Then (i.e.\ with or without the \texttt{-b} switch) you will be prompted % \enlargethispage*{1\baselineskip} \begin{description} \item[\texttt{Input exponent law (0 if none):}]\ \\ if the group is to satisfy a particular exponent law, supply a positive value for that exponent. [keyword: \texttt{exponentlaw}, default: \texttt{0}.] \end{description} % In the basic format case, you will finally also be prompted to input each relation for the group (if any). \item[\texttt{2.\ Save presentation to file}]\ \\ prompts for file name, saves group presentation to file. \item[\texttt{3.\ Restore presentation from file}]\ \\ prompts for file name, restores group presentation from that file if it exists. \item[\texttt{4.\ Display presentation of group}]\ \\ displays group presentation; detail depends on print level; if level is one, then display order of group, otherwise display full pcp. \item[\texttt{5.\ Set print level}]\ \\ ranges from 0, providing no output, to 3; 1, the default, provides minimal output. \item[\texttt{6.\ Calculate next class}]\ \\ calculates pcp for quotient having one class greater than the class of the existing group. \item[\texttt{7.\ Compute p-covering group}]\ \\ \item[\texttt{8.\ Advanced p-quotient menu}]\ \\ provides access to the ``Advanced Menu" (intended for experts) for user manipulation of the presentation. \item[\texttt{9.\ (Main) menu for p-group generation}]\ \\ provides access to the main menu for {\it p}-group generation. \item[\texttt{10.\ Exit from p-quotient program}]\ \\ causes the pq program to exit, or if pq was called with the \texttt{-i} switch (see Section~\ref{sec:runtime}) exits to the Standard Presentation Menu. Selecting option \texttt{0} performs the same function. \end{description} \subsection{Advanced {\it p}-Quotient Menu}\label{sec:advanced-pq-menu} The advanced {\it p}-quotient menu, given below, is selected by choosing option \texttt{8} from the Basic Menu (see~\ref{sec:basic-menu}). \begin{verbatim} Advanced p-Quotient Menu ------------------------- 1. Do individual collection 2. Solve the equation ax = b for x 3. Calculate commutator 4. Display group presentation 5. Set print level 6. Set up tables for next class 7. Insert tails for some or all classes 8. Check consistency for some or all classes 9. Collect defining relations 10. Carry out exponent checks 11. Eliminate redundant generators 12. Revert to presentation for previous class 13. Set maximal occurrences for pcp generators 14. Set metabelian flag 15. Carry out an individual consistency calculation 16. Carry out compaction 17. Carry out echelonisation 18. Supply and/or extend automorphisms 19. Close relations under automorphism actions 20. Print structure of a range of pcp generators 21. Display automorphism actions on generators 23. Collect word in defining generators 24. Compute commutator of defining generators 25. Write presentation to file in GAP format 26. Write compact description of group to file 27. Evaluate certain formulae 28. Evaluate action specified on defining generators 29. Evaluate Engel (p - 1)-identity 30. Process contents of relation file 31. Exit to basic menu \end{verbatim} \section{The {\it p}-Group Generation implementation} \subsection{Required input} The required input is the {\it p}-covering group of the starting group, together with a description of the automorphism group of the {\it p}-covering group. Before you commence to construct descendants, you should construct or restore its {\it p}-covering group, using the appropriate options of the Basic Menu (see~\ref{sec:basic-menu}). It is the user's responsibility to do this -- no check is performed. \subsection{The automorphism group description}\label{sec:autgp-desc} You must also supply a description of its automorphism group, which is done by selecting option \texttt{1} of either of the menus for {\it p}-group generation (see~\ref{sec:pgrp-gen-main-menu} or~\ref{sec:pgrp-gen-advanced-menu}). This description is the action of each automorphism on each of the pcp generators of the Frattini quotient of the group. The action is described by a vector of exponents -- the length of the vector is the number of pcp generators of the group, its entries are the powers of each of these generators which occur in the image. Where the automorphism group is soluble, a PAG-generating system should be supplied which works up a composition series for the group via cyclic factors of prime order. In such cases, the calculations may be carried out completely within pq. If the soluble group machinery is selected by the user, but a PAG-generating system is not supplied, then the program will give wrong information. If the automorphism group is insoluble or a PAG-generating sequence is not supplied, a call is made by the program to one {\sf GAP}, which computes stabilisers of particular orbit representatives. If the automorphism group of any of the intermediate (reduced) {\it p}-covering groups is found to be soluble, a PAG-generating sequence is computed by {\sf GAP} and handed back to pq. The soluble machinery is now automatically invoked for the rest of the computation. \subsection{Saving group descriptions} The constructed groups of a particular class, $c$, are saved to a file, whose name is obtained by concatenating: \textit{starting-group-identifier} and $c$, where \textit{starting-group-identifier} is the group identifier defined at option \texttt{1} of the Basic Menu (see Section~\ref{sec:basic-menu}) e.g.~if you use the \texttt{-k} switch (see Section~\ref{sec:runtime}) when you started the pq program and settled for the default group identifier \texttt{G} then for class 2, the groups will be saved to a file with name: \texttt{G\_class2}. As before, the program does not query the user before overwriting an existing file. \subsection{The (Main) Menu for {\it p}-Group Generation} \label{sec:pgrp-gen-main-menu} The main Menu for {\it p}-Group Generation, given below, is selected by choosing option \texttt{9} from the Basic Menu (see~\ref{sec:basic-menu}). \pagebreak \begin{verbatim} Menu for p-Group Generation ----------------------------- 1. Read automorphism information for starting group 2. Extend and display automorphisms 3. Specify input file and group number 4. List group presentation 5. Construct descendants 6. Advanced p-group generation menu 7. Exit to basic menu \end{verbatim} We now describe the options given by this menu. \begin{description} \item[\texttt{1.\ Read automorphism information for starting group}]\ \\ first prompts for the following: \begin{description} \item[\texttt{Input the number of automorphisms:}]\ \\ You must provide the number of automorphisms generating the automorphism group of the starting group. Then you will be prompted for the action of each automorphism on the pcp generators of the Frattini quotient of the group, after which you will be prompted: \item[\texttt{Input number of soluble generators for automorphism group:}]\ \\ If you enter a positive integer $n$ you will then be prompted for the relative order of each of those $n$ automorphisms. \end{description} % \item[\texttt{2.\ Extend and display automorphisms}]\ \\ compute the extensions of these automorphisms to act on the pcp generators of the {\it p}-covering group and display the results. \item[\texttt{3.\ Specify input file and group number}]\ \\ prompts for the input file name and the group number. \item[\texttt{4.\ List group presentation}]\ \\ display at output level 3 the presentation for the group. \item[\texttt{5.\ Construct descendants}]\ \\ we discuss this option in detail in Section~\ref{sec:constr-desc}. \item[\texttt{6.\ Advanced p-group generation menu}]\ \\ provides access to the ``Advanced Menu" for user-controlled construction and manipulation. \item[\texttt{7.\ Exit to basic menu}]\ \\ returns the user to the Basic Menu (see~\ref{sec:basic-menu}). Selecting option \texttt{0} performs the same function. \end{description} \subsection{Construct descendants option}\label{sec:constr-desc} Here we discuss option \texttt{5} of the (main) {\it p}-group generation menu (see~\ref{sec:pgrp-gen-main-menu}). If you select this option you receive a number of questions or prompts for input. Those prompts/questions are as follows. \begin{description} \item[\texttt{Input class bound on descendants:}]\ \\ you must supply a positive integer greater than the class of the starting group, and which is an upper bound on the class of the descendants constructed. \item[\texttt{Construct all descendants?}]\ \\ If you enter a ``Yes" response (by entering a non-zero integer) you are asked: \begin{description} \item[\texttt{Set an order bound for descendants?}]\ \\ If you answer ``Yes" you are further prompted (if you answer ``No" (i.e.\ \texttt{0}) you are not so prompted): \begin{description} \item[\texttt{Input order bound on descendants:}]\ \\ and the integer order bound you input will apply in addition to the class bound selected. \end{description} \end{description} If you responded ``No" to the ``\texttt{Construct all descendants?}'' query and the class increase is one you are prompted: \begin{description} \item[\texttt{Input step size:}]\ \\ and a positive integer is expected. \end{description} If you responded ``No" to the ``\texttt{Construct all descendants?}'' query and the class increase is greater than one you are prompted as follows: \begin{description} \item[\texttt{Constant step size?}]\ \\ If you answer ``Yes" you are prompted: \begin{description} \item[\texttt{Input step size:}]\ \\ and a positive integer is expected. \end{description} If you answer ``No" to ``\texttt{Constant step size?}'' you are prompted: \begin{description} \item[\texttt{Input $n$ step sizes:}]\ \\ for some integer $n$, and you must enter $n$ positive integers separated by spaces. \end{description} \end{description} \item[\texttt{PAG-generating sequence for automorphism group?}]\ \\ This determines the algorithm used in constructing the orbits and stabilisers of representative allowable subgroups (see~\ref{sec:min-time-space}). Whether you answer ``Yes" or ``No" you are then asked: \item[\texttt{Default algorithm?}]\ \\ A ``Yes" here constructs immediate descendants using the smallest possible characteristic initial segment subgroups in the {\it p}-multiplicator. This minimises the degree of the permutation group constructed. If you answer ``No", then you will be prompted/asked: \begin{description} \item[\texttt{Rank of the initial segment subgroup?}]\ \\ If you want to proceed as in the default, respond ``\texttt{0}"; otherwise any positive value is accepted. If the value is larger than the rank of the {\it p}-multiplicator, the program takes this upper bound as the selected value. The initial segment subgroup determined by this response is characteristically closed by the program. If your answer to ``\texttt{PAG-generating sequence for automorphism group?}" was a ``Yes", then you will receive the following further question. \begin{description} \item[\texttt{Space efficient computation?}]\ \\ By default, all of the permutations constructed are stored. If you answer ``Yes", at any one time only one permutation is stored, consequently reducing the amount of space significantly. However, the time taken in computing the automorphism group of each descendant is also significantly increased. \end{description} Then you will prompted/asked the following: \begin{description} \item[\texttt{Completely process terminal descendants?}]\ \\ By default, automorphism groups are computed for and descriptions of capable groups only are saved to file. If you wish to compute automorphism groups and save descriptions of all descendants to file, then answer ``Yes". In this case, for both terminal and capable groups, the automorphism group is saved to file; if capable, the pcp of the {\it p}-covering group is saved; if terminal, the pcp for the group. \item[\texttt{Input exponent law (0 if none):}]\ \\ If you wish to construct only those immediate descendants which satisfy a particular exponent law, supply that exponent; if you do not wish to enforce an exponent law, supply \texttt{0}. \item[\texttt{Enforce metabelian law?}]\ \\ If you answer ``Yes", you seek to ensure that all of the immediate descendants constructed have the following property -- if any one of them is used as a starting group to a later iteration, only the metabelian immediate descendants (if any) of this group are constructed. For this requirement to be enforceable, the starting group for this iteration must also have that property. To ensure that the starting group has that property, construct its $p$-covering group after having first set the metabelian flag via option \texttt{14} of the Advanced $p$-Quotient Menu (see~\ref{sec:advanced-pq-menu}). \end{description} \end{description} \item[\texttt{Do you want default output?}]\ \\ If you answer ``Yes", minimal output is displayed for each group: its identifier, the ranks of its {\it p}-multiplicator and nucleus, the number of its immediate descendants of each order, and, if there are any, the number of its capable immediate descendants. For many applications, the default output obtained by ``Yes" is sufficient. If not, then by answering ``No" you are asked whether you want the default output for each of the following categories: permutation group, orbits, group descriptions, automorphism group descriptions, or if you want an algorithm trace. Answering ``No" to any of these questions (except for the last) leads to further questions, each requiring a ``Yes"/``No" answer, about what additional information you desire (or don't want) for the category. The following are the questions that result from a ``No" response to ``\texttt{Do you want default output?}": \enlargethispage*{1\baselineskip} \begin{description} \item[\texttt{Do you want default permutation group output?}]\ \\ A ``No" leads to the further questions: \begin{description} \item[\texttt{Print degree of permutation group?}] \item[\texttt{Print extended automorphisms?}] \item[\texttt{Print automorphism matrices?}] \item[\texttt{Print permutations?}] \end{description} \item[\texttt{Do you want default orbit output?}]\ \\ A ``No" leads to the further questions: \begin{description} \item[\texttt{Summary of orbit information?}] \item[\texttt{Complete listing of orbits?}] \end{description} \item[\texttt{Do you want default group output?}]\ \\ A ``No" leads to the further questions: \begin{description} \item[\texttt{Print standard matrix of allowable subgroup?}] \item[\texttt{Presentation of reduced p-covering groups?}] \item[\texttt{Presentation of immediate descendants?}] \item[\texttt{Print nuclear rank of descendants?}] \item[\texttt{Print p-multiplicator rank of descendants?}] \end{description} \item[\texttt{Do you want default automorphism group output?}]\ \\ A ``No" leads to the further questions: \begin{description} \item[\texttt{Print commutator matrix?}] \item[\texttt{Automorphism group description of descendants?}] \item[\texttt{Automorphism group order of descendants?}] \end{description} \item[\texttt{Do you want algorithm trace output?}]\ \\ This last question is designed to permit one to trace the intermediate stages of the algorithm. \end{description} \end{description} After the above dialogue, the pq binary will commence constructing descendants. At the commencement of the application, each starting group is checked to determine whether it meets the selected step size order, and class criteria. If it does not, a message is displayed stating that this starting group is invalid. %\newpage \enlargethispage*{2\baselineskip} \subsection{Advanced Menu for {\it p}-Group Generation} \label{sec:pgrp-gen-advanced-menu} \begin{verbatim} Advanced Menu for p-Group Generation ------------------------------------- 1. Read automorphism information for starting group 2. Extend and display automorphisms 3. Specify input file and group number 4. List group presentation 5. Carry out intermediate stage calculation 6. Compute definition sets & find degree 7. Construct permutations of subgroups under automorphisms 8. Compute and list orbit information 9. Process all orbit representatives 10. Process individual orbit representative 11. Compute label for standard matrix of subgroup 12. Compute standard matrix for subgroup from label 13. Find image of allowable subgroup under automorphism 14. Find rank of closure of initial segment subgroup 15. List representative and orbit for supplied label 16. Write compact descriptions of generated groups to file 17. Find automorphism classes of elements of vector space 18. Exit to main p-group generation menu \end{verbatim} \subsection{Strategies to minimise time and space}\label{sec:min-time-space} Where a PAG-generating sequence is supplied (i.e.\ the question ``\texttt{PAG-generating sequence for automorphism group?}" is answered with a ``Yes"; see~\ref{sec:constr-desc}), the minimum space requirement is achieved by supplying ``\texttt{0}" and ``Yes", respectively, to the questions: ``\texttt{Rank of the initial segment subgroup?}" and ``\texttt{Space efficient computation?}". This space efficiency is achieved at the cost of some additional time in computing the stabilisers of orbit representatives. However, if you simply wish to compute orbits, it is the best overall strategy, both from space and time considerations. The ``efficient space" option is currently available only where a PAG-generating sequence is supplied. In general, the most efficient time performance is obtained by taking the default algorithm (answering ``Yes" to ``\texttt{Default algorithm?}; see~\ref{sec:constr-desc}). This also gives significant space saving over most other strategies. As mentioned earlier, the workspace size used in computing pcps -- that is, the size of the array $y$ -- may be passed as a command line argument to the program at invocation. Much of the storage used in the implementation of {\it p}-group generation is separate from that allocated for $y$. Hence, if the program is to be used to generate group descriptions, it is probably sensible to invoke the program with a workspace size of no more than $100\;000$ rather than its default value, \texttt{PQSPACE} (which is defined in the header file, \texttt{constants.h}). See also the discussion on this point in the \texttt{README} file. \section{The Standard Presentation and\\ Automorphism Group implementation} \label{sec:stnd-pres-menu} The Standard Presentation Menu allows a user to input a finite presentation for a group, to construct a ``standard" presentation for a specified $p$-quotient of the group, and also to construct a description of the automorphism group of the $p$-group. To access this menu, you need to run the pq program with the \texttt{-i} run-time parameter switch (see~\ref{sec:runtime}). The appropriate way to view the standard presentation algorithm is the following. The pcp constructed by supplying a finite presentation to the $p$-quotient algorithm depends on the supplied presentation. The standard presentation of a $p$-group obtained using the standard presentation algorithm is independent of the supplied presentation. Hence it allows us to determine whether two $p$-groups are isomorphic. In its most general form, the ``standard" presentation of a $p$-group is obtained by constructing a description of this group using the $p$-group generation algorithm. The standard presentation of a class 1 $p$-quotient is identical to that obtained from the $p$-quotient. A user can choose to take the presentation returned from the $p$-quotient implementation to class $k$ as an acceptable ``standard" presentation up to that class and then proceed to standardise the presentation from class $k + 1$ to some desired later class. This is particularly relevant if the user is seeking to verify that two groups are isomorphic. It may turn out that the two pcps constructed by \pq\ are identical up to class $k$. Since the standardisation procedure is significantly more expensive than a call to \pq, it makes sense in such situations to begin to standardise only from class $k + 1$ onwards. However, the user must supply as input a description of the automorphism group of the class $k$ $p$-quotient -- which may be more difficult to obtain for larger $k$. In checking for isomorphism, it also makes sense to standardise each of the presentations, class by class. The standard presentations at the end of each class should be compared -- if they are distinct, then the groups are non-isomorphic. In order to facilitate this, the program writes a file containing necessary details of the standard presentation and the automorphism group of the group up to the end of the specified class -- this file can be used as input to the program later to continue the standardisation procedure. A generating set for a supplement to the inner automorphisms of the group is stored there; each generator is described by an $n \times n$ matrix whose exponents represent the image of each of the $n$ pcp generators of the standard presentation. \begin{verbatim} Standard Presentation Menu ----------------------------- 1. Supply start information 2. Compute standard presentation to supplied class 3. Save presentation to file 4. Display presentation 5. Set print level for construction 6. Compare two presentations stored in files 7. Call basic menu for p-Quotient program 8. Compute the isomorphism 9. Exit from program \end{verbatim} We now describe each of these options. \begin{description} \item[\texttt{1.\ Supply start information}]\ \\ you must supply a finite presentation for the $p$-group; the queries are identical to that used in option \texttt{1} of the Basic Menu [for $p$-Quotient Program] (see~\ref{sec:basic-menu}). All of the valid formats for supplying a presentation can be accessed, using the \texttt{-b} or \texttt{-k} run-time switches (see Section~\ref{sec:runtime}). If the class supplied is $c$, then standardisation (selected under option \texttt{2}) begins at class $c + 1$ only. In general the supplied value for the class will be one -- however, see the preceding discussion. A pcp for the class $c$ $p$-quotient of the group is now computed using the \pq. \item[\texttt{2.\ Compute standard presentation to supplied class}]\ \\ If, when selecting this option, you haven't previously selected option \texttt{1} to supply a finite presentation, then you will be prompted: % \begin{description} \item[\texttt{Enter input file name for group information:}]\ \\ The assumption is that such a file containing the presentation and automorphism information for the $p$-group was generated from a previous run of the Standard Presentation algorithm. If you don't supply a valid filename the pq program bails out of option \texttt{2}. \end{description} % Whether or not you have previously selected option \texttt{1}, you will then be prompted: \begin{description} \item[\texttt{Enter output file name for group information:}]\ \\ The file whose name you choose can be used as input later to continue the construction of the standard pcp. Then you will be asked: \item[\texttt{Standardise presentation to what class?}]\ \\ The start class is one greater than the class of the $p$-quotient selected using option \texttt{1} or that stored on the input file. Here you should specify the end class for the standardisation procedure. \end{description} If you selected option \texttt{1} to supply a finite presentation, you will now be prompted for automorphism information -- in exactly the same manner as under option \texttt{1} of the main Menu for $p$-Group Generation (see~\ref{sec:pgrp-gen-main-menu}), and then also asked whether the supplied description is a PAG-generating sequence or not: \begin{description} \item[\texttt{PAG-generating sequence for automorphism group?}] \end{description} \item[\texttt{3.\ Save presentation to file}]\ \\ \item[\texttt{4.\ Display presentation}]\ \\ print out the standard presentation to the current class. \item[\texttt{5.\ Set print level for construction}]\ \\ ranges from 0 to 2. At print level 0, only timing information is printed. At print level 1, the standard presentation at the end of each class is also printed. At print level 2, full detail of the construction is reported. The default print level is 1. \item[\texttt{6.\ Compare two presentations stored in files}]\ \\ supply the names of two data files containing these presentations; a check will be run to determine if the presentations are identical. This comparison facility may be applied to any two pcps -- not just standard ones. \item[\texttt{7.\ Call basic menu for p-Quotient program}]\ \\ provides access to the Basic Menu for $p$-Quotient program (see~\ref{sec:basic-menu}). \item[\texttt{8.\ Compute the isomorphism}]\ \\ computes the mapping from the user-supplied generators to the generators for the standard presentation. \item[\texttt{9.\ Exit from program}]\ \\ causes the pq program to exit. Selecting option \texttt{0} performs the same function. \end{description} Various files, all having prefixes ``\texttt{ISOM\_}", are first created and then deleted by pq while executing the standard presentation algorithm. \section{Warning} Pay attention to the results, and where possible confirm their correctness with other established sources. \pagebreak \appendix \section{Examples} \subsection{A Basic Menu example} The following example exercises options within the Basic Menu (see~\ref{sec:basic-menu}). When the pq program is used without any switches (see Section~\ref{sec:runtime}), it opens with the Basic Menu. \begin{verbatim} Basic Menu for p-Quotient Program ---------------------------------- 1. Compute pc presentation 2. Save presentation to file 3. Restore presentation from file 4. Display presentation of group 5. Set print level 6. Calculate next class 7. Compute p-covering group 8. Advanced p-quotient menu 9. (Main) menu for p-group generation 10. Exit from p-quotient program Select option: 1 #we want to enter a pc presentation Input group identifier: 2gp #something meaningful Input prime: 2 #it's a 2-group Input maximum class: 6 Input print level (0-3): 1 #minimal output Input generating set (in { }): {a, b} Input defining set of relations (in { }): { [b, a, a], (a * b * a)^4 } Input exponent law (0 if none): 0 Lower exponent-2 central series for 2gp Group: 2gp to lower exponent-2 central class 1 has order 2^2 Group: 2gp to lower exponent-2 central class 2 has order 2^5 Group: 2gp to lower exponent-2 central class 3 has order 2^8 Group: 2gp to lower exponent-2 central class 4 has order 2^11 Group: 2gp to lower exponent-2 central class 5 has order 2^15 Group: 2gp to lower exponent-2 central class 6 has order 2^19 Computation of presentation took 0.02 seconds Select option: 2 #save option Enter output file name: 2GP #file name Presentation written to file Select option: 0 #exit Exiting from ANU p-Quotient Program Total user time in seconds is 0.02 \end{verbatim} This is essentially example \texttt{2gp} in the \texttt{examples} directory (except some of our \texttt{\#}\textit{comment}s are different). If the binary for the pq program is \texttt{pq}, then \begin{quote} \verb|pq < 2gp| \end{quote} executes the example non-interactively, with something similar to the above output to the screen, minus the menu. Note that the menus from the pq program are only displayed when it is used interactively. A script file for the pq program (like \texttt{2gp}) should contain the responses that the pq program will expect, in the correct sequence. \subsection{A {\it p}-Group Generation example}\label{sec:pgrp-gen-eg} The following example is essentially \verb|pga_3gp| from the \texttt{examples} directory, except again we have modified the comments, and we have also answered ``No'' to the ``PAG-generating sequence'' question, so that {\sf GAP} is called to compute stabilisers. If the pq binary is unable to find {\sf GAP} or finds {\sf GAP 3} instead of {\sf GAP} 4 the program will die horribly at this point. (See Section~\ref{sec:pq-install} if you run into problemsm, at this point.) For this example (which generates all groups with lower exponent-3 series of shape 2-2-3-1), the pq program is invoked without any of the switches of Section~\ref{sec:runtime}. \begin{verbatim} [..Basic Menu omitted here..] Select option: 1 #set up group presentation Input group identifier: c3c3 Input prime: 3 Input maximum class: 1 Input print level (0-3): 1 Input generating set (in { }): {a, b} Input defining set of relations (in { }): {} Input exponent law (0 if none): 0 Lower exponent-3 central series for c3c3 Group: c3c3 to lower exponent-3 central class 1 has order 3^2 Computation of presentation took 0.00 seconds Select option: 7 #compute its 3-covering group Group: c3c3 to lower exponent-3 central class 2 has order 3^5 Computation of 3-covering group took 0.00 seconds Select option: 9 #enter p-group generation Menu for p-Group Generation ----------------------------- 1. Read automorphism information for starting group 2. Extend and display automorphisms 3. Specify input file and group number 4. List group presentation 5. Construct descendants 6. Advanced p-group generation menu 7. Exit to basic menu Select option: 1 #to supply automorphisms Input the number of automorphisms: 5 Now enter the data for automorphism 1 Input 2 exponents for image of pcp generator 1: 2 0 Input 2 exponents for image of pcp generator 2: 0 2 Now enter the data for automorphism 2 Input 2 exponents for image of pcp generator 1: 0 2 Input 2 exponents for image of pcp generator 2: 1 0 Now enter the data for automorphism 3 Input 2 exponents for image of pcp generator 1: 1 2 Input 2 exponents for image of pcp generator 2: 2 2 Now enter the data for automorphism 4 Input 2 exponents for image of pcp generator 1: 1 0 Input 2 exponents for image of pcp generator 2: 2 1 Now enter the data for automorphism 5 Input 2 exponents for image of pcp generator 1: 2 0 Input 2 exponents for image of pcp generator 2: 0 1 Input number of soluble generators for automorphism group: 0 Select option: 5 #to construct descendants Input class bound on descendants: 4 Construct all descendants? 0 #i.e. ``No'' Constant step size? 0 #i.e. ``No'' Input 3 step sizes: 2 3 1 PAG-generating sequence for automorphism group? 0 #i.e. ``No'' Do you want default algorithm? 1 #i.e. ``Yes'' Do you want default output? 1 #i.e. ``Yes'' ************************************************** Starting group: c3c3 Order: 3^2 Nuclear rank: 3 3-multiplicator rank: 3 Now calling GAP to compute stabiliser... true #I Order of GL subgroup is 48 #I No. of soluble autos is 0 #I dim U = 1 dim N = 3 dim M = 3 #I nice stabilizer with perm rep Now calling GAP to compute stabiliser... true #I Order of GL subgroup is 48 #I No. of soluble autos is 0 #I dim U = 1 dim N = 3 dim M = 3 #I nice stabilizer with perm rep # of immediate descendants of order 3^4 is 3 # of capable immediate descendants is 3 ************************************************** 3 capable groups saved on file c3c3_class2 ************************************************** Starting group: c3c3 #1;2 Order: 3^4 Nuclear rank: 2 3-multiplicator rank: 3 Group c3c3 #1;2 is an invalid starting group ************************************************** Starting group: c3c3 #2;2 Order: 3^4 Nuclear rank: 3 3-multiplicator rank: 4 # of immediate descendants of order 3^7 is 4 # of capable immediate descendants is 4 ************************************************** Starting group: c3c3 #3;2 Order: 3^4 Nuclear rank: 2 3-multiplicator rank: 3 Group c3c3 #3;2 is an invalid starting group ************************************************** 4 capable groups saved on file c3c3_class3 ************************************************** Starting group: c3c3 #2;2 #1;3 Order: 3^7 Nuclear rank: 4 3-multiplicator rank: 5 # of immediate descendants of order 3^8 is 16 # of capable immediate descendants is 11 ************************************************** Starting group: c3c3 #2;2 #2;3 Order: 3^7 Nuclear rank: 3 3-multiplicator rank: 4 # of immediate descendants of order 3^8 is 13 # of capable immediate descendants is 9 ************************************************** Starting group: c3c3 #2;2 #3;3 Order: 3^7 Nuclear rank: 3 3-multiplicator rank: 4 # of immediate descendants of order 3^8 is 13 # of capable immediate descendants is 9 ************************************************** Starting group: c3c3 #2;2 #4;3 Order: 3^7 Nuclear rank: 3 3-multiplicator rank: 4 # of immediate descendants of order 3^8 is 7 # of capable immediate descendants is 5 ************************************************** 34 capable groups saved on file c3c3_class4 Construction of descendants took 69.95 seconds Select option: 0 #exit to basic menu (same as option 7) Exiting from p-group generation Select option: 0 #exit program (same as option 9) Exiting from ANU p-Quotient Program Total user time in seconds is 69.95 \end{verbatim} \subsection{A Standard Presentation Menu example} The following example is similar to what is provided by the file \verb|2gp| in the \texttt{isom} directory, except we have added comments, we have not used the \texttt{-k} (keywords) runtime switch and to reduce the output we have only computed the standard presentation to class 3 (instead of class 10, as in the \verb|2gp| example). For this example, the pq program is invoked with the \texttt{-i} runtime switch (see Section~\ref{sec:runtime}), which gives us access to the Standard Presentation Menu (see Section~\ref{sec:stnd-pres-menu}). \begin{verbatim} Standard Presentation Menu ----------------------------- 1. Supply start information 2. Compute standard presentation to supplied class 3. Save presentation to file 4. Display presentation 5. Set print level for construction 6. Compare two presentations stored in files 7. Call p-Quotient menu 8. Compute the isomorphism 9. Exit from program Select option: 1 #input group info. Input group identifier: G Input prime: 2 Input maximum class: 1 Input print level (0-3): 1 #just minimal output Input generating set (in { }): {a, b} Input defining set of relations (in { }): {a^4, b^4 = [b, a, a]} Input exponent law (0 if none): 0 Lower exponent-2 central series for G Group: G to lower exponent-2 central class 1 has order 2^2 Class 1 2-quotient and its 2-covering group computed in 0.02 seconds Select option: 2 #for standard presentation Enter output file name for group information: 2gp-st Standardise presentation to what class? 3 Input the number of automorphisms: 2 Now enter the data for automorphism 1 Input 2 exponents for image of pcp generator 1: 0 1 Input 2 exponents for image of pcp generator 2: 1 1 Now enter the data for automorphism 2 Input 2 exponents for image of pcp generator 1: 0 1 Input 2 exponents for image of pcp generator 2: 1 0 PAG-generating sequence for automorphism group? 1 #i.e. ``Yes'' Starting group has order 2^2; its automorphism group order is 6 The standard presentation for the class 2 2-quotient is Group: G #1;3 to lower exponent-2 central class 2 has order 2^5 Non-trivial powers: .1^2 = .4 .2^2 = .5 Non-trivial commutators: [ .2, .1 ] = .3 Its automorphism group has order 384 Computing standard presentation for class 2 took 0.08 seconds The standard presentation for the class 3 2-quotient is Group: G #1;3 to lower exponent-2 central class 3 has order 2^8 Non-trivial powers: .1^2 = .4 .2^2 = .5 .3^2 = .6 .8 .5^2 = .6 Non-trivial commutators: [ .2, .1 ] = .3 [ .3, .1 ] = .6 [ .3, .2 ] = .7 [ .4, .2 ] = .8 [ .5, .1 ] = .6 .7 .8 Its automorphism group has order 4096 Computing standard presentation for class 3 took 0.12 seconds Select option: 0 #exit (option 9 does this also) \end{verbatim} \subsection{A keywords example} To use keywords you must use the \texttt{-k} runtime switch (see Section~\ref{sec:runtime}). For this example we are again using the Standard Presentation Menu; so we also use the \texttt{-i} runtime switch. The example is \verb|2gp.com| from the \texttt{isom} directory. If the binary for the pq program is \texttt{pq}, then \begin{quote} \verb|pq -i -k < 2gp.com| \end{quote} in the \texttt{isom} directory yields something like the following output. (The keywords are used in option \texttt{1}; note the ``\texttt{;}'' indicating all remaining data for that option should take default values.) \begin{verbatim} [..Standard Presentation Menu omitted here..] Select option: 1 #set up start information prime 2 #keyword `prime' class 2 #keyword `class' generators {a, b} #keyword `generators' relations {a^4, b^2 = [b, a, b]}; #keyword `relations' (NB: closing `;') Lower exponent-2 central series for G Group: G to lower exponent-2 central class 1 has order 2^2 Group: G to lower exponent-2 central class 2 has order 2^4 Class 2 2-quotient and its 2-covering group computed in 0.00 seconds Select option: 2 #standardise presentation Enter output file name for group information: Standard Standardise presentation to what class? 10 Input the number of automorphisms: 3 Now enter the data for automorphism 1 Input 4 exponents for image of pcp generator 1: 1 0 0 1 Input 4 exponents for image of pcp generator 2: 0 1 0 0 Now enter the data for automorphism 2 Input 4 exponents for image of pcp generator 1: 1 0 0 0 Input 4 exponents for image of pcp generator 2: 0 1 0 1 Now enter the data for automorphism 3 Input 4 exponents for image of pcp generator 1: 1 1 1 0 Input 4 exponents for image of pcp generator 2: 0 1 1 1 PAG-generating sequence for automorphism group? 1 Starting group has order 2^4; its automorphism group order is at most 96 The standard presentation for the class 3 2-quotient is Group: G #1;2 to lower exponent-2 central class 3 has order 2^6 Non-trivial powers: .1^2 = .4 .2^2 = .5 .3^2 = .6 Non-trivial commutators: [ .2, .1 ] = .3 [ .3, .1 ] = .5 [ .3, .2 ] = .6 [ .4, .2 ] = .5 .6 Its automorphism group has order at most 384 Computing standard presentation for class 3 took 0.05 seconds The standard presentation for the class 4 2-quotient is Group: G #1;1 to lower exponent-2 central class 4 has order 2^7 [..265 lines omitted here..] The standard presentation for the class 10 2-quotient is Group: G #1;4 to lower exponent-2 central class 10 has order 2^24 [..93 lines omitted here..] Its automorphism group has order at most 25769803776 Computing standard presentation for class 10 took 0.27 seconds Select option: 4 #display standard presentation for class 10 2-quotient Group: G #1;4 to lower exponent-2 central class 10 has order 2^24 Non-trivial powers: .1^2 = .4 .2^2 = .5 .11 .13 .17 .24 .3^2 = .6 .7 .10 .11 .12 .13 .14 .17 .20 .21 .22 .5^2 = .8 .11 .19 .20 .21 .6^2 = .10 .14 .16 .18 .22 .23 .24 .7^2 = .10 .12 .21 .22 .24 .8^2 = .12 .15 .9^2 = .12 .17 .20 .22 .23 .10^2 = .15 .18 .11^2 = .15 .20 .24 .12^2 = .18 .21 .13^2 = .18 .24 .14^2 = .18 .23 .15^2 = .21 .17^2 = .21 Non-trivial commutators: [ .2, .1 ] = .3 [ .3, .1 ] = .5 [ .3, .2 ] = .6 [..71 lines omitted here..] [ .20, .2 ] = .23 Select option: 0 #exit Exiting from ANU p-Quotient Program Total user time in seconds is 1.13 \end{verbatim} \subsection{A basic format Advanced {\it p}-Group Generation example} With the following example we demonstrate both the use of the \texttt{-b} runtime switch (see Section~\ref{sec:runtime}) and we exercise an Advanced menu. To do something equivalent to what we give below, (assuming the pq binary is \texttt{pq}) do: \begin{quote} \verb|pq -b < pga_interactive| \end{quote} in the \texttt{examples} directory. \begin{verbatim} [..Basic Menu omitted here..] Select option: 1 #set up group presentation Input group identifier: Nott #our group will be the Nottingham group Input prime: 5 Input maximum class: 3 Input print level (0-3): 1 #minimal output Input number of generators: 2 #this is the prompt we get with -b Input number of relations: 3 #(ditto) Input exponent law (0 if none): 0 5 1; #this is the ``basic format'' (-b switch) The input word is 5 1 Input right-hand side of relation: 0; The input word is 0 Input left-hand side of relation: 5 2; The input word is 5 2 Input right-hand side of relation: 0; The input word is 0 Input left-hand side of relation: 1 [2 1 2]; The input word is 1 [ 2 1 2 ] Input right-hand side of relation: 0; #the final ``basic format'' input needed The input word is 0 Lower exponent-5 central series for Nott Group: Nott to lower exponent-5 central class 1 has order 5^2 Group: Nott to lower exponent-5 central class 2 has order 5^3 Group: Nott to lower exponent-5 central class 3 has order 5^4 Computation of presentation took 0.00 seconds Select option: 7 #compute 5-covering group Group: Nott to lower exponent-5 central class 4 has order 5^8 Computation of 5-covering group took 0.00 seconds Select option: 2 #save presentation Enter output file name: Nott Presentation written to file Select option: 9 #to (Main) p-Group Generation Menu Menu for p-Group Generation ----------------------------- 1. Read automorphism information for starting group 2. Extend and display automorphisms 3. Specify input file and group number 4. List group presentation 5. Construct descendants 6. Advanced p-group generation menu 7. Exit to basic menu Select option: 1 #define aut. group Input the number of automorphisms: 6 Now enter the data for automorphism 1 Input 4 exponents for image of pcp generator 1: 1 0 0 0 Input 4 exponents for image of pcp generator 2: 0 1 0 1 Now enter the data for automorphism 2 Input 4 exponents for image of pcp generator 1: 1 1 0 0 Input 4 exponents for image of pcp generator 2: 0 1 0 0 Now enter the data for automorphism 3 Input 4 exponents for image of pcp generator 1: 1 0 0 0 Input 4 exponents for image of pcp generator 2: 0 4 0 0 Now enter the data for automorphism 4 Input 4 exponents for image of pcp generator 1: 1 0 0 0 Input 4 exponents for image of pcp generator 2: 0 2 0 0 Now enter the data for automorphism 5 Input 4 exponents for image of pcp generator 1: 4 0 0 0 Input 4 exponents for image of pcp generator 2: 0 1 0 0 Now enter the data for automorphism 6 Input 4 exponents for image of pcp generator 1: 2 0 0 0 Input 4 exponents for image of pcp generator 2: 0 1 0 0 Input number of soluble generators for automorphism group: 0 Select option: 5 #construct descendants Input class bound on descendants: 4 Construct all descendants? 0 #i.e. ``No'' Input step size: 1 PAG-generating sequence for automorphism group? 1 #``Yes'' Do you want default algorithm? 0 #``No'' Rank of the initial segment subgroup? 4 Space efficient computation? 0 #``No'' Completely process terminal descendants? 0 #``No'' Input exponent law (0 if none): 0 Enforce metabelian law? 0 #``No'' Do you want default output? 1 #``Yes'' ************************************************** Starting group: Nott Order: 5^4 Nuclear rank: 1 5-multiplicator rank: 4 # of immediate descendants of order 5^5 is 9 # of capable immediate descendants is 2 ************************************************** 2 capable groups saved on file Nott_class4 Construction of descendants took 0.02 seconds Select option: 3 #restore group Enter input file name: Nott_class4 Which group? 1 Select option: 6 #get Advanced p-Group Gen'n Menu Advanced Menu for p-Group Generation ------------------------------------- 1. Read automorphism information for starting group 2. Extend and display automorphisms 3. Specify input file and group number 4. List group presentation 5. Carry out intermediate stage calculation 6. Compute definition sets & find degree 7. Construct permutations of subgroups under automorphisms 8. Compute and list orbit information 9. Process all orbit representatives 10. Process individual orbit representative 11. Compute label for standard matrix of subgroup 12. Compute standard matrix for subgroup from label 13. Find image of allowable subgroup under automorphism 14. Find rank of closure of initial segment subgroup 15. List representative and orbit for supplied label 16. Write compact descriptions of generated groups to file 17. Find automorphism classes of elements of vector space 18. Exit to main p-group generation menu Select option: 6 #find degree Input step size: 2 Rank of the initial segment subgroup? 3 Input exponent law (0 if none): 0 Degree of permutation group is 25 Select option: 7 #compute permutations PAG-generating sequence for automorphism group? 1 Space efficient computation? 0 Print automorphism matrices? 0 Print permutations? 0 Time to compute permutations is 0.00 seconds Select option: 8 #compute orbits PAG-generating sequence for automorphism group? 1 #``Yes'' Space efficient computation? 0 #``No'' Summary of orbit information? 1 #``Yes'' Complete listing of orbits? 0 #``No'' Time to compute orbits is 0.00 seconds Orbit Length Representative 1 5 1 2 20 2 Select option: 9 #compute stabilisers PAG-generating sequence for automorphism group? 1 #``Yes'' Space efficient computation? 0 #``No'' Completely process terminal descendants? 0 #``No'' Input exponent law (0 if none): 0 Enforce metabelian law? 0 #``No'' Print standard matrix of allowable subgroup? 0 #``No'' Presentation of reduced p-covering groups? 0 #``No'' Presentation of immediate descendants? 0 #``No'' Print nuclear rank of descendants? 0 #``No'' Print p-multiplicator rank of descendants? 0 #``No'' Print commutator matrix? 0 #``No'' Automorphism group description of descendants? 0 #``No'' Automorphism group order of descendants? 0 #``No'' Enter output file name: X Time to process representative is 0.02 seconds Select option: 3 #restore reduced p-covering group Enter input file name: X Which group? 1 Select option: 4 #display presentation Group: Nott #1;1 to lower exponent-5 central class 5 has order 5^9 Class 1 1 is defined on image of defining generator 1 2 is defined on image of defining generator 2 Class 2 3 is defined on [2, 1] = 2 1 Class 3 4 is defined on [3, 1] = 2 1 1 Class 4 5 is defined on [4, 1] = 2 1 1 1 Class 5 6 is defined on [5, 1] = 2 1 1 1 1 7 is defined on [5, 2] = 2 1 1 1 2 8 is defined on 1^5 = 1 1 9 is defined on 2^5 = 2 2 Non-trivial powers: .1^5 = .8 .2^5 = .9 Non-trivial commutators: [ .2, .1 ] = .3 [ .3, .1 ] = .4 [ .4, .1 ] = .5 [ .4, .2 ] = .7 [ .4, .3 ] = .7^4 [ .5, .1 ] = .6 [ .5, .2 ] = .7 Select option: 5 #intermediate stage computation Input step size: 2 PAG-generating sequence for automorphism group? 1 #``Yes'' Do you want default algorithm? 1 #``Yes'' Do you want default output? 1 #``Yes'' Input output file name: XX ************************************************** Starting group: Nott #1;1 Order: 5^5 Nuclear rank: 2 5-multiplicator rank: 4 # of immediate descendants of order 5^7 is 40 # of capable immediate descendants is 5 Time for intermediate stage is 0.07 seconds Select option: 0 #exit through 3 levels of menus Exiting from advanced p-group generation menu Select option: 0 Exiting from p-group generation Select option: 0 Exiting from ANU p-Quotient Program Total user time in seconds is 0.10 \end{verbatim} \section{Changes} \begin{description} \item[\texttt{Version 1.9}]\ \\ Fixes made to warnings in C code by Max Horn. \item[\texttt{Version 1.8}]\ \\ \textsf{GAP} link code updated for \textsf{GAP} 4.4. \item[\texttt{Version 1.7}]\ \\ Binomial coefficient algorithm modified to avoid overflow. \item[\texttt{Version 1.6}]\ \\ In main Menu for {\it p}-Group Generation, when asking for automorphisms, now ask for the number of soluble automorphisms and their relative orders when there are any. \item[\texttt{Version 1.5}]\ \\ Added the \texttt{-G} option for use with \textsf{GAP} and the \texttt{-v} option. \end{description} \pagebreak \section*{\centering References} \addcontentsline{toc}{section}{\numberline{}References} \begin{description} \item George Havas and M.F.\ Newman (1980), ``Application of computers to questions like those of Burnside", {\it Burnside Groups} (Bielefeld, 1977), {\it Lecture Notes in Math.\ }{\bf 806}, pp.\ 211-230. Springer-Verlag, Berlin, Heidelberg, New York. \item M.F.\ Newman (1977), ``Determination of groups of prime-power order", {\it Group Theory} (Canberra, 1975). {\it Lecture Notes in Math.\ }{\bf 573}, pp.\ 73--84. Springer-Verlag. \item M.F.\ Newman and E.A. O'Brien (1996), ``Application of computers to questions like those of Burnside, {II}", {\it Internat.\ J.\ Algebra Comput}. {\bf 6}, 593-605. \item E.A.\ O'Brien (1990), ``The {\it p}-group generation algorithm", {\it J.\ Symbolic Comput.} {\bf 9}, 677-698. \item E.A.\ O'Brien (1994), ``Isomorphism testing for \mbox{{\it p}-groups}", {\it J. Symbolic Comput.} {\bf 17}, 133--147. \item E.A.\ O'Brien (1995), ``Computing automorphism groups for {\it p}-groups", {\it Computational Algebra and Number Theory} (Sydney, 1992), pp.\ 83--90. Kluwer Academic Publishers, Dordrecht. \item M.R. Vaughan-Lee (1982), ``An Aspect of the Nilpotent Quotient Algorithm", {\it Computational Group Theory} (Durham, 1982), pp. 76--83. Academic Press. \item Michael Vaughan-Lee (1990a), ``The Restricted Burnside Problem", {\it London Mathematical Society monographs (New Ser.)} {\bf 5}. Clarendon Press, New York, Oxford. \item M.R. Vaughan-Lee (1990b), ``Collection from the left", {\it J. Symbolic Comput.} {\bf 9}, 725--733. \end{description} %\vspace*{0.5cm} \noindent Eamonn A.\ O'Brien \\ Department of Mathematics \\ University of Auckland \\ Private Bag 92019, Auckland, New Zealand \vspace*{0.25cm} \noindent E-mail address: obrien@math.auckland.ac.nz \vspace*{0.35cm} \noindent Last revised by Eamonn O'Brien: August 2001\hfil\break\noindent Revised February 2002 (v1.5 GG), February 2004 (v1.6 GG),\hfil\break \hspace*{2em}November 2011 (v1.9 MH), January 2012 (v1.9 GG) \end{document} anupq-3.3.0/standalone-doc/README000644 000766 000024 00000024336 14355420571 016721 0ustar00mhornstaff000000 000000 ############################################################################### # # Australian National University p-Quotient Program # # Version 1.9 # # June 2001, February 2002, February 2004, July 2005, January 2006, # November 2011, January 2012 # ############################################################################### This implementation was developed in C by Eamonn O'Brien Department of Mathematics University of Auckland Private Bag 92019, Auckland, New Zealand E-mail: obrien@math.auckland.ac.nz WWW https://www.math.auckland.ac.nz/~obrien and some minor changes made in 2011-2022 by Max Horn Fachbereich Mathematik TU Kaiserslautern Gottlieb-Daimler-Straße 48 67663 Kaiserslautern, Germany E-mail: horn@mathematik.uni-kl.de WWW https://www.quendi.de/math ############################################################################### # # Program content # ############################################################################### The program provides access to implementations of the following algorithms: 1. A p-quotient algorithm to compute a power-commutator presentation for a p-group. The algorithm implemented here is based on that described in Newman and O'Brien (1996), Havas and Newman (1980), and papers referred to there. Another description of the algorithm appears in Vaughan-Lee (1990b). A FORTRAN implementation of this algorithm was programmed by Alford & Havas. The basic data structures of that implementation are retained. The current implementation incorporates the following features: a. collection from the left (see Vaughan-Lee, 1990b); Vaughan-Lee's implementation of this collection algorithm is used in the program; b. an improved consistency algorithm (see Vaughan-Lee, 1982); c. new exponent law enforcement and power routines; d. closing of relations under the action of automorphisms; e. some formula evaluation. 2. A p-group generation algorithm to generate descriptions of p-groups. The algorithm implemented here is based on the algorithms described in Newman (1977) and O'Brien (1990). A FORTRAN implementation of this algorithm was earlier developed by Newman & O'Brien. 3. A standard presentation algorithm used to compute a canonical power-commutator presentation of a p-group. The algorithm implemented here is described in O'Brien (1994). 4. An algorithm which can be used to compute the automorphism group of a p-group. The algorithm implemented here is described in O'Brien (1995). ############################################################################### # # Access via other programs # ############################################################################### Access to parts of this program is provided via GAP. This program is supplied as a package within GAP, both GAP 3.4 and GAP4. The link from GAP to pq is described in the manual for GAP 3.4, and is described in a separate manual supplied with the ANUPQ package anupq.zoo archive for GAP4. ############################################################################### # # References # ############################################################################### George Havas and M.F. Newman (1980), "Application of computers to questions like those of Burnside", Burnside Groups (Bielefeld, 1977), Lecture Notes in Math. 806, pp. 211-230. Springer-Verlag. M.F. Newman and E.A. O'Brien (1996), "Application of computers to questions like those of Burnside II", Internat. J. Algebra Comput. 6, 593-605. M.F. Newman (1977), "Determination of groups of prime-power order", Group Theory (Canberra, 1975). Lecture Notes in Math. 573, pp. 73-84. Springer-Verlag. E.A. O'Brien (1990), "The p-group generation algorithm", J. Symbolic Comput. 9, 677-698. E.A. O'Brien (1994), ``Isomorphism testing for p-groups", J. Symbolic Comput. 17, 133-147. E.A. O'Brien (1995), ``Computing automorphism groups of p-groups", Computational Algebra and Number Theory, (Sydney, 1992), pp. 83--90. Kluwer Academic Publishers, Dordrecht. M.R. Vaughan-Lee (1982), "An Aspect of the Nilpotent Quotient Algorithm", Computational Group Theory (Durham, 1982), pp. 76-83. Academic Press. Michael Vaughan-Lee (1990a), The Restricted Burnside Problem, London Mathematical Society monographs (New Ser.) #5. Clarendon Press, New York, Oxford. M.R. Vaughan-Lee (1990b), "Collection from the left", J. Symbolic Comput. 9, 725-733. ############################################################################### # # Installation procedure # ############################################################################### 1. For installation for use with GAP4 please go to the README in the main directory. The directory mapping of the anupq directory derived from anupq.zoo is as follows: doc -- manual for the GAP4 package that interfaces with pq standalone-doc -- documentation on use of the pq standalone program standalone -- contains the pq standalone TEST, examples, isom directories include -- C header files src -- C source files and a Makefile lib -- GAP library files tst -- GAP test files examples -- GAP examples After doing `make restoredirs' in the anupq directory, the anupq sub- directories are remapped to the way they are in the distribution found at: https://www.math.auckland.ac.nz/~obrien namely the GAP4 doc directory, main directory README and a number of other files there are moved to the directory doc; standalone-doc is renamed doc; the examples, lib and tst directories are moved into the gap directory; the examples, isom and TEST subdirectories of standalone are moved to be in the main directory; and this README is moved to be in the main directory. Doing `make GAP4remapdirs' establishes the directory structure above. 2. The file, guide.tex, in the standalone-doc (or doc) directory is a LaTeX file. It is a basic guide to the use of the p-Quotient Program. 3. By default, the program has the following limits: the maximum number of pc generators is 2^16 - 1 = 65535; the maximum number of defining generators is 2^9 - 1 = 511; the maximum class is 2^6 - 1 = 63. The data structures require that the following holds: the sums of the exponents of 2 from the above three quantities is at most (the number of bytes in a word) - 1. Hence the sum is usually 31. The program can be compiled in two modes; in fixed mode the above limits are enforced; in runtime mode, these are also the default; however, the limit on the number of defining generators and the class can be altered by the user via on-line options "-c" and "-d"; if such selections are made, the maximum number of pc generators is consequently altered; a user must decide the limit on *each* of the number of defining generators and the class. The default limits are set in the header files: storage_fixed.h (for fixed version) runtime.h (for runtime version) On average, the fixed mode version performs 5-10% more efficiently than the runtime version. If you wish to compile the runtime mode version, then set -DRUN_TIME as a compiler flag in the Makefile. 4. The README in the main directory explains how to install the GAP4 package ANUPQ together with the pq binary. *Otherwise*, to create the pq binary -- a. change to the src directory; b. ensure that the conditional compilation flags in the Makefile are set correctly; the -DLARGE_INT flag controls the storage and display of automorphism group orders; if you want to use this flag, you must have an up-to-date copy of the GNU MP procedures on your machine; c. system dependent features are collected in system.c; in particular, you may wish to look at the run time function to ensure that the CPU time reported by the program is correct; d. type make pq e. to remove all of the object files, type make clean A binary file, pq, will be placed in a subdirectory of bin which is created when configure and make are run in the main directory. 5. The total space requirements for this directory (including the binary but excluding the object files) is about 3 MB. 6. In p-group generation, if the automorphism group of the starting group is insoluble, then pq calls GAP to perform particular stabiliser computations (see the User Guide for more details). The user of pq may choose which of these systems is to be called -- however, the choice for this link MUST be made by the user at compilation time by setting the GAP_LINK flag in the Makefile. Points 7 and 8 below discuss each of these links in turn. 7. The link from pq to GAP assumes that you use GAP 3.4 or GAP4 *with* the *ANUPQ package* installed. If the binary for GAP 3.4 or GAP4 is called gap and is in your default path, you need do no more; if it is not in your path, you must set an environment variable ANUPQ_EXEC_GAP to point to the GAP executable. 8. The TEST subdirectory of standalone contains a number of log files, with extension .orig, together with a cshell file called TEST. This test program runs through a number of the examples in the examples directory and compares the results generated with those listed in the .orig files of this directory. If the p-quotient program is running correctly, the TEST program should report only differences in the date, name of machines and times taken. If there are other significant differences, please report. Execute the test program by typing TEST (If your pq directory structure is different, you may need to alter the relative paths in TEST for both binary and command files.) The total time taken for the test on a SPARCstation 10/51 is about 30 seconds of user time. 9. See the documentation for information on run-time parameters. 10. Please report bugs/problems/feedback to obrien@math.auckland.ac.nz and/or horn@mathematik.uni-kl.de ############################################################################### # # License # ############################################################################### The anupq C source code is free software distributed under the Artistic License 2.0, see the file `LICENSE` or for the exact terms of the license. anupq-3.3.0/tst/anupq1eg.tst000644 000766 000024 00000005377 14355420571 016241 0ustar00mhornstaff000000 000000 ############################################################################# ## #A anupq1eg.tst ANUPQ package Greg Gamble ## ## Tests one of the ANUPQ examples. This is done on its own because it ## outputs timing data which varies from machine to machine. ## Execute this file with `Test( "anupq1eg.tst" );'. ## The number of GAPstones returned at the end do not mean much as they do ## not measure the time spent by the `pq' binary. ## gap> START_TEST( "Testing one ANUPQ example" ); gap> SetInfoLevel(InfoANUPQ, 1); gap> ##Example: "EpimorphismStandardPresentation-i" . . based on manual example gap> ##(demonstrates interactive `EpimorphismStandardPresentation' usage) gap> F := FreeGroup(6, "F"); gap> # For printing GAP uses the symbols F1, ... for the generators of F gap> x := F.1; y := F.2; z := F.3; w := F.4; a := F.5; b := F.6; F1 F2 F3 F4 F5 F6 gap> R := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b, > Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ]; [ F1^3*F4^-1, F2^3*F4^-1*F5^2*F6^2, F4^3*F6^-1, F2^-1*F1^-1*F2*F1*F3^-1, F3^-1*F1^-1*F3*F1, F3^-1*F2^-1*F3*F2*F5^-1, F3^3 ] gap> Q := F / R; gap> procId := PqStart( Q );; gap> G := Pq( procId : Prime := 3, ClassBound := 3 ); gap> lev := InfoLevel(InfoANUPQ); # Save current InfoANUPQ level 1 gap> SetInfoLevel(InfoANUPQ, 2); # To see computation time data gap> # It is not necessary to pass the `Prime' option to gap> # `EpimorphismStandardPresentation' since it was previously gap> # passed to `Pq': gap> phi := EpimorphismStandardPresentation( procId : ClassBound := 3 ); #I Class 1 3-quotient and its 3-covering group computed in 0.00 seconds #I Order of GL subgroup is 48 #I No. of soluble autos is 0 #I dim U = 1 dim N = 3 dim M = 3 #I nice stabilizer with perm rep #I Computing standard presentation for class 2 took 0.00 seconds #I Computing standard presentation for class 3 took 0.00 seconds [ F1, F2, F3, F4, F5, F6 ] -> [ f1*f2^2*f3*f4^2*f5^2, f1*f2*f3*f5, f3^2, f4*f6^2, f5, f6 ] gap> # Image of phi should be isomorphic to G ... gap> # let's check the order is correct: gap> Size( Image(phi) ); 729 gap> # `StandardPresentation' and `EpimorphismStandardPresentation' gap> # behave like attributes, so no computation is done when gap> # either is called again for the same process ... gap> StandardPresentation( procId : ClassBound := 3 ); gap> # No timing data was Info-ed since no computation was done gap> SetInfoLevel(InfoANUPQ, lev); # Restore previous InfoANUPQ level gap> PqQuit(procId); gap> STOP_TEST( "anupq1eg.tst", 1000000 ); anupq-3.3.0/tst/out/000755 000766 000024 00000000000 14355420571 014557 5ustar00mhornstaff000000 000000 anupq-3.3.0/tst/anupqeg.tst000644 000766 000024 00010303076 14355420571 016156 0ustar00mhornstaff000000 000000 ############################################################################# ## #A anupqeg.tst ANUPQ package Greg Gamble ## ## Tests all but one of the ANUPQ examples. ## Execute this file with `Test( "anupqeg.tst" );'. ## This is a *big* test, taking some 40 minutes on a *fast* (1GHz) machine. ## The number of GAPstones returned at the end do not mean much as they do ## not measure the time spent by the `pq' binary. ## gap> START_TEST( "Testing ANUPQ examples" ); gap> SetInfoLevel(InfoANUPQ, 1); gap> examples := AllPqExamples(); [ "11gp-3-Engel-Id", "11gp-3-Engel-Id-i", "11gp-PG-i", "11gp-Rel-i", "11gp-SP-a-Rel-1-i", "11gp-SP-a-Rel-i", "11gp-SP-a-i", "11gp-SP-b-Rel-i", "11gp-SP-b-i", "11gp-SP-c-Rel-i", "11gp-a-Rel-i", "11gp-i", "2gp-PG-2-i", "2gp-PG-3-i", "2gp-PG-4-i", "2gp-PG-e4-i", "2gp-PG-i", "2gp-Rel", "2gp-Rel-i", "2gp-SP-1-Rel-i", "2gp-SP-2-Rel-i", "2gp-SP-3-Rel-i", "2gp-SP-4-Rel-i", "2gp-SP-Rel-i", "2gp-SP-d-Rel-i", "2gp-a-Rel-i", "3gp-PG-4-i", "3gp-PG-i", "3gp-PG-x-1-i", "3gp-PG-x-i", "3gp-Rel-i", "3gp-SP-1-Rel-i", "3gp-SP-2-Rel-i", "3gp-SP-3-Rel-i", "3gp-SP-4-Rel-i", "3gp-SP-Rel-i", "3gp-a-Rel", "3gp-a-Rel-i", "3gp-a-x-Rel-i", "3gp-maxoccur-Rel-i", "5gp-PG-i", "5gp-Rel-i", "5gp-SP-Rel-i", "5gp-SP-a-Rel-i", "5gp-SP-b-Rel-i", "5gp-SP-big-Rel-i", "5gp-SP-d-Rel-i", "5gp-a-Rel-i", "5gp-b-Rel-i", "5gp-c-Rel-i", "5gp-maxoccur-Rel-i", "5gp-metabelian-Rel", "5gp-metabelian-Rel-i", "7gp-PG-i", "7gp-Rel-i", "7gp-SP-Rel-i", "7gp-SP-a-Rel-i", "7gp-SP-b-Rel-i", "B2-4", "B2-4-Id", "B2-4-SP-i", "B2-5", "B2-5-i", "B2-8-i", "B4-4-a-i", "B4-4-i", "B5-4.g", "B5-5-Engel3-Id", "EpimorphismStandardPresentation", "EpimorphismStandardPresentation-i", "F2-5-i", "G2-SP-Rel-i", "G3-SP-Rel-i", "G5-SP-Rel-i", "G5-SP-a-Rel-i", "IsIsomorphicPGroup-ni", "Nott-APG-Rel-i", "Nott-PG-Rel-i", "Nott-SP-Rel-i", "Pq", "Pq-ni", "PqDescendants-1", "PqDescendants-1-i", "PqDescendants-2", "PqDescendants-3", "PqDescendants-treetraverse-i", "PqDescendantsTreeCoclassOne-16-i", "PqDescendantsTreeCoclassOne-25-i", "PqDescendantsTreeCoclassOne-9-i", "PqEpimorphism", "PqPCover", "PqSupplementInnerAutomorphisms", "R2-5-i", "R2-5-x-i", "StandardPresentation", "StandardPresentation-i", "gp-256-SP-Rel-i" ] gap> RemoveSet(examples, "EpimorphismStandardPresentation-i"); gap> nexamples := Length( examples ); 96 gap> ##Example: "11gp-3-Engel-Id" . . . 3-Engel group for prime 11 gap> ##Non-trivial example of using the `Identities' option gap> F := FreeGroup("a", "b"); a := F.1; b := F.2; a b gap> G := F/[ a^11, b^11 ]; gap> # All word pairs u, v in the pc generators of the 11-quotient Q of G gap> # must satisfy the Engel identity: [u, v, v, v] = 1. gap> f := function(u, v) return PqLeftNormComm( [u, v, v, v] ); end; function( u, v ) ... end gap> Q := Pq( G : Prime := 11, Identities := [ f ] ); #I Class 1 with 2 generators. #I Class 2 with 3 generators. #I Class 3 with 5 generators. #I Class 3 with 5 generators. gap> # We do a ``sample'' check that pairs of elements of Q do satisfy gap> # the given identity: gap> f( Random(Q), Random(Q) ); of ... gap> f( Q.1, Q.2 ); of ... gap> # Executing interactive variant of example: "11gp-3-Engel-Id" gap> ##Example: "11gp-3-Engel-Id" . . . 3-Engel group for prime 11 gap> ##Non-trivial example of using the `Identities' option gap> F := FreeGroup("a", "b"); a := F.1; b := F.2; a b gap> G := F/[ a^11, b^11 ]; gap> # All word pairs u, v in the pc generators of the 11-quotient Q of G gap> # must satisfy the Engel identity: [u, v, v, v] = 1. gap> f := function(u, v) return PqLeftNormComm( [u, v, v, v] ); end; function( u, v ) ... end gap> procId := PqStart( G ); 1 gap> Q := Pq( procId : Prime := 11, Identities := [ f ] ); #I Class 1 with 2 generators. #I Class 2 with 3 generators. #I Class 3 with 5 generators. #I Class 3 with 5 generators. gap> # We do a ``sample'' check that pairs of elements of Q do satisfy gap> # the given identity: gap> f( Random(Q), Random(Q) ); of ... gap> f( Q.1, Q.2 ); of ... gap> ##Example: "11gp-3-Engel-Id-i" . . . 3-Engel grp for prime 11 gap> ##Variation of "11gp-3-Engel-Id" broken down into its lower-level component gap> ##command parts. gap> F := FreeGroup("a", "b"); a := F.1; b := F.2; a b gap> G := F/[ a^11, b^11 ]; gap> # All word pairs u, v in the pc generators of the 11-quotient Q of G gap> # must satisfy the Engel identity: [u, v, v, v] = 1. gap> f := function(u, v) return PqLeftNormComm( [u, v, v, v] ); end; function( u, v ) ... end gap> procId := PqStart( G : Prime := 11 ); 2 gap> PqPcPresentation( procId : ClassBound := 1); gap> PqEvaluateIdentities( procId : Identities := [f] ); #I Class 1 with 2 generators. gap> for c in [2 .. 4] do > PqNextClass( procId : Identities := [] ); #reset `Identities' option > PqEvaluateIdentities( procId : Identities := [f] ); > od; #I Class 2 with 3 generators. #I Class 3 with 5 generators. #I Class 3 with 5 generators. gap> Q := PqCurrentGroup( procId ); gap> # We do a ``sample'' check that pairs of elements of Q do satisfy gap> # the given identity: gap> f( Random(Q), Random(Q) ); of ... gap> f( Q.1, Q.2 ); of ... gap> ##Example: "11gp-PG-i" . . . based on: examples/pga_11gp gap> ##Descendants of C11 x C11 x C11 gap> F := FreeGroup("a", "b", "c"); gap> procId := PqStart(F : Prime := 11); 3 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-11 central series for [grp] #I Group: [grp] to lower exponent-11 central class 1 has order 11^3 gap> PqComputePCover(procId); #I Group: [grp] to lower exponent-11 central class 2 has order 11^9 gap> PqPGSupplyAutomorphisms(procId, [ [[ 2, 0, 0], > [ 0, 1, 0], > [ 0, 0, 1]], > > [[10, 0, 1], > [10, 0, 0], > [ 0,10, 0]] ]); gap> PqPGConstructDescendants(procId : ClassBound := 2, > CapableDescendants, > StepSize := 1, > RankInitialSegmentSubgroups := 3); #I ************************************************** #I Starting group: [grp] #I Order: 11^3 #I Nuclear rank: 6 #I 11-multiplicator rank: 6 #I # of immediate descendants of order 11^4 is 4 #I # of capable immediate descendants is 2 #I ************************************************** 2 gap> PqQuitAll(); gap> ##Example: "11gp-Rel-i" . . . based on: examples/11gp gap> ##(equivalent to "11gp-i" example but uses `Relators' option) gap> F := FreeGroup("a", "b", "c"); gap> rels := ["[b, a, a, b, c]^11", "[a, b, b, a, b, c]^11", "(a * b)^11"]; [ "[b, a, a, b, c]^11", "[a, b, b, a, b, c]^11", "(a * b)^11" ] gap> procId := PqStart(F : Prime := 11, Relators := rels); 1 gap> PqPcPresentation(procId : ClassBound := 7, > OutputLevel := 1); #I Lower exponent-11 central series for [grp] #I Group: [grp] to lower exponent-11 central class 1 has order 11^3 #I Group: [grp] to lower exponent-11 central class 2 has order 11^8 #I Group: [grp] to lower exponent-11 central class 3 has order 11^19 #I Group: [grp] to lower exponent-11 central class 4 has order 11^42 #I Group: [grp] to lower exponent-11 central class 5 has order 11^98 #I Group: [grp] to lower exponent-11 central class 6 has order 11^228 #I Group: [grp] to lower exponent-11 central class 7 has order 11^563 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> ##Example: "11gp-SP-a-Rel-1-i" . . . based on: isom/11gp_a.com gap> ##(like "11gp-SP-a-Rel-i" but the initial input presentation gap> ## is only to class 1). gap> F := FreeGroup("a", "b"); gap> rels := ["a^11", "b^11*[b, a, a]^-2", "[b, a, b, b, b, b]"]; [ "a^11", "b^11*[b, a, a]^-2", "[b, a, b, b, b, b]" ] gap> procId := PqStart(F : Prime := 11, Relators := rels); 2 gap> PqSetOutputLevel(procId, 0); gap> PqSPComputePcpAndPCover(procId : ClassBound := 1); gap> PqSPStandardPresentation(procId, [ [[1,0], > [0,1]], > > [[1,0], > [0,1]], > > [[1,0], > [0,1]], > > [[1,0], > [3,1]], > > [[1,0], > [9,3]], > > [[1,0], > [6,6]], > > [[10,0], > [2,1]] ] > > : # options > ClassBound := 19, > PcgsAutomorphisms); gap> ##Example: "11gp-SP-a-Rel-i" . . . based on: isom/11gp_a.com gap> ##(equivalent to "11gp-SP-a-i" but uses the `Relators' option) gap> F := FreeGroup("a", "b"); gap> rels := ["a^11", "b^11*[b, a, a]^-2", "[b, a, b, b, b, b]"]; [ "a^11", "b^11*[b, a, a]^-2", "[b, a, b, b, b, b]" ] gap> procId := PqStart(F : Prime := 11, Relators := rels); 3 gap> PqSetOutputLevel(procId, 0); gap> PqSPComputePcpAndPCover(procId : ClassBound := 3); gap> PqSPStandardPresentation(procId, [ [[1,0,0,0,1], > [0,1,0,0,0]], > > [[1,0,0,0,0], > [0,1,0,1,0]], > > [[1,0,0,0,0], > [0,1,0,0,1]], > > [[1,0,0,0,0], > [3,1,0,0,0]], > > [[1,0,0,0,0], > [9,3,0,0,0]], > > [[1,0,0,0,0], > [6,6,0,0,0]], > > [[10,0,0,0,0], > [2,1,0,0,0]] ] > > : # options > ClassBound := 19, > PcgsAutomorphisms); gap> PqQuitAll(); gap> ##Example: "11gp-SP-a-i" . . . based on: isom/11gp_a.com gap> F := FreeGroup("a", "b"); a := F.1; b := F.2; a b gap> R := [a^11, b^11/PqLeftNormComm([b, a, a])^2, > PqLeftNormComm([b, a, b, b, b, b])];; gap> procId := PqStart(F/R : Prime := 11); 1 gap> PqSetOutputLevel(procId, 0); gap> PqSPComputePcpAndPCover(procId : ClassBound := 3); gap> PqSPStandardPresentation(procId, [ [[1,0,0,0,1], > [0,1,0,0,0]], > > [[1,0,0,0,0], > [0,1,0,1,0]], > > [[1,0,0,0,0], > [0,1,0,0,1]], > > [[1,0,0,0,0], > [3,1,0,0,0]], > > [[1,0,0,0,0], > [9,3,0,0,0]], > > [[1,0,0,0,0], > [6,6,0,0,0]], > > [[10,0,0,0,0], > [2,1,0,0,0]] ] > > : # options > ClassBound := 19, > PcgsAutomorphisms); gap> ##Example: "11gp-SP-b-Rel-i" . . . based on: isom/11gp_b.com gap> ##(equivalent to "11gp-SP-b-i" but uses the `Relators' option) gap> F := FreeGroup("a", "b", "c"); gap> rels := ["a^11", "b^11", "c^11", "[b, a, a, a, b, a]", > "[c, a]", "[c, b]", "[b, a, b]"]; [ "a^11", "b^11", "c^11", "[b, a, a, a, b, a]", "[c, a]", "[c, b]", "[b, a, b]" ] gap> procId := PqStart(F : Prime := 11, Relators := rels); 2 gap> PqSetOutputLevel(procId, 0); gap> PqSPComputePcpAndPCover(procId : ClassBound := 3); gap> PqSPStandardPresentation(procId, [ [[1,0,0,0,0], > [0,1,0,0,1], > [0,0,1,0,0]], > > [[1,0,0,0,0], > [0,1,0,0,0], > [0,0,1,0,1]], > > [[1,0,9,0,0], > [0,1,0,0,0], > [0,0,1,0,0]], > > [[1,7,8,0,0], > [0,1,0,0,0], > [0,0,1,0,0]], > > [[10,0,0,0,0], > [0,1,0,0,0], > [0,0,1,0,0]], > > [[2,0,0,0,0], > [0,1,0,0,0], > [0,0,1,0,0]], > > [[1,0,8,0,0], > [0,1,3,0,0], > [0,0,1,0,0]], > > [[1,0,9,0,0], > [0,1,0,0,0], > [0,0,3,0,0]], > > [[1,0,2,0,0], > [0,1,0,0,0], > [0,0,10,0,0]], > > [[1,9,10,0,0], > [0,3,7,0,0], > [0,0,6,0,0]], > > [[1,5,9,0,0], > [0,7,4,0,0], > [0,0,10,0,0]]] > > : # options > ClassBound := 8, > PcgsAutomorphisms); gap> ##Example: "11gp-SP-b-i" . . . based on: isom/11gp_b.com gap> F := FreeGroup("a", "b", "c"); a := F.1; b := F.2; c := F.3; a b c gap> R := [a^11, b^11, c^11, PqLeftNormComm([b, a, a, a, b, a]), > Comm(c, a), Comm(c, b), PqLeftNormComm([b, a, b])];; gap> procId := PqStart(F/R : Prime := 11); 3 gap> PqSetOutputLevel(procId, 0); gap> PqSPComputePcpAndPCover(procId : ClassBound := 3); gap> PqSPStandardPresentation(procId, [ [[1,0,0,0,0], > [0,1,0,0,1], > [0,0,1,0,0]], > > [[1,0,0,0,0], > [0,1,0,0,0], > [0,0,1,0,1]], > > [[1,0,9,0,0], > [0,1,0,0,0], > [0,0,1,0,0]], > > [[1,7,8,0,0], > [0,1,0,0,0], > [0,0,1,0,0]], > > [[10,0,0,0,0], > [0,1,0,0,0], > [0,0,1,0,0]], > > [[2,0,0,0,0], > [0,1,0,0,0], > [0,0,1,0,0]], > > [[1,0,8,0,0], > [0,1,3,0,0], > [0,0,1,0,0]], > > [[1,0,9,0,0], > [0,1,0,0,0], > [0,0,3,0,0]], > > [[1,0,2,0,0], > [0,1,0,0,0], > [0,0,10,0,0]], > > [[1,9,10,0,0], > [0,3,7,0,0], > [0,0,6,0,0]], > > [[1,5,9,0,0], > [0,7,4,0,0], > [0,0,10,0,0]]] > > : # options > ClassBound := 8, > PcgsAutomorphisms); gap> PqQuitAll(); gap> ##Example: "11gp-SP-c-Rel-i" . . . based on: isom/11gp_c.com gap> F := FreeGroup("a", "b", "c"); gap> rels := ["a^11", "b^11", "c^11", "[b, a, a, a, b]", > "[c, a]", "[c, b]", "[b, a, b]"]; [ "a^11", "b^11", "c^11", "[b, a, a, a, b]", "[c, a]", "[c, b]", "[b, a, b]" ] gap> procId := PqStart(F : Prime := 11, Relators := rels); 1 gap> PqSPComputePcpAndPCover(procId : ClassBound := 3); gap> PqSPStandardPresentation(procId, [ [[1,0,0,0,0], > [0,1,0,0,1], > [0,0,1,0,0]], > > [[1,0,0,0,0], > [0,1,0,0,0], > [0,0,1,0,1]], > > [[1,0,9,0,0], > [0,1,0,0,0], > [0,0,1,0,0]], > > [[1,7,8,0,0], > [0,1,0,0,0], > [0,0,1,0,0]], > > [[10,0,0,0,0], > [0,1,0,0,0], > [0,0,1,0,0]], > > [[2,0,0,0,0], > [0,1,0,0,0], > [0,0,1,0,0]], > > [[1,0,8,0,0], > [0,1,3,0,0], > [0,0,1,0,0]], > > [[1,0,9,0,0], > [0,1,0,0,0], > [0,0,3,0,0]], > > [[1,0,2,0,0], > [0,1,0,0,0], > [0,0,10,0,0]], > > [[1,9,10,0,0], > [0,3,7,0,0], > [0,0,6,0,0]], > > [[1,5,9,0,0], > [0,7,4,0,0], > [0,0,10,0,0]]] > > : # options > ClassBound := 8,#for 9 perm.deg.>2^31, pq dies > PcgsAutomorphisms); gap> ##Example: "11gp-a-Rel-i" . . . based on: examples/11gpA gap> F := FreeGroup("a", "b"); gap> rels := ["[b, a, a, b, b]^11", "[a, b, b, a, b, b]^11", "(a * b)^11"]; [ "[b, a, a, b, b]^11", "[a, b, b, a, b, b]^11", "(a * b)^11" ] gap> procId := PqStart(F : Prime := 11, Relators := rels); 2 gap> PqPcPresentation(procId : ClassBound := 8, > OutputLevel := 1); #I Lower exponent-11 central series for [grp] #I Group: [grp] to lower exponent-11 central class 1 has order 11^2 #I Group: [grp] to lower exponent-11 central class 2 has order 11^4 #I Group: [grp] to lower exponent-11 central class 3 has order 11^7 #I Group: [grp] to lower exponent-11 central class 4 has order 11^11 #I Group: [grp] to lower exponent-11 central class 5 has order 11^18 #I Group: [grp] to lower exponent-11 central class 6 has order 11^28 #I Group: [grp] to lower exponent-11 central class 7 has order 11^47 #I Group: [grp] to lower exponent-11 central class 8 has order 11^78 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> ##Example: "11gp-i" . . . based on: examples/11gp gap> F := FreeGroup("a", "b", "c"); a := F.1; b := F.2; c := F.3; a b c gap> R := [PqLeftNormComm([b, a, a, b, c])^11, > PqLeftNormComm([a, b, b, a, b, c])^11, (a * b)^11];; gap> procId := PqStart(F/R : Prime := 11); 3 gap> PqPcPresentation(procId : ClassBound := 7, > OutputLevel := 1); #I Lower exponent-11 central series for [grp] #I Group: [grp] to lower exponent-11 central class 1 has order 11^3 #I Group: [grp] to lower exponent-11 central class 2 has order 11^8 #I Group: [grp] to lower exponent-11 central class 3 has order 11^19 #I Group: [grp] to lower exponent-11 central class 4 has order 11^42 #I Group: [grp] to lower exponent-11 central class 5 has order 11^98 #I Group: [grp] to lower exponent-11 central class 6 has order 11^228 #I Group: [grp] to lower exponent-11 central class 7 has order 11^563 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> PqQuitAll(); gap> ##Example: "2gp-PG-2-i" . . . based on: examples/pga_example gap> ##All class 3 descendants of C2 x C2 with extensive output gap> F := FreeGroup("a", "b"); gap> procId := PqStart(F : Prime := 2); 1 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^2 gap> PqComputePCover(procId); #I Group: [grp] to lower exponent-2 central class 2 has order 2^5 gap> PqPGSupplyAutomorphisms(procId, [ [[0,1], > [1,1]], > > [[0,1], > [1,0]] ]); gap> PqPGConstructDescendants(procId : ClassBound := 3, > PcgsAutomorphisms, > CustomiseOutput := rec(group := [,,1], > autgroup := [,1])); #I ************************************************** #I Starting group: [grp] #I Order: 2^2 #I Nuclear rank: 3 #I 2-multiplicator rank: 3 #I Group: [grp] #1;1 to lower exponent-2 central class 2 has order 2^3 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on 1^2 = 1 1 #I Non-trivial powers: #I .1^2 = .3 #I Non-trivial commutators: #I Automorphism 1: #I Generator 1 --> 1 0 1 #I Generator 2 --> 0 1 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 #I Generator 2 --> 0 1 1 #I Number of stabiliser generators is 1 #I Automorphism 1: #I Generator 1 --> 1 1 0 #I Generator 2 --> 0 1 1 #I Group: [grp] #2;1 to lower exponent-2 central class 2 has order 2^3 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I Non-trivial powers: #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I Number of stabiliser generators is 1 #I Automorphism 1: #I Generator 1 --> 0 1 0 #I Generator 2 --> 1 0 0 #I Group: [grp] #3;1 to lower exponent-2 central class 2 has order 2^3 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I Non-trivial powers: #I .1^2 = .3 #I .2^2 = .3 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 0 1 0 #I Generator 2 --> 1 1 0 #I Automorphism 2: #I Generator 1 --> 0 1 0 #I Generator 2 --> 1 0 0 #I # of immediate descendants of order 2^3 is 3 #I # of capable immediate descendants is 2 #I Group: [grp] #4;2 to lower exponent-2 central class 2 has order 2^4 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on 1^2 = 1 1 #I 4 is defined on 2^2 = 2 2 #I Non-trivial powers: #I .1^2 = .3 #I .2^2 = .4 #I Non-trivial commutators: #I Automorphism 1: #I Generator 1 --> 1 0 1 0 #I Generator 2 --> 0 1 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 1 #I Generator 2 --> 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 #I Generator 2 --> 0 1 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 #I Generator 2 --> 0 1 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 0 1 0 0 #I Generator 2 --> 1 1 0 0 #I Automorphism 2: #I Generator 1 --> 0 1 0 0 #I Generator 2 --> 1 0 0 0 #I Group: [grp] #5;2 to lower exponent-2 central class 2 has order 2^4 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Non-trivial powers: #I .1^2 = .4 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 #I Generator 2 --> 0 1 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 #I Generator 2 --> 0 1 0 1 #I Number of stabiliser generators is 1 #I Automorphism 1: #I Generator 1 --> 1 1 1 0 #I Generator 2 --> 0 1 1 1 #I Group: [grp] #6;2 to lower exponent-2 central class 2 has order 2^4 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .3 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 #I Generator 2 --> 0 1 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 #I Generator 2 --> 0 1 0 1 #I Number of stabiliser generators is 1 #I Automorphism 1: #I Generator 1 --> 1 1 1 0 #I Generator 2 --> 0 1 1 1 #I # of immediate descendants of order 2^4 is 3 #I # of capable immediate descendants is 3 #I Group: [grp] #7;3 to lower exponent-2 central class 2 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 0 1 0 0 0 #I Generator 2 --> 1 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 0 1 0 0 0 #I Generator 2 --> 1 0 0 0 0 #I # of immediate descendants of order 2^5 is 1 #I # of capable immediate descendants is 1 #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;1 #I Order: 2^3 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group: [grp] #1;1 #1;1 to lower exponent-2 central class 3 has order 2^4 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on 1^2 = 1 1 #I Class 3 #I 4 is defined on 3^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .3 #I .3^2 = .4 #I Non-trivial commutators: #I Automorphism 1: #I Generator 1 --> 1 0 0 1 #I Generator 2 --> 0 1 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 #I Generator 2 --> 0 1 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 1 0 #I Generator 2 --> 0 1 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 0 0 #I Generator 2 --> 0 1 0 1 #I Group: [grp] #1;1 #2;1 to lower exponent-2 central class 3 has order 2^4 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on 1^2 = 1 1 #I Class 3 #I 4 is defined on 3^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .3 #I .3^2 = .4 #I Non-trivial commutators: #I [ .2, .1 ] = .4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 #I Generator 2 --> 0 1 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 #I Generator 2 --> 0 1 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 1 0 #I Generator 2 --> 0 1 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 0 0 #I Generator 2 --> 0 1 0 0 #I # of immediate descendants of order 2^4 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #2;1 #I Order: 2^3 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group: [grp] #2;1 #1;1 to lower exponent-2 central class 3 has order 2^4 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I Class 3 #I 4 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .3^2 = .4 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .4 #I [ .3, .2 ] = .4 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 #I Generator 2 --> 0 1 0 1 #I Number of stabiliser generators is 1 #I Automorphism 1: #I Generator 1 --> 0 1 0 0 #I Generator 2 --> 1 0 0 0 #I Group: [grp] #2;1 #2;1 to lower exponent-2 central class 3 has order 2^4 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I Class 3 #I 4 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .3^2 = .4 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .4 #I [ .3, .2 ] = .4 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 #I Generator 2 --> 0 1 0 1 #I Number of stabiliser generators is 0 #I Group: [grp] #2;1 #3;1 to lower exponent-2 central class 3 has order 2^4 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I Class 3 #I 4 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .4 #I .3^2 = .4 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .4 #I [ .3, .2 ] = .4 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 #I Generator 2 --> 0 1 0 1 #I Number of stabiliser generators is 1 #I Automorphism 1: #I Generator 1 --> 0 1 0 0 #I Generator 2 --> 1 0 0 0 #I # of immediate descendants of order 2^4 is 3 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #3;1 #I Order: 2^3 #I Nuclear rank: 0 #I 2-multiplicator rank: 1 #I Group [grp] #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4;2 #I Order: 2^4 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I Group: [grp] #4;2 #1;1 to lower exponent-2 central class 3 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on 1^2 = 1 1 #I 4 is defined on 2^2 = 2 2 #I Class 3 #I 5 is defined on 3^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .3 #I .2^2 = .4 #I .3^2 = .5 #I Non-trivial commutators: #I Automorphism 1: #I Generator 1 --> 1 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 1 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 #I Automorphism 5: #I Generator 1 --> 1 1 0 0 0 #I Generator 2 --> 0 1 1 0 0 #I Group: [grp] #4;2 #2;1 to lower exponent-2 central class 3 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on 1^2 = 1 1 #I 4 is defined on 2^2 = 2 2 #I Class 3 #I 5 is defined on 3^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .3 #I .2^2 = .4 #I .3^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 1 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 #I Automorphism 5: #I Generator 1 --> 1 1 0 0 0 #I Generator 2 --> 0 1 1 0 0 #I # of immediate descendants of order 2^5 is 2 #I # of capable immediate descendants is 2 #I Group: [grp] #4;2 #3;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on 1^2 = 1 1 #I 4 is defined on 2^2 = 2 2 #I Class 3 #I 5 is defined on 3^2 = 1 1 1 #I 6 is defined on 4^2 = 2 2 2 #I Non-trivial powers: #I .1^2 = .3 #I .2^2 = .4 #I .3^2 = .5 #I .4^2 = .6 #I Non-trivial commutators: #I Automorphism 1: #I Generator 1 --> 1 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 6 #I Automorphism 1: #I Generator 1 --> 1 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 #I Generator 2 --> 1 1 0 0 0 0 #I Automorphism 6: #I Generator 1 --> 0 1 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 #I Group: [grp] #4;2 #4;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on 1^2 = 1 1 #I 4 is defined on 2^2 = 2 2 #I Class 3 #I 5 is defined on 3^2 = 1 1 1 #I 6 is defined on 4^2 = 2 2 2 #I Non-trivial powers: #I .1^2 = .3 #I .2^2 = .4 #I .3^2 = .5 #I .4^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 1 1 0 0 0 0 #I # of immediate descendants of order 2^6 is 2 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #I Order: 2^4 #I Nuclear rank: 3 #I 2-multiplicator rank: 4 #I Group: [grp] #5;2 #1;1 to lower exponent-2 central class 3 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .4^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 1 0 0 #I Generator 2 --> 0 1 0 0 1 #I Group: [grp] #5;2 #2;1 to lower exponent-2 central class 3 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .4, .2 ] = .5 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 1 0 0 #I Generator 2 --> 0 1 0 0 1 #I Group: [grp] #5;2 #3;1 to lower exponent-2 central class 3 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .4^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .4, .2 ] = .5 #I Number of stabiliser generators is 3 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 1 1 0 0 #I Generator 2 --> 0 1 1 1 0 #I Group: [grp] #5;2 #4;1 to lower exponent-2 central class 3 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .4, .2 ] = .5 #I Number of stabiliser generators is 3 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 1 1 0 0 #I Generator 2 --> 0 1 1 1 0 #I Group: [grp] #5;2 #5;1 to lower exponent-2 central class 3 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .3^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 #I Group: [grp] #5;2 #6;1 to lower exponent-2 central class 3 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 #I Group: [grp] #5;2 #7;1 to lower exponent-2 central class 3 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .3^2 = .5 #I .4^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 #I Number of stabiliser generators is 1 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I # of immediate descendants of order 2^5 is 7 #I # of capable immediate descendants is 3 #I Group: [grp] #5;2 #8;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .4^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .4, .2 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 1 0 0 0 #I Generator 2 --> 0 1 0 0 1 1 #I Group: [grp] #5;2 #9;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .4, .2 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 1 0 0 0 #I Generator 2 --> 0 1 0 0 1 1 #I Group: [grp] #5;2 #10;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .3^2 = .5 #I .4^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 1 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Group: [grp] #5;2 #11;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .5 #I .4^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 1 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Group: [grp] #5;2 #12;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .3^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .6 #I [ .4, .2 ] = .5 .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 1 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Group: [grp] #5;2 #13;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .6 #I [ .4, .2 ] = .5 .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 1 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Group: [grp] #5;2 #14;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .3^2 = .6 #I .4^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .6 #I [ .4, .2 ] = .5 .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Group: [grp] #5;2 #15;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .6 #I [ .4, .2 ] = .5 .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 1 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 #I Group: [grp] #5;2 #16;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .3^2 = .6 #I .4^2 = .5 .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .6 #I [ .4, .2 ] = .5 .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 3 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 1 1 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 #I Group: [grp] #5;2 #17;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .5 .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .6 #I [ .4, .2 ] = .5 .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Group: [grp] #5;2 #18;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .6 #I .3^2 = .6 #I .4^2 = .5 .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .6 #I [ .4, .2 ] = .5 .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 3 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 1 1 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 #I # of immediate descendants of order 2^6 is 11 #I # of capable immediate descendants is 10 #I Group: [grp] #5;2 #19;3 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on [3, 2] = 2 1 2 #I 7 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .3^2 = .6 #I .4^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .6 #I [ .4, .2 ] = .5 .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 1 #I Group: [grp] #5;2 #20;3 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on [3, 2] = 2 1 2 #I 7 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .6 #I [ .4, .2 ] = .5 .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 1 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Group: [grp] #5;2 #21;3 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on [3, 2] = 2 1 2 #I 7 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .6 #I .3^2 = .6 #I .4^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I [ .3, .2 ] = .6 #I [ .4, .2 ] = .5 .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 1 #I # of immediate descendants of order 2^7 is 3 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #6;2 #I Order: 2^4 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I Group: [grp] #6;2 #1;1 to lower exponent-2 central class 3 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .3 #I .4^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 1 0 0 #I Generator 2 --> 0 1 1 0 1 #I Group: [grp] #6;2 #2;1 to lower exponent-2 central class 3 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .3 #I .3^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 #I Number of stabiliser generators is 3 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 1 1 0 0 #I Generator 2 --> 0 1 1 1 0 #I Group: [grp] #6;2 #3;1 to lower exponent-2 central class 3 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .3 .5 #I .3^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 #I Number of stabiliser generators is 3 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 1 1 0 0 #I Generator 2 --> 0 1 1 1 0 #I Group: [grp] #6;2 #4;1 to lower exponent-2 central class 3 has order 2^5 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .3 #I .3^2 = .5 #I .4^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 1 0 0 #I Generator 2 --> 0 1 1 0 0 #I # of immediate descendants of order 2^5 is 4 #I # of capable immediate descendants is 3 #I Group: [grp] #6;2 #5;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .3 #I .3^2 = .5 #I .4^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 1 0 0 0 #I Generator 2 --> 0 1 1 0 1 1 #I Group: [grp] #6;2 #6;2 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I Class 3 #I 5 is defined on [3, 1] = 2 1 1 #I 6 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .3 .5 #I .3^2 = .5 #I .4^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .5 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 2 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 1 1 0 0 0 #I Generator 2 --> 0 1 1 0 1 1 #I # of immediate descendants of order 2^6 is 2 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #I Order: 2^5 #I Nuclear rank: 5 #I 2-multiplicator rank: 5 #I Group: [grp] #7;3 #1;1 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 #I Group: [grp] #7;3 #2;1 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .6 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 #I Group: [grp] #7;3 #3;1 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .6 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .6 #I Number of stabiliser generators is 6 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 #I Generator 2 --> 1 1 0 0 0 0 #I Automorphism 6: #I Generator 1 --> 0 1 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 #I Group: [grp] #7;3 #4;1 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .5, .1 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Group: [grp] #7;3 #5;1 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .5, .1 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 #I Group: [grp] #7;3 #6;1 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .6 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .5, .1 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 #I Group: [grp] #7;3 #7;1 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .6 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 #I Group: [grp] #7;3 #8;1 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .6 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 #I Group: [grp] #7;3 #9;1 to lower exponent-2 central class 3 has order 2^6 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .6 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 #I # of immediate descendants of order 2^6 is 9 #I # of capable immediate descendants is 3 #I Group: [grp] #7;3 #10;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on 4^2 = 1 1 1 #I 7 is defined on 5^2 = 2 2 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .6 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 6 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 #I Generator 2 --> 1 1 0 0 0 0 0 #I Automorphism 6: #I Generator 1 --> 0 1 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 #I Group: [grp] #7;3 #11;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [4, 2] = 1 1 2 #I 7 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 1 0 #I Group: [grp] #7;3 #12;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [4, 2] = 1 1 2 #I 7 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 1 0 #I Group: [grp] #7;3 #13;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .5, .1 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 #I Group: [grp] #7;3 #14;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .5, .1 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 #I Group: [grp] #7;3 #15;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .5, .1 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #16;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I .5^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .5, .1 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #17;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 #I Group: [grp] #7;3 #18;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .7 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 #I Group: [grp] #7;3 #19;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .7 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #20;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .7 #I .5^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #21;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #22;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #23;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #24;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .6 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #25;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #26;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .5^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 #I Group: [grp] #7;3 #27;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .6 #I .5^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 #I Group: [grp] #7;3 #28;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .7 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #29;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .7 #I .5^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 #I Group: [grp] #7;3 #30;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .6 .7 #I .5^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 #I Group: [grp] #7;3 #31;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 6 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 #I Generator 2 --> 1 1 0 0 0 0 0 #I Automorphism 6: #I Generator 1 --> 0 1 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 #I Group: [grp] #7;3 #32;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #33;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 1 1 1 0 0 0 0 #I Group: [grp] #7;3 #34;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .7 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 #I Group: [grp] #7;3 #35;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .6 .7 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 #I Generator 2 --> 1 1 0 0 0 0 0 #I Group: [grp] #7;3 #36;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .6 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 6 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 #I Generator 2 --> 1 1 0 0 0 0 0 #I Automorphism 6: #I Generator 1 --> 0 1 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 #I Group: [grp] #7;3 #37;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #38;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 1 1 1 0 0 0 0 #I Group: [grp] #7;3 #39;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .5^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 1 1 1 0 0 0 0 #I Group: [grp] #7;3 #40;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 1 1 1 0 0 0 0 #I Group: [grp] #7;3 #41;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .6 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 1 1 1 0 0 0 0 #I Group: [grp] #7;3 #42;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .6 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #43;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #44;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #45;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I Group: [grp] #7;3 #46;2 to lower exponent-2 central class 3 has order 2^7 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I .5^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 #I # of immediate descendants of order 2^7 is 37 #I # of capable immediate descendants is 28 #I Group: [grp] #7;3 #47;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [4, 2] = 1 1 2 #I 7 is defined on 4^2 = 1 1 1 #I 8 is defined on 5^2 = 2 2 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I .5^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 6 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 0 #I Generator 2 --> 1 1 0 0 0 0 0 0 #I Automorphism 6: #I Generator 1 --> 0 1 0 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 0 #I Group: [grp] #7;3 #48;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on 4^2 = 1 1 1 #I 8 is defined on 5^2 = 2 2 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I .5^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .5, .1 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 0 #I Group: [grp] #7;3 #49;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on 4^2 = 1 1 1 #I 8 is defined on 5^2 = 2 2 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .7 #I .5^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .6 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 0 #I Group: [grp] #7;3 #50;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 0 #I Group: [grp] #7;3 #51;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .8 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 0 #I Group: [grp] #7;3 #52;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .8 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 0 #I Group: [grp] #7;3 #53;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .8 #I .5^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 0 #I Group: [grp] #7;3 #54;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .8 #I .5^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #55;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .8 #I .5^2 = .6 .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #56;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .8 #I .5^2 = .7 .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #57;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .8 #I .5^2 = .6 .7 .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #58;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 1 0 0 #I Group: [grp] #7;3 #59;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .8 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #60;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .8 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 1 0 0 #I Group: [grp] #7;3 #61;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 0 #I Group: [grp] #7;3 #62;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #63;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #64;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .6 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #65;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #66;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .7 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 0 #I Group: [grp] #7;3 #67;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .6 .7 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #68;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .6 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 0 #I Group: [grp] #7;3 #69;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .6 #I .5^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #70;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .6 .7 #I .5^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 0 #I Group: [grp] #7;3 #71;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .8 #I .5^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #72;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .6 .8 #I .5^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 1 1 1 0 0 0 0 0 #I Group: [grp] #7;3 #73;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .6 .8 #I .5^2 = .6 .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 6 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 0 #I Generator 2 --> 1 1 0 0 0 0 0 0 #I Automorphism 6: #I Generator 1 --> 0 1 0 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 0 #I Group: [grp] #7;3 #74;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .7 .8 #I .5^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 0 #I Generator 2 --> 1 1 0 0 0 0 0 0 #I Group: [grp] #7;3 #75;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .6 .7 .8 #I .5^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 0 #I Group: [grp] #7;3 #76;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .8 #I .5^2 = .6 .7 .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Number of stabiliser generators is 6 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 0 #I Generator 2 --> 1 1 0 0 0 0 0 0 #I Automorphism 6: #I Generator 1 --> 0 1 0 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 0 #I Group: [grp] #7;3 #77;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on 5^2 = 2 2 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .5^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 1 1 1 0 0 0 0 0 #I Group: [grp] #7;3 #78;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on 5^2 = 2 2 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .6 #I .5^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 1 1 1 0 0 0 0 0 #I Group: [grp] #7;3 #79;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on 5^2 = 2 2 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .7 #I .5^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #80;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #81;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .8 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #82;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .8 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I Group: [grp] #7;3 #83;3 to lower exponent-2 central class 3 has order 2^8 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .8 #I .5^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 #I # of immediate descendants of order 2^8 is 37 #I # of capable immediate descendants is 37 #I Group: [grp] #7;3 #84;4 to lower exponent-2 central class 3 has order 2^9 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [4, 2] = 1 1 2 #I 8 is defined on 4^2 = 1 1 1 #I 9 is defined on 5^2 = 2 2 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .4^2 = .8 #I .5^2 = .9 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 0 0 #I Group: [grp] #7;3 #85;4 to lower exponent-2 central class 3 has order 2^9 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on 4^2 = 1 1 1 #I 9 is defined on 5^2 = 2 2 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .4^2 = .8 #I .5^2 = .9 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .6 #I [ .5, .1 ] = .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 1 #I Number of stabiliser generators is 6 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 0 0 #I Generator 2 --> 1 1 0 0 0 0 0 0 0 #I Automorphism 6: #I Generator 1 --> 0 1 0 0 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 0 0 #I Group: [grp] #7;3 #86;4 to lower exponent-2 central class 3 has order 2^9 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I 9 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .9 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 1 0 #I Group: [grp] #7;3 #87;4 to lower exponent-2 central class 3 has order 2^9 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I 9 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .9 #I .5^2 = .6 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 0 #I Group: [grp] #7;3 #88;4 to lower exponent-2 central class 3 has order 2^9 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I 9 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .9 #I .5^2 = .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 1 0 #I Group: [grp] #7;3 #89;4 to lower exponent-2 central class 3 has order 2^9 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I 9 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .9 #I .5^2 = .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 1 #I Number of stabiliser generators is 4 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 0 #I Group: [grp] #7;3 #90;4 to lower exponent-2 central class 3 has order 2^9 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I 9 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .9 #I .5^2 = .6 .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 1 0 #I Group: [grp] #7;3 #91;4 to lower exponent-2 central class 3 has order 2^9 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I 9 is defined on 4^2 = 1 1 1 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .9 #I .5^2 = .6 .7 .8 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 1 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 1 1 0 0 0 1 0 #I Group: [grp] #7;3 #92;4 to lower exponent-2 central class 3 has order 2^9 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on 4^2 = 1 1 1 #I 9 is defined on 5^2 = 2 2 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 #I .4^2 = .8 #I .5^2 = .9 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 0 #I Automorphism 6: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 1 #I Number of stabiliser generators is 5 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 1 1 1 0 0 0 0 0 0 #I # of immediate descendants of order 2^9 is 9 #I # of capable immediate descendants is 9 #I Group: [grp] #7;3 #93;5 to lower exponent-2 central class 3 has order 2^10 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I 4 is defined on 1^2 = 1 1 #I 5 is defined on 2^2 = 2 2 #I Class 3 #I 6 is defined on [3, 1] = 2 1 1 #I 7 is defined on [3, 2] = 2 1 2 #I 8 is defined on [4, 2] = 1 1 2 #I 9 is defined on 4^2 = 1 1 1 #I 10 is defined on 5^2 = 2 2 2 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .8 #I .4^2 = .9 #I .5^2 = .10 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .3, .2 ] = .7 #I [ .4, .2 ] = .8 #I [ .5, .1 ] = .6 .7 .8 #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 1 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 1 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 0 0 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 1 0 0 0 #I Automorphism 6: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 1 0 #I Automorphism 7: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 1 #I Number of stabiliser generators is 6 #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 0 0 0 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 1 0 0 0 0 0 #I Automorphism 5: #I Generator 1 --> 0 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 1 1 0 0 0 0 0 0 0 0 #I Automorphism 6: #I Generator 1 --> 0 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 1 0 0 0 0 0 0 0 0 0 #I # of immediate descendants of order 2^10 is 1 #I # of capable immediate descendants is 1 #I ************************************************** 136 gap> ##Example: "2gp-PG-3-i" . . . based on: examples/pga_3-2.com gap> ##All descendants of C2 x C2 x C2 gap> F := FreeGroup("a", "b", "c"); gap> procId := PqStart(F : Prime := 2); 2 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^3 gap> PqComputePCover(procId); #I Group: [grp] to lower exponent-2 central class 2 has order 2^9 gap> PqPGSupplyAutomorphisms(procId, [ [[1,1,0], > [0,1,0], > [0,0,1]], > > [[0,0,1], > [1,0,0], > [0,1,0]] ]); gap> PqPGConstructDescendants(procId : ClassBound := 5, > OrderBound := 7, > BasicAlgorithm); #I ************************************************** #I Starting group: [grp] #I Order: 2^3 #I Nuclear rank: 6 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^4 is 4 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 2^5 is 15 #I # of capable immediate descendants is 13 #I # of immediate descendants of order 2^6 is 28 #I # of capable immediate descendants is 28 #I # of immediate descendants of order 2^7 is 15 #I # of capable immediate descendants is 15 #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;1 #I Order: 2^4 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^5 is 3 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #2;1 #I Order: 2^4 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^5 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #I Order: 2^5 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^6 is 4 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 2^7 is 9 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #6;2 #I Order: 2^5 #I Nuclear rank: 3 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^6 is 16 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 2^7 is 106 #I # of capable immediate descendants is 54 #I ************************************************** #I Starting group: [grp] #7;2 #I Order: 2^5 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^6 is 9 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 2^7 is 13 #I # of capable immediate descendants is 9 #I ************************************************** #I Starting group: [grp] #8;2 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^6 is 3 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #9;2 #I Order: 2^5 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^6 is 11 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 2^7 is 20 #I # of capable immediate descendants is 10 #I ************************************************** #I Starting group: [grp] #10;2 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^6 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #11;2 #I Order: 2^5 #I Nuclear rank: 3 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^6 is 12 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 2^7 is 70 #I # of capable immediate descendants is 25 #I ************************************************** #I Starting group: [grp] #12;2 #I Order: 2^5 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^6 is 15 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 2^7 is 40 #I # of capable immediate descendants is 13 #I ************************************************** #I Starting group: [grp] #13;2 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^6 is 6 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #14;2 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^6 is 6 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #15;2 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^6 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #18;2 #I Order: 2^5 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^6 is 6 #I # of capable immediate descendants is 1 #I # of immediate descendants of order 2^7 is 19 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #19;2 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^6 is 4 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #20;3 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 3 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #21;3 #I Order: 2^6 #I Nuclear rank: 5 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^7 is 17 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #22;3 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 4 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #23;3 #I Order: 2^6 #I Nuclear rank: 4 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^7 is 18 #I # of capable immediate descendants is 7 #I ************************************************** #I Starting group: [grp] #24;3 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 13 #I # of capable immediate descendants is 7 #I ************************************************** #I Starting group: [grp] #25;3 #I Order: 2^6 #I Nuclear rank: 6 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 18 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #26;3 #I Order: 2^6 #I Nuclear rank: 4 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^7 is 20 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #27;3 #I Order: 2^6 #I Nuclear rank: 4 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^7 is 14 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #28;3 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 8 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #29;3 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 3 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #30;3 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 8 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #31;3 #I Order: 2^6 #I Nuclear rank: 4 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^7 is 19 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #32;3 #I Order: 2^6 #I Nuclear rank: 5 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^7 is 47 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #33;3 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 7 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #34;3 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 16 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #35;3 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 15 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #36;3 #I Order: 2^6 #I Nuclear rank: 4 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^7 is 30 #I # of capable immediate descendants is 8 #I ************************************************** #I Starting group: [grp] #37;3 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 15 #I # of capable immediate descendants is 7 #I ************************************************** #I Starting group: [grp] #38;3 #I Order: 2^6 #I Nuclear rank: 5 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^7 is 24 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #39;3 #I Order: 2^6 #I Nuclear rank: 4 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^7 is 10 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #40;3 #I Order: 2^6 #I Nuclear rank: 4 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^7 is 24 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #41;3 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #42;3 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 8 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #43;3 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 12 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #44;3 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 8 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #45;3 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 8 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #46;3 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 5 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #47;3 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 1 #I ************************************************** #I Starting group: [grp] #48;4 #I Order: 2^7 #I Nuclear rank: 6 #I 2-multiplicator rank: 8 #I Group [grp] #48;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #49;4 #I Order: 2^7 #I Nuclear rank: 8 #I 2-multiplicator rank: 10 #I Group [grp] #49;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #50;4 #I Order: 2^7 #I Nuclear rank: 6 #I 2-multiplicator rank: 8 #I Group [grp] #50;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #51;4 #I Order: 2^7 #I Nuclear rank: 6 #I 2-multiplicator rank: 8 #I Group [grp] #51;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #52;4 #I Order: 2^7 #I Nuclear rank: 6 #I 2-multiplicator rank: 8 #I Group [grp] #52;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #53;4 #I Order: 2^7 #I Nuclear rank: 7 #I 2-multiplicator rank: 9 #I Group [grp] #53;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #54;4 #I Order: 2^7 #I Nuclear rank: 8 #I 2-multiplicator rank: 10 #I Group [grp] #54;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #55;4 #I Order: 2^7 #I Nuclear rank: 7 #I 2-multiplicator rank: 9 #I Group [grp] #55;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #56;4 #I Order: 2^7 #I Nuclear rank: 7 #I 2-multiplicator rank: 9 #I Group [grp] #56;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #57;4 #I Order: 2^7 #I Nuclear rank: 6 #I 2-multiplicator rank: 8 #I Group [grp] #57;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #58;4 #I Order: 2^7 #I Nuclear rank: 6 #I 2-multiplicator rank: 8 #I Group [grp] #58;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #59;4 #I Order: 2^7 #I Nuclear rank: 6 #I 2-multiplicator rank: 8 #I Group [grp] #59;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #60;4 #I Order: 2^7 #I Nuclear rank: 6 #I 2-multiplicator rank: 8 #I Group [grp] #60;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #61;4 #I Order: 2^7 #I Nuclear rank: 6 #I 2-multiplicator rank: 8 #I Group [grp] #61;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #62;4 #I Order: 2^7 #I Nuclear rank: 7 #I 2-multiplicator rank: 9 #I Group [grp] #62;4 is an invalid starting group #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;1 #1;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^6 is 3 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #2;1 #1;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^6 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 4 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #2;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 2 #I ************************************************** #I Starting group: [grp] #5;2 #5;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I Group [grp] #5;2 #5;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #6;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I Group [grp] #5;2 #6;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #7;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #7;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #8;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #9;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #10;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^7 is 7 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #6;2 #4;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^7 is 18 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #6;2 #9;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^7 is 13 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #6;2 #17;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 7 #I Group [grp] #6;2 #17;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #18;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 7 #I Group [grp] #6;2 #18;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #19;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #19;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #20;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 7 #I Group [grp] #6;2 #20;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #21;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #21;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #22;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #22;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #23;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #23;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #24;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #24;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #25;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #25;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #26;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #26;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #27;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #27;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #28;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #28;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #29;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #29;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #32;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #32;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #33;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #33;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #35;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #35;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #43;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #43;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #46;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #46;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #51;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 7 #I Group [grp] #6;2 #51;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #52;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #52;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #53;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #53;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #54;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #54;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #58;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #58;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #59;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #59;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #60;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #60;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #64;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #64;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #68;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #68;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #71;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #71;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #75;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 7 #I Group [grp] #6;2 #75;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #76;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #76;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #77;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #77;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #78;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #78;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #79;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #79;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #80;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #80;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #81;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #81;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #87;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #87;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #91;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #91;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #93;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #93;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #99;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 7 #I Group [grp] #6;2 #99;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #100;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #100;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #102;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #102;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #103;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #103;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #105;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #105;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #106;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #106;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #108;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #108;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #109;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #109;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #111;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #111;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #112;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #112;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #114;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #114;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #115;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #115;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #117;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #117;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #118;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #118;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #120;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 7 #I Group [grp] #6;2 #120;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #121;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #6;2 #121;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 5 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #7;2 #4;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 2 #I ************************************************** #I Starting group: [grp] #7;2 #5;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;2 #10;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I Group [grp] #7;2 #10;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #11;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I Group [grp] #7;2 #11;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #12;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;2 #12;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #13;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;2 #13;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #14;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;2 #14;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #15;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;2 #15;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #16;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;2 #16;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #18;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;2 #18;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #19;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;2 #19;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 3 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #8;2 #2;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 2 #I ************************************************** #I Starting group: [grp] #9;2 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 5 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #9;2 #3;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 8 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #9;2 #8;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 2 #I ************************************************** #I Starting group: [grp] #9;2 #12;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I Group [grp] #9;2 #12;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #13;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #9;2 #13;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #14;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #9;2 #14;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #15;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #9;2 #15;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #16;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #9;2 #16;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #17;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I Group [grp] #9;2 #17;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #18;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #9;2 #18;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #23;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #9;2 #23;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #24;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #9;2 #24;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #29;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #9;2 #29;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #10;2 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #11;2 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^7 is 12 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #11;2 #11;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I # of immediate descendants of order 2^7 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #11;2 #13;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 7 #I Group [grp] #11;2 #13;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #14;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #14;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #15;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #15;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #16;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 7 #I Group [grp] #11;2 #16;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #17;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #17;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #18;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #18;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #19;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #19;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #20;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #20;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #21;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #21;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #22;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #22;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #23;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #23;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #24;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #24;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #25;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #25;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #28;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #28;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #31;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #31;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #34;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #34;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #41;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 7 #I Group [grp] #11;2 #41;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #43;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #43;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #47;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #47;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #49;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #49;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #51;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #51;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #61;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #61;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #63;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #63;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #69;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #69;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #71;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #11;2 #71;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 9 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #12;2 #8;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 9 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #12;2 #16;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #12;2 #16;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #18;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I Group [grp] #12;2 #18;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #19;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #12;2 #19;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #20;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #12;2 #20;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #24;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #12;2 #24;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #25;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #12;2 #25;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #26;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #12;2 #26;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #28;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #12;2 #28;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #32;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #12;2 #32;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #33;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #12;2 #33;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #36;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #12;2 #36;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #38;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #12;2 #38;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #40;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #12;2 #40;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #13;2 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #13;2 #3;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 2 #I ************************************************** #I Starting group: [grp] #14;2 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #14;2 #2;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 2 #I ************************************************** #I Starting group: [grp] #15;2 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #18;2 #2;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #18;2 #8;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #18;2 #8;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #11;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #18;2 #11;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #14;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I Group [grp] #18;2 #14;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #15;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #18;2 #15;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #23;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #18;2 #23;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #24;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #18;2 #24;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #19;2 #3;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 4 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #20;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #20;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #20;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #20;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #20;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #20;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #21;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #21;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #21;3 #6;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #21;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #21;3 #11;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #21;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #22;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #22;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #22;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #22;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #22;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #22;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #23;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #23;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #23;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #23;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #23;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #23;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #23;3 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #23;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #23;3 #7;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #23;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #23;3 #13;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #23;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #23;3 #15;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #23;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #24;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #24;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #24;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #24;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #24;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #24;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #24;3 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #24;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #24;3 #9;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #24;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #24;3 #10;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #24;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #24;3 #11;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #24;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #25;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #25;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #25;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #25;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #25;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #25;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #25;3 #8;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #25;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #25;3 #12;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #25;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #26;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #26;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;3 #6;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #26;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;3 #8;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #26;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;3 #11;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #26;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;3 #12;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #26;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #27;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #27;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #27;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #27;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #27;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #27;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #27;3 #7;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #27;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #27;3 #8;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #27;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #28;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #28;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #28;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #28;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #28;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #28;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #28;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #28;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #29;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #29;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #30;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #30;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #30;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #30;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #30;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #30;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #30;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #30;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #30;3 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #30;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #31;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #31;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #31;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #31;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #31;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #31;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #31;3 #10;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #31;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #31;3 #15;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #31;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #31;3 #17;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #31;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #32;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #32;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #32;3 #6;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #32;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #32;3 #11;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #32;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #32;3 #21;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #32;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #32;3 #25;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #32;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #32;3 #30;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #32;3 #30;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #33;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #33;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #33;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #33;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #33;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #33;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #33;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #33;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #33;3 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #33;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #33;3 #6;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #33;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #34;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #34;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #34;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #34;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #34;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #34;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #34;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #34;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #34;3 #12;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #34;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #34;3 #14;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #34;3 #14;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #35;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #35;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #35;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #35;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #35;3 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #35;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #35;3 #9;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #35;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #35;3 #10;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #35;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #36;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #36;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #36;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #36;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #36;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #36;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #36;3 #8;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #36;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #36;3 #11;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #36;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #36;3 #17;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #36;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #36;3 #19;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #36;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #36;3 #29;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #36;3 #29;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #37;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #37;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #37;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #37;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #37;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #37;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #37;3 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #37;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #37;3 #7;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #37;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #37;3 #10;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #37;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #37;3 #13;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #37;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #38;3 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #38;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #38;3 #7;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #38;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #38;3 #13;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #38;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #39;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #39;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #39;3 #7;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #39;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #40;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #40;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #40;3 #6;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #40;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #40;3 #12;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #40;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #40;3 #15;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #40;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #40;3 #16;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #40;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #41;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #41;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;3 #6;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #41;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #42;3 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #42;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #42;3 #7;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #42;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #43;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #43;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #43;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #43;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #43;3 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #43;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #43;3 #6;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #43;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #43;3 #7;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #43;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #44;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #44;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #44;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #44;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #44;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #44;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #44;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #44;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #44;3 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #44;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #44;3 #6;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #44;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #45;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #45;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #45;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #45;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #45;3 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #45;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #46;3 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #46;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #46;3 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #46;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #46;3 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #46;3 #3;1 is an invalid starting group #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;1 #1;1 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 3 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #2;1 #1;1 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #5;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #1;1 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #5;2 #1;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #6;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #4;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #6;2 #4;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #4;1 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #6;2 #4;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #4;1 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #6;2 #4;1 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #4;1 #13;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #6;2 #4;1 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #9;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #6;2 #9;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #7;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #5;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #7;2 #5;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #5;1 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #7;2 #5;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #8;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #1;1 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #8;2 #1;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #9;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #3;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #9;2 #3;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #3;1 #6;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #9;2 #3;1 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #10;2 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #10;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #11;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #11;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #11;2 #11;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #12;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #8;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #12;2 #8;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #13;2 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #13;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #13;2 #1;1 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #13;2 #1;1 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #14;2 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #14;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #14;2 #1;1 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #14;2 #1;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #15;2 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #15;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #2;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #18;2 #2;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #19;2 #3;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #19;2 #3;1 #1;1 is an invalid starting group #I ************************************************** 365 gap> ##Example: "2gp-PG-4-i" . . . based on: examples/pga_4-2.com gap> ##All descendants of C2 x C2 x C2 x C2 gap> F := FreeGroup("a", "b", "c", "d"); gap> procId := PqStart(F : Prime := 2); 3 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^4 gap> PqComputePCover(procId); #I Group: [grp] to lower exponent-2 central class 2 has order 2^14 gap> PqPGSupplyAutomorphisms(procId, [ [[1,1,0,0], > [0,1,0,0], > [0,0,1,0], > [0,0,0,1]], > > [[0,0,0,1], > [1,0,0,0], > [0,1,0,0], > [0,0,1,0]] ]); gap> PqPGConstructDescendants(procId : ClassBound := 4, > OrderBound := 8, > BasicAlgorithm); #I ************************************************** #I Starting group: [grp] #I Order: 2^4 #I Nuclear rank: 10 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^5 is 6 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 2^6 is 54 #I # of capable immediate descendants is 29 #I # of immediate descendants of order 2^7 is 604 #I # of capable immediate descendants is 439 #I # of immediate descendants of order 2^8 is 3566 #I # of capable immediate descendants is 3458 #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^6 is 4 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #2;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^6 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #7;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^7 is 7 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 2^8 is 33 #I # of capable immediate descendants is 11 #I ************************************************** #I Starting group: [grp] #8;2 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^7 is 26 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 2^8 is 440 #I # of capable immediate descendants is 96 #I ************************************************** #I Starting group: [grp] #9;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^7 is 15 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 2^8 is 59 #I # of capable immediate descendants is 16 #I ************************************************** #I Starting group: [grp] #10;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 9 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #11;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^7 is 32 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 2^8 is 252 #I # of capable immediate descendants is 35 #I ************************************************** #I Starting group: [grp] #12;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #13;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 8 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #14;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #15;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #16;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 8 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #17;2 #I Order: 2^6 #I Nuclear rank: 3 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^7 is 33 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 2^8 is 1004 #I # of capable immediate descendants is 107 #I ************************************************** #I Starting group: [grp] #18;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^7 is 41 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 2^8 is 494 #I # of capable immediate descendants is 37 #I ************************************************** #I Starting group: [grp] #19;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 15 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #20;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 15 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #21;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 28 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #22;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 15 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #26;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^7 is 14 #I # of capable immediate descendants is 1 #I # of immediate descendants of order 2^8 is 163 #I # of capable immediate descendants is 14 #I ************************************************** #I Starting group: [grp] #27;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #28;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 19 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #30;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 19 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #31;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 21 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #32;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 19 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #33;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 19 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #41;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^7 is 30 #I # of capable immediate descendants is 1 #I # of immediate descendants of order 2^8 is 570 #I # of capable immediate descendants is 24 #I ************************************************** #I Starting group: [grp] #42;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 40 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #43;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 24 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #44;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #45;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 13 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #46;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^7 is 13 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #61;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 7 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #62;3 #I Order: 2^7 #I Nuclear rank: 5 #I 2-multiplicator rank: 12 #I # of immediate descendants of order 2^8 is 29 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #63;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #64;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 52 #I # of capable immediate descendants is 7 #I ************************************************** #I Starting group: [grp] #65;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 38 #I # of capable immediate descendants is 7 #I ************************************************** #I Starting group: [grp] #66;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 22 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #67;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #68;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #69;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #70;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 22 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #71;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #72;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #73;3 #I Order: 2^7 #I Nuclear rank: 6 #I 2-multiplicator rank: 13 #I # of immediate descendants of order 2^8 is 47 #I # of capable immediate descendants is 7 #I ************************************************** #I Starting group: [grp] #74;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 56 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #75;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 34 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #76;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 36 #I # of capable immediate descendants is 8 #I ************************************************** #I Starting group: [grp] #77;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #78;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 7 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #79;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #80;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 19 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #81;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 24 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #82;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 61 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #83;3 #I Order: 2^7 #I Nuclear rank: 5 #I 2-multiplicator rank: 12 #I # of immediate descendants of order 2^8 is 125 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #84;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 26 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #85;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 57 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #86;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 40 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #87;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 44 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #88;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 79 #I # of capable immediate descendants is 8 #I ************************************************** #I Starting group: [grp] #89;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 34 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #90;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 41 #I # of capable immediate descendants is 7 #I ************************************************** #I Starting group: [grp] #91;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #92;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 24 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #93;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 57 #I # of capable immediate descendants is 7 #I ************************************************** #I Starting group: [grp] #94;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #95;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 47 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #96;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 75 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #97;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 35 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #98;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 35 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #99;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 34 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #100;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #101;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #102;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 31 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #103;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 27 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #104;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 48 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #105;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 7 #I ************************************************** #I Starting group: [grp] #106;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 29 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #107;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 55 #I # of capable immediate descendants is 7 #I ************************************************** #I Starting group: [grp] #108;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #109;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #110;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #111;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 21 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #112;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 21 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #113;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 24 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #114;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #115;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #116;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #117;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 35 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #118;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 35 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #119;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 35 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #120;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 35 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #121;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 40 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #122;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 30 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #123;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 22 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #124;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 27 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #125;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #126;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #127;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #128;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #129;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #130;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #131;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #132;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #133;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #134;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #135;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 39 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #136;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 22 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #137;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 22 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #138;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 37 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #139;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #140;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 26 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #141;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 7 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #142;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 7 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #143;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 7 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #144;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 50 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #145;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 24 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #146;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #147;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #148;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 37 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #149;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #150;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 26 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #151;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 7 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #152;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 7 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #153;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 7 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #154;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 58 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #155;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 52 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #156;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 33 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #157;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 65 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #158;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 33 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #159;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 33 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #160;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 33 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #161;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 24 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #162;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 31 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #163;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 33 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #164;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #165;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #166;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #167;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #168;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 9 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #169;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #170;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #171;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #172;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #173;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #174;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #175;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 9 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #176;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #177;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #178;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #179;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #180;3 #I Order: 2^7 #I Nuclear rank: 5 #I 2-multiplicator rank: 12 #I # of immediate descendants of order 2^8 is 64 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #181;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 28 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #182;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 73 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #183;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 19 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #184;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #185;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 24 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #186;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 30 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #187;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 23 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #188;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #189;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 19 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #190;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 13 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #191;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #192;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #193;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 21 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #194;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #195;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 11 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #196;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 2 #I ************************************************** #I Starting group: [grp] #199;3 #I Order: 2^7 #I Nuclear rank: 5 #I 2-multiplicator rank: 12 #I # of immediate descendants of order 2^8 is 82 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #200;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #201;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 58 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #202;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 56 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #203;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 92 #I # of capable immediate descendants is 7 #I ************************************************** #I Starting group: [grp] #204;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 90 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #205;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 56 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #206;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 122 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #207;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 50 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #208;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 50 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #209;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 50 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #210;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 50 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #211;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 50 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #212;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 85 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #213;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 50 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #214;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #215;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #216;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 25 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #217;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #218;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #219;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #220;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 124 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #221;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #222;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #223;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #224;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 85 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #225;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #226;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #227;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 78 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #228;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #229;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 94 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #230;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 44 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #231;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 47 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #232;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 48 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #233;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 38 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #234;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #235;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #236;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #237;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #238;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #239;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #240;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #241;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #242;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #243;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #244;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #245;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #246;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #247;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #248;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #249;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #250;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #251;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 38 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #252;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #253;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #254;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #255;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #256;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #257;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #258;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #259;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 38 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #260;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #261;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #262;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #263;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #264;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #265;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #266;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #267;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #268;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #269;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #270;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #271;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #272;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #273;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #274;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #275;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #276;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #277;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #278;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 18 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #279;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #280;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #281;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #282;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 33 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #283;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 18 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #284;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #285;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #286;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #287;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #288;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #291;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 2 #I ************************************************** #I Starting group: [grp] #292;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #294;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #295;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #296;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #297;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 43 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #298;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #299;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #300;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 18 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #302;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #308;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #315;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #317;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #330;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #331;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 45 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #332;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 38 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #333;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 40 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #334;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 38 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #335;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 68 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #336;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 68 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #337;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 71 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #338;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 43 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #339;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #340;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 40 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #341;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 38 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #342;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 29 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #343;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #344;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 33 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #345;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #346;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #347;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 18 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #348;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #349;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #350;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #351;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 38 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #352;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #353;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #354;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #355;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #356;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #357;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 18 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #358;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 18 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #359;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 17 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #360;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #361;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #362;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #363;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #364;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #367;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 2 #I ************************************************** #I Starting group: [grp] #368;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 2 #I ************************************************** #I Starting group: [grp] #375;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #376;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 18 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #377;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #378;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #379;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #380;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #387;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 18 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #388;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 18 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #394;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 24 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #395;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #396;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #397;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #398;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #399;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #400;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #405;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #406;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #407;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #409;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #410;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 22 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #411;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 27 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #412;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 25 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #413;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 42 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #414;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 40 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #415;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 30 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #416;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 40 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #417;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 26 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #418;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #419;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #420;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #421;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #422;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #423;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #424;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #425;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #426;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #427;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 21 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #428;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #429;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #430;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #431;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #432;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #433;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #434;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #435;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 18 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #436;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 15 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #437;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #438;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #440;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 3 #I ************************************************** #I Starting group: [grp] #452;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 19 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #453;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 18 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #454;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 15 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #455;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 13 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #456;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #457;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #458;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #459;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #460;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #464;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 48 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #465;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 75 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #466;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 38 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #467;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #468;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #469;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #470;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #471;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 29 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #472;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #473;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 38 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #474;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #475;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 22 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #476;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 38 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #477;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 72 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #478;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #479;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 26 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #480;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 26 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #481;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #482;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #483;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #484;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 40 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #485;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #486;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #487;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #488;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #489;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #490;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #491;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #492;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #493;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #494;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #495;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #496;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #497;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #498;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #499;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #500;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #501;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #502;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #503;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #504;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #505;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #506;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #507;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #508;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #509;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #510;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #511;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #512;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #513;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #514;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #515;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #516;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #517;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #518;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #519;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #520;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #521;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #522;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #523;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #524;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #525;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #526;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #527;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #528;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #529;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #530;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #545;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 4 #I ************************************************** #I Starting group: [grp] #556;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 2 #I ************************************************** #I Starting group: [grp] #578;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 2 #I ************************************************** #I Starting group: [grp] #600;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 2 #I ************************************************** #I Starting group: [grp] #608;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #609;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #610;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #611;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #612;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #613;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #614;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #615;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #616;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #617;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #618;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #619;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #622;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 3 #I ************************************************** #I Starting group: [grp] #636;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 2 #I ************************************************** #I Starting group: [grp] #638;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 3 #I ************************************************** #I Starting group: [grp] #642;3 #I Order: 2^7 #I Nuclear rank: 6 #I 2-multiplicator rank: 13 #I # of immediate descendants of order 2^8 is 24 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #643;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 51 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #644;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 25 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #645;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 46 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #646;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 42 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #647;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #648;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #649;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #650;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 40 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #651;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #652;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 35 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #653;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 29 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #654;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 32 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #655;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 9 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #656;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #657;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #658;3 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I # of immediate descendants of order 2^8 is 11 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #663;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #664;3 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #665;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #665;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #666;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #666;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #667;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #667;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #668;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #668;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #669;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #669;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #670;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #670;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #671;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #671;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #672;4 #I Order: 2^8 #I Nuclear rank: 8 #I 2-multiplicator rank: 14 #I Group [grp] #672;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #673;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #673;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #674;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #674;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #675;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #675;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #676;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #676;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #677;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #677;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #678;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #678;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #679;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #679;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #680;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #680;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #681;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #681;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #682;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #682;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #683;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #683;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #684;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #684;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #685;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #685;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #686;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #686;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #687;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #687;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #688;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #688;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #689;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #689;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #690;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #690;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #691;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #691;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #692;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #692;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #693;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #693;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #694;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #694;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #695;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #695;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #696;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #696;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #697;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #697;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #698;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #698;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #699;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #699;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #700;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #700;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #701;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #701;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #702;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #702;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #703;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #703;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #704;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #704;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #705;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #705;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #706;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #706;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #707;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #707;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #708;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #708;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #709;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #709;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #710;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #710;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #711;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #711;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #712;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #712;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #713;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #713;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #714;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #714;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #715;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #715;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #716;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #716;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #717;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #717;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #718;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #718;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #719;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #719;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #720;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #720;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #721;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #721;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #722;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #722;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #723;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #723;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #724;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #724;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #725;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #725;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #726;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #726;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #727;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #727;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #728;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #728;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #729;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #729;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #730;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #730;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #731;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #731;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #732;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #732;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #733;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #733;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #734;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #734;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #735;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #735;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #736;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #736;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #737;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #737;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #738;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #738;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #739;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #739;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #740;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #740;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #741;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #741;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #742;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #742;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #743;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #743;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #744;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #744;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #745;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #745;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #746;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #746;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #747;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #747;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #748;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #748;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #749;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #749;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #750;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #750;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #751;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #751;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #752;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #752;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #753;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #753;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #754;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #754;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #755;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #755;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #756;4 #I Order: 2^8 #I Nuclear rank: 8 #I 2-multiplicator rank: 14 #I Group [grp] #756;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #757;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #757;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #758;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #758;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #759;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #759;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #760;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #760;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #761;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #761;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #762;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #762;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #763;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #763;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #764;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #764;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #765;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #765;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #766;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #766;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #767;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #767;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #768;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #768;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #769;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #769;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #770;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #770;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #771;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #771;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #772;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #772;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #773;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #773;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #774;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #774;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #775;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #775;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #776;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #776;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #777;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #777;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #778;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #778;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #779;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #779;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #780;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #780;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #781;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #781;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #782;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #782;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #783;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #783;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #784;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #784;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #785;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #785;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #786;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #786;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #787;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #787;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #788;4 #I Order: 2^8 #I Nuclear rank: 8 #I 2-multiplicator rank: 14 #I Group [grp] #788;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #789;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #789;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #790;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #790;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #791;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #791;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #792;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #792;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #793;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #793;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #794;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #794;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #795;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #795;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #796;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #796;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #797;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #797;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #798;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #798;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #799;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #799;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #800;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #800;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #801;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #801;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #802;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #802;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #803;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #803;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #804;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #804;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #805;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #805;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #806;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #806;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #807;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #807;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #808;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #808;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #809;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #809;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #810;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #810;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #811;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #811;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #812;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #812;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #813;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #813;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #814;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #814;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #815;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #815;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #816;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #816;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #817;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #817;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #818;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #818;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #819;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #819;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #820;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #820;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #821;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #821;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #822;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #822;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #823;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #823;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #824;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #824;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #825;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #825;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #826;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #826;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #827;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #827;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #828;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #828;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #829;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #829;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #830;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #830;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #831;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #831;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #832;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #832;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #833;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #833;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #834;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #834;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #835;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #835;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #836;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #836;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #837;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #837;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #838;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #838;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #839;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #839;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #840;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #840;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #841;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #841;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #842;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #842;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #843;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #843;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #844;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #844;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #845;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #845;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #846;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #846;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #847;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #847;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #848;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #848;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #849;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #849;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #850;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #850;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #851;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #851;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #852;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #852;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #853;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #853;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #854;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #854;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #855;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #855;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #856;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #856;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #857;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #857;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #858;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #858;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #859;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #859;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #860;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #860;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #861;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #861;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #862;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #862;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #863;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #863;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #864;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #864;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #865;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #865;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #866;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #866;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #867;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #867;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #868;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #868;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #869;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #869;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #870;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #870;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #871;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #871;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #872;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #872;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #873;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #873;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #874;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #874;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #875;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #875;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #876;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #876;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #877;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #877;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #878;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #878;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #879;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #879;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #880;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #880;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #881;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #881;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #882;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #882;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #883;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #883;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #884;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #884;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #885;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #885;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #886;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #886;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #887;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #887;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #888;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #888;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #889;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #889;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #890;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #890;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #891;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #891;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #892;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #892;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #893;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #893;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #894;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #894;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #895;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #895;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #896;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #896;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #897;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #897;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #898;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #898;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #899;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #899;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #900;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #900;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #901;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #901;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #902;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #902;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #903;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #903;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #904;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #904;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #905;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #905;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #906;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #906;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #907;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #907;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #908;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #908;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #909;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #909;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #910;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #910;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #911;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #911;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #912;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #912;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #913;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #913;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #914;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #914;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #915;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #915;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #916;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #916;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #917;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #917;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #918;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #918;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #919;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #919;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #920;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #920;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #921;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #921;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #922;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #922;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #923;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #923;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #924;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #924;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #925;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #925;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #926;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #926;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #927;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #927;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #928;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #928;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #929;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #929;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #930;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #930;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #931;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #931;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #932;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #932;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #933;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #933;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #934;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #934;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #935;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #935;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #936;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #936;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #937;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #937;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #938;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #938;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #939;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #939;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #940;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #940;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #941;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #941;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #942;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #942;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #943;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #943;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #944;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #944;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #945;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #945;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #946;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #946;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #947;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #947;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #948;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #948;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #949;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #949;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #950;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #950;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #951;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #951;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #952;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #952;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #953;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #953;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #954;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #954;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #955;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #955;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #956;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #956;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #957;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #957;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #958;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #958;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #959;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #959;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #960;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #960;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #961;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #961;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #962;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #962;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #963;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #963;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #964;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #964;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #965;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #965;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #966;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #966;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #967;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #967;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #968;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #968;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #969;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #969;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #970;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #970;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #971;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #971;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #972;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #972;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #973;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #973;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #974;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #974;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #975;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #975;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #976;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #976;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #977;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #977;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #978;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #978;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #979;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #979;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #980;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #980;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #981;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #981;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #982;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #982;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #983;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #983;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #984;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #984;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #985;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #985;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #986;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #986;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #987;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #987;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #988;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #988;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #989;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #989;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #990;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #990;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #991;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #991;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #992;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #992;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #993;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #993;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #994;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #994;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #995;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #995;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #996;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #996;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #997;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #997;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #998;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #998;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #999;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #999;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1000;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1000;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1001;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1001;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1002;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1002;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1003;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1003;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1004;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1004;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1005;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1005;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1006;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1006;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1007;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1007;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1008;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1008;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1009;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1009;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1010;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1010;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1011;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1011;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1012;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1012;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1013;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1013;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1014;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1014;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1015;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1015;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1016;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1016;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1017;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1017;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1018;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1018;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1019;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1019;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1020;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1020;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1021;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1021;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1022;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1022;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1023;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1023;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1024;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1024;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1025;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1025;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1026;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1026;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1027;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1027;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1028;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1028;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1029;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1029;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1030;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1030;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1031;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1031;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1032;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1032;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1033;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1033;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1034;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1034;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1035;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1035;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1036;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1036;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1037;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1037;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1038;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1038;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1039;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1039;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1040;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1040;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1041;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1041;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1042;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1042;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1043;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1043;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1044;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1044;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1045;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1045;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1046;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1046;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1047;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1047;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1048;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1048;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1049;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1049;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1050;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1050;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1051;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1051;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1052;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1052;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1053;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1053;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1054;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1054;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1055;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #1055;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1056;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1056;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1057;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1057;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1058;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1058;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1059;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1059;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1060;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1060;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1061;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1061;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1062;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1062;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1063;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1063;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1064;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1064;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1065;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1065;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1066;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1066;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1067;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1067;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1068;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1068;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1069;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1069;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1070;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1070;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1071;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1071;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1072;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1072;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1073;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1073;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1074;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1074;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1075;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1075;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1076;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1076;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1077;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1077;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1078;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1078;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1079;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1079;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1080;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1080;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1081;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1081;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1082;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1082;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1083;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1083;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1084;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1084;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1085;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1085;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1086;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1086;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1087;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1087;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1088;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1088;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1089;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1089;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1090;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1090;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1091;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1091;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1092;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1092;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1093;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1093;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1094;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1094;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1095;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1095;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1096;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1096;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1097;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1097;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1098;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1098;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1099;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1099;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1100;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1100;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1101;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1101;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1102;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1102;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1103;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1103;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1104;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1104;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1105;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1105;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1106;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1106;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1107;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1107;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1108;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1108;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1109;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1109;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1110;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1110;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1111;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1111;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1112;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1112;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1113;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1113;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1114;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1114;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1115;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1115;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1116;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1116;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1117;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1117;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1118;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1118;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1119;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1119;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1120;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1120;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1121;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1121;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1122;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1122;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1123;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1123;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1124;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1124;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1125;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1125;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1126;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1126;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1127;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1127;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1128;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1128;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1129;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1129;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1130;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1130;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1131;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1131;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1132;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1132;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1133;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1133;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1134;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1134;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1135;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1135;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1136;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1136;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1137;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1137;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1138;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1138;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1139;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1139;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1140;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1140;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1141;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1141;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1142;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1142;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1143;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1143;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1144;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1144;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1145;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1145;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1146;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1146;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1147;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1147;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1148;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1148;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1149;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1149;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1150;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1150;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1151;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1151;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1152;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1152;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1153;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1153;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1154;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1154;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1155;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1155;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1156;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1156;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1157;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1157;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1158;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1158;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1159;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1159;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1160;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1160;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1161;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1161;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1162;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1162;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1163;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1163;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1164;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1164;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1165;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1165;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1166;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1166;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1167;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1167;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1168;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1168;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1169;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1169;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1170;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1170;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1171;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1171;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1172;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1172;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1173;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1173;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1174;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1174;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1175;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1175;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1176;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1176;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1177;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1177;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1178;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1178;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1179;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1179;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1180;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1180;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1181;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1181;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1182;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1182;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1183;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1183;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1184;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1184;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1185;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1185;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1186;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1186;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1187;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1187;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1188;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1188;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1189;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1189;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1190;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1190;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1191;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1191;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1192;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1192;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1193;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1193;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1194;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1194;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1195;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1195;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1196;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1196;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1197;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1197;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1198;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1198;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1199;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1199;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1200;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1200;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1201;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1201;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1202;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1202;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1203;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1203;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1204;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1204;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1205;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1205;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1206;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1206;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1207;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1207;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1208;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1208;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1209;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1209;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1210;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1210;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1211;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1211;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1212;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1212;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1213;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1213;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1214;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1214;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1215;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1215;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1216;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1216;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1217;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1217;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1218;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1218;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1219;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1219;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1220;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1220;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1221;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1221;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1222;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1222;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1223;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1223;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1224;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1224;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1225;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1225;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1226;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1226;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1227;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1227;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1228;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1228;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1229;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1229;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1230;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1230;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1231;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1231;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1232;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1232;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1233;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1233;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1234;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1234;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1235;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1235;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1236;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1236;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1237;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1237;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1238;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1238;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1239;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1239;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1240;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1240;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1241;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1241;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1242;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1242;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1243;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1243;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1244;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1244;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1245;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1245;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1246;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1246;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1247;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1247;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1248;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1248;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1249;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1249;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1250;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1250;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1251;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1251;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1252;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1252;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1253;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1253;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1254;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1254;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1255;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1255;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1256;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #1256;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1257;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #1257;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1258;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1258;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1259;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1259;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1260;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1260;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1261;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1261;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1262;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1262;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1263;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1263;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1264;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1264;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1265;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1265;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1266;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1266;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1267;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1267;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1268;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1268;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1269;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1269;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1270;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1270;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1271;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1271;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1272;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1272;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1273;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1273;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1274;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1274;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1275;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1275;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1276;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1276;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1277;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1277;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1278;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1278;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1279;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1279;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1280;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1280;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1281;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1281;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1282;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1282;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1283;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1283;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1284;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1284;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1285;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1285;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1286;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1286;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1287;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1287;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1288;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1288;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1289;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1289;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1290;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1290;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1291;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1291;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1292;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1292;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1293;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1293;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1294;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1294;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1295;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1295;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1296;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1296;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1297;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1297;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1298;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1298;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1299;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1299;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1300;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1300;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1301;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1301;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1302;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1302;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1303;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1303;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1304;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1304;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1305;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1305;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1306;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1306;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1307;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1307;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1308;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1308;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1309;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1309;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1310;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1310;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1311;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1311;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1312;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1312;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1313;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1313;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1314;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1314;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1315;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1315;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1316;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1316;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1317;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1317;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1318;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1318;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1319;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1319;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1320;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1320;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1321;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1321;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1322;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1322;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1323;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1323;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1324;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1324;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1325;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1325;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1326;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1326;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1327;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1327;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1328;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1328;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1329;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1329;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1330;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1330;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1331;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1331;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1332;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1332;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1333;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1333;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1334;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1334;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1335;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1335;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1336;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1336;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1337;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1337;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1338;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1338;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1339;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1339;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1340;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1340;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1341;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1341;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1342;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1342;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1343;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1343;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1344;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1344;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1345;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1345;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1346;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1346;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1347;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1347;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1348;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1348;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1349;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1349;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1350;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1350;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1351;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1351;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1352;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1352;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1353;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1353;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1354;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1354;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1355;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1355;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1356;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1356;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1357;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1357;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1358;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1358;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1359;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1359;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1360;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1360;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1361;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1361;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1362;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1362;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1363;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1363;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1364;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1364;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1365;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1365;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1366;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1366;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1367;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1367;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1368;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1368;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1369;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1369;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1370;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1370;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1371;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1371;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1372;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1372;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1373;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1373;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1374;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1374;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1375;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1375;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1376;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1376;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1377;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1377;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1378;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1378;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1379;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1379;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1380;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1380;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1381;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1381;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1382;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1382;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1383;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1383;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1384;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1384;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1385;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1385;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1386;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1386;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1387;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1387;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1388;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1388;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1389;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1389;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1390;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1390;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1391;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1391;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1392;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1392;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1393;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1393;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1394;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1394;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1395;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1395;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1396;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1396;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1397;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1397;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1398;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1398;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1399;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1399;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1400;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1400;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1401;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1401;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1402;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1402;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1403;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1403;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1404;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1404;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1405;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1405;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1406;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1406;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1407;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1407;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1408;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1408;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1409;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1409;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1410;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1410;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1411;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1411;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1412;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1412;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1413;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1413;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1414;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1414;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1415;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1415;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1416;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1416;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1417;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1417;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1418;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1418;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1419;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1419;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1420;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1420;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1421;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1421;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1422;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1422;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1423;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1423;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1424;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1424;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1425;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1425;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1426;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1426;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1427;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1427;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1428;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1428;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1429;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1429;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1430;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1430;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1431;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1431;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1432;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1432;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1433;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1433;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1434;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1434;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1435;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1435;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1436;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1436;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1437;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1437;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1438;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1438;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1439;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1439;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1440;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1440;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1441;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1441;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1442;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1442;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1443;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1443;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1444;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1444;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1445;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1445;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1446;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1446;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1447;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1447;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1448;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1448;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1449;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1449;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1450;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1450;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1451;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1451;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1452;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1452;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1453;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1453;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1454;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1454;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1455;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1455;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1456;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1456;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1457;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1457;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1458;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1458;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1459;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1459;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1460;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1460;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1461;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1461;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1462;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1462;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1463;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1463;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1464;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1464;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1465;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1465;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1466;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1466;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1467;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1467;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1468;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1468;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1469;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1469;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1470;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1470;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1471;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1471;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1472;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1472;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1473;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1473;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1474;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1474;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1475;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1475;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1476;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1476;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1477;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1477;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1478;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1478;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1479;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1479;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1480;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1480;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1481;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1481;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1482;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1482;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1483;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1483;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1484;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1484;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1485;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1485;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1486;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1486;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1487;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1487;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1488;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1488;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1489;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1489;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1490;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1490;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1491;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1491;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1492;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1492;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1493;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1493;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1494;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1494;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1495;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1495;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1496;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1496;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1497;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1497;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1498;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1498;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1499;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1499;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1500;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1500;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1501;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1501;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1502;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1502;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1503;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1503;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1504;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1504;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1505;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1505;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1506;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1506;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1507;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1507;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1508;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1508;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1509;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1509;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1510;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1510;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1511;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1511;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1512;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1512;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1513;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1513;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1514;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1514;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1515;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1515;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1516;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1516;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1517;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1517;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1518;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1518;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1519;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1519;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1520;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1520;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1521;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1521;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1522;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1522;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1523;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1523;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1524;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1524;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1525;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1525;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1526;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1526;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1527;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1527;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1528;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1528;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1529;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1529;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1530;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1530;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1531;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1531;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1532;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1532;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1533;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1533;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1534;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1534;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1535;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1535;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1536;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1536;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1537;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1537;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1538;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1538;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1539;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1539;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1540;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1540;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1541;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1541;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1542;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1542;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1543;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1543;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1544;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1544;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1545;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1545;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1546;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1546;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1547;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1547;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1548;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1548;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1549;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1549;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1550;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1550;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1551;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1551;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1552;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1552;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1553;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1553;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1554;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1554;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1555;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1555;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1556;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1556;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1557;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1557;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1558;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1558;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1559;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1559;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1560;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1560;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1561;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1561;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1562;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1562;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1563;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1563;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1564;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1564;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1565;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1565;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1566;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1566;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1567;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1567;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1568;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1568;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1569;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1569;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1570;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1570;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1571;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1571;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1572;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1572;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1573;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1573;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1574;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1574;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1575;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1575;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1576;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1576;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1577;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1577;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1578;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1578;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1579;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1579;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1580;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1580;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1581;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1581;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1582;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1582;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1583;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1583;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1584;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1584;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1585;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1585;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1586;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1586;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1587;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1587;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1588;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1588;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1589;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1589;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1590;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1590;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1591;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1591;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1592;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1592;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1593;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1593;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1594;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1594;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1595;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1595;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1596;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1596;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1597;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1597;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1598;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1598;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1599;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1599;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1600;4 #I Order: 2^8 #I Nuclear rank: 10 #I 2-multiplicator rank: 16 #I Group [grp] #1600;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1601;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #1601;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1602;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #1602;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1603;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1603;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1604;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1604;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1605;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1605;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1606;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1606;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1607;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1607;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1608;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1608;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1609;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1609;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1610;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1610;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1611;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1611;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1612;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1612;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1613;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1613;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1614;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #1614;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1615;4 #I Order: 2^8 #I Nuclear rank: 8 #I 2-multiplicator rank: 14 #I Group [grp] #1615;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1616;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1616;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1617;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1617;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1618;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1618;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1619;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1619;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1620;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1620;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1621;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1621;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1622;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1622;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1623;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1623;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1624;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1624;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1625;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1625;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1626;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1626;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1627;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1627;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1628;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1628;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1629;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1629;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1630;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1630;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1631;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1631;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1632;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1632;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1633;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1633;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1634;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1634;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1635;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1635;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1636;4 #I Order: 2^8 #I Nuclear rank: 8 #I 2-multiplicator rank: 14 #I Group [grp] #1636;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1637;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #1637;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1638;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1638;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1639;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1639;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1640;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1640;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1641;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1641;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1642;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1642;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1643;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1643;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1644;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1644;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1645;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #1645;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1646;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1646;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1647;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1647;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1648;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1648;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1649;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1649;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1650;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1650;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1651;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1651;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1652;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1652;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1653;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1653;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1654;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1654;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1655;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1655;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1656;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1656;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1657;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1657;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1658;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1658;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1659;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1659;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1660;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1660;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1661;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1661;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1662;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1662;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1663;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1663;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1664;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1664;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1665;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1665;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1666;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1666;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1667;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1667;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1668;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1668;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1669;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1669;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1670;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1670;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1671;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1671;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1672;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1672;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1673;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1673;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1674;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1674;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1675;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1675;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1676;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1676;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1677;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1677;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1678;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1678;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1679;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1679;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1680;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1680;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1681;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1681;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1682;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1682;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1683;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1683;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1684;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1684;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1685;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1685;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1686;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1686;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1687;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1687;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1688;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1688;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1689;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1689;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1690;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1690;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1691;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1691;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1692;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1692;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1693;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1693;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1694;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1694;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1695;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1695;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1696;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1696;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1697;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1697;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1698;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1698;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1699;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1699;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1700;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1700;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1701;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1701;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1702;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1702;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1703;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1703;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1704;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1704;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1705;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1705;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1706;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1706;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1707;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1707;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1708;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1708;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1709;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1709;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1710;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1710;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1711;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1711;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1712;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1712;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1713;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1713;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1714;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1714;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1715;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1715;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1716;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1716;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1717;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1717;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1718;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1718;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1719;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1719;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1720;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1720;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1721;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1721;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1722;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1722;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1723;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1723;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1724;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1724;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1725;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1725;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1726;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1726;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1727;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1727;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1728;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1728;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1729;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1729;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1730;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1730;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1731;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1731;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1732;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1732;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1733;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1733;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1734;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1734;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1735;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1735;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1736;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1736;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1737;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1737;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1738;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1738;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1739;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1739;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1740;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1740;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1741;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1741;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1742;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1742;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1743;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1743;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1744;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1744;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1745;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1745;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1746;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1746;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1747;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1747;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1748;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1748;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1749;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1749;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1750;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1750;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1751;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1751;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1752;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1752;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1753;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1753;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1754;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1754;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1755;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1755;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1756;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1756;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1757;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1757;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1758;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1758;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1759;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1759;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1760;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1760;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1761;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1761;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1762;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1762;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1763;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1763;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1764;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1764;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1765;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1765;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1766;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1766;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1767;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1767;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1768;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1768;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1769;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1769;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1770;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1770;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1771;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1771;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1772;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1772;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1773;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1773;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1774;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1774;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1775;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1775;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1776;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1776;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1777;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1777;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1778;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1778;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1779;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1779;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1780;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1780;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1781;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1781;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1782;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1782;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1783;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1783;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1784;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1784;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1785;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1785;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1786;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1786;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1787;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1787;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1788;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1788;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1789;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1789;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1790;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1790;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1791;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1791;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1792;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1792;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1793;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1793;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1794;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #1794;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1795;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1795;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1796;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1796;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1797;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1797;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1798;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1798;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1799;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1799;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1800;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1800;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1801;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1801;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1802;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1802;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1803;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1803;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1804;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1804;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1805;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1805;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1806;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #1806;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1807;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1807;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1808;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1808;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1809;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1809;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1810;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1810;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1811;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1811;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1812;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1812;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1813;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1813;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1814;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1814;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1815;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1815;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1816;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1816;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1817;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1817;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1818;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1818;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1819;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1819;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1820;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1820;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1821;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1821;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1822;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1822;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1823;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1823;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1824;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1824;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1825;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1825;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1826;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1826;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1827;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1827;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1828;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1828;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1829;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1829;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1830;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1830;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1831;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1831;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1832;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #1832;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1833;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1833;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1834;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1834;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1835;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1835;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1836;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1836;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1837;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1837;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1838;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1838;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1839;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1839;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1840;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1840;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1841;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1841;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1842;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1842;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1843;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1843;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1844;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1844;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1845;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1845;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1846;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1846;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1847;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1847;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1848;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1848;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1849;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1849;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1850;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1850;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1851;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1851;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1852;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1852;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1853;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1853;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1854;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1854;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1855;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1855;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1856;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1856;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1857;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1857;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1858;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1858;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1859;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1859;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1860;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1860;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1861;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1861;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1862;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1862;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1863;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1863;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1864;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1864;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1865;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1865;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1866;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1866;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1867;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1867;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1868;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1868;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1869;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1869;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1870;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1870;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1871;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1871;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1872;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1872;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1873;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1873;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1874;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1874;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1875;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1875;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1876;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1876;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1877;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1877;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1878;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1878;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1879;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1879;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1880;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1880;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1881;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1881;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1882;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1882;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1883;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1883;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1884;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1884;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1885;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1885;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1886;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1886;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1887;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1887;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1888;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1888;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1889;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1889;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1890;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1890;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1891;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1891;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1892;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1892;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1893;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1893;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1894;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1894;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1895;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1895;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1896;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1896;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1897;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1897;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1898;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1898;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1899;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1899;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1900;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1900;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1901;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1901;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1902;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1902;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1903;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1903;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1904;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1904;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1905;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1905;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1906;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1906;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1907;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1907;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1908;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1908;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1909;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1909;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1910;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1910;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1911;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1911;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1912;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1912;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1913;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1913;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1914;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1914;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1915;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1915;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1916;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1916;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1917;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1917;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1918;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1918;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1919;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1919;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1920;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1920;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1921;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1921;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1922;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1922;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1923;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1923;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1924;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1924;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1925;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1925;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1926;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1926;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1927;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1927;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1928;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1928;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1929;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1929;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1930;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1930;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1931;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1931;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1932;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1932;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1933;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1933;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1934;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1934;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1935;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1935;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1936;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1936;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1937;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1937;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1938;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1938;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1939;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1939;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1940;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1940;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1941;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1941;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1942;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1942;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1943;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1943;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1944;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1944;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1945;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1945;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1946;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1946;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1947;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1947;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1948;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1948;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1950;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1950;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1952;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1952;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1954;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1954;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1956;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1956;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1959;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1959;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1961;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1961;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1962;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1962;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1964;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1964;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1965;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1965;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1966;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1966;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1967;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1967;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1968;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1968;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1969;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1969;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1970;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1970;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1971;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1971;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1972;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1972;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1973;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1973;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1974;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1974;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1975;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1975;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1976;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1976;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1978;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1978;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1980;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1980;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1981;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1981;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1982;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1982;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1983;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1983;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1984;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1984;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1985;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1985;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1986;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1986;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1987;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1987;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1988;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1988;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1989;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #1989;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1990;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #1990;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1991;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1991;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1992;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1992;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1993;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1993;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1994;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #1994;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1995;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1995;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1996;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1996;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1997;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #1997;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1998;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1998;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #1999;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #1999;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2000;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2000;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2001;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2001;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2002;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2002;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2003;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2003;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2004;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2004;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2005;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2005;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2006;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2006;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2007;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2007;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2008;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2008;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2009;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2009;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2010;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2010;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2011;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2011;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2012;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2012;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2013;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2013;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2014;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2014;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2015;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2015;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2016;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2016;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2017;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2017;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2018;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2018;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2019;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2019;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2020;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2020;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2021;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2021;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2022;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2022;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2023;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2023;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2024;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2024;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2025;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2025;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2026;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2026;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2027;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2027;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2028;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2028;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2029;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2029;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2030;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2030;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2031;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2031;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2032;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2032;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2033;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2033;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2034;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2034;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2035;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2035;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2036;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2036;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2037;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2037;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2038;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2038;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2039;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2039;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2040;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2040;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2041;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2041;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2042;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2042;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2043;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2043;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2044;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #2044;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2045;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #2045;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2046;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2046;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2047;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2047;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2048;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2048;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2049;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2049;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2050;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2050;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2051;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2051;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2052;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2052;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2053;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2053;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2054;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2054;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2055;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2055;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2056;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2056;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2057;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2057;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2058;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2058;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2059;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2059;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2060;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2060;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2061;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2061;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2062;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2062;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2063;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #2063;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2064;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2064;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2065;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2065;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2066;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2066;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2067;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2067;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2068;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2068;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2069;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2069;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2070;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2070;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2071;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2071;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2072;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2072;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2073;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2073;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2074;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2074;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2075;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2075;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2076;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2076;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2077;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2077;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2078;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2078;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2079;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2079;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2080;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2080;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2081;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2081;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2082;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2082;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2083;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2083;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2084;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2084;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2085;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2085;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2086;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2086;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2087;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2087;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2088;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2088;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2089;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2089;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2090;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2090;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2091;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2091;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2092;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2092;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2093;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2093;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2094;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2094;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2095;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2095;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2096;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2096;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2097;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2097;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2098;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2098;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2099;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2099;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2100;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2100;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2101;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2101;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2102;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2102;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2103;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2103;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2104;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2104;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2105;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2105;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2106;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2106;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2107;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2107;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2108;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2108;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2109;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2109;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2110;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2110;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2111;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2111;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2112;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2112;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2113;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2113;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2114;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2114;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2115;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2115;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2116;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2116;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2117;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2117;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2118;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2118;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2119;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2119;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2120;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2120;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2121;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2121;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2122;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2122;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2123;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2123;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2124;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2124;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2125;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2125;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2126;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2126;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2127;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2127;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2128;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2128;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2130;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2130;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2132;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2132;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2133;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2133;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2134;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2134;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2135;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2135;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2136;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2136;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2137;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2137;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2138;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2138;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2139;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2139;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2140;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2140;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2141;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2141;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2142;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2142;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2143;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2143;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2144;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2144;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2145;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2145;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2146;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2146;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2147;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2147;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2148;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2148;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2149;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2149;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2150;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2150;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2151;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2151;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2152;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2152;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2153;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2153;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2154;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2154;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2155;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2155;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2156;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2156;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2157;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2157;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2158;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2158;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2159;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2159;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2160;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2160;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2161;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2161;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2162;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2162;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2163;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2163;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2164;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2164;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2165;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2165;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2166;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2166;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2167;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2167;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2168;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2168;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2169;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2169;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2170;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2170;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2171;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2171;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2172;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2172;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2173;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2173;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2174;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2174;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2175;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2175;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2176;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2176;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2177;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2177;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2178;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #2178;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2179;4 #I Order: 2^8 #I Nuclear rank: 7 #I 2-multiplicator rank: 13 #I Group [grp] #2179;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2180;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #2180;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2181;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2181;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2182;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2182;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2183;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2183;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2184;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #2184;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2185;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2185;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2186;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2186;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2187;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #2187;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2188;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #2188;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2189;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2189;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2190;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2190;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2191;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2191;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2192;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2192;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2193;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2193;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2194;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #2194;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2195;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2195;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2196;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2196;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2197;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2197;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2198;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2198;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2199;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #2199;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2200;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2200;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2201;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2201;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2202;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2202;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2203;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2203;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2204;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2204;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2205;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2205;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2206;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2206;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2207;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2207;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2208;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2208;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2209;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2209;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2210;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2210;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2211;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2211;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2212;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2212;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2213;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2213;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2214;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2214;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2215;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2215;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2216;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2216;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2217;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2217;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2218;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2218;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2219;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2219;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2220;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2220;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2221;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2221;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2222;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2222;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2223;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2223;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2224;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2224;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2225;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2225;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2226;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2226;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2227;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2227;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2228;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2228;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2229;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2229;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2230;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2230;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2231;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #2231;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2232;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2232;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2233;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2233;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2234;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2234;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2235;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2235;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2236;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2236;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2237;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2237;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2238;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2238;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2239;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2239;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2240;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2240;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2241;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2241;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2242;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2242;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2243;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2243;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2244;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2244;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2245;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2245;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2246;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2246;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2247;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2247;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2248;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2248;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2249;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2249;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2250;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2250;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2251;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2251;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2252;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2252;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2253;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2253;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2254;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2254;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2255;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2255;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2256;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2256;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2257;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2257;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2258;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2258;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2259;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2259;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2260;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2260;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2261;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2261;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2262;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2262;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2263;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2263;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2264;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2264;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2265;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2265;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2266;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2266;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2267;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2267;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2268;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2268;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2269;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2269;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2270;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2270;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2271;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2271;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2272;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2272;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2273;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2273;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2274;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2274;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2275;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2275;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2276;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2276;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2277;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2277;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2278;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2278;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2279;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2279;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2280;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2280;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2281;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2281;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2282;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2282;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2283;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2283;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2284;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2284;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2285;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2285;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2286;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2286;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2287;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2287;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2288;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2288;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2289;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2289;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2290;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2290;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2291;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2291;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2292;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2292;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2293;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2293;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2294;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2294;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2295;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2295;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2296;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2296;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2297;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2297;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2298;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2298;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2299;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2299;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2300;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2300;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2301;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2301;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2302;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2302;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2303;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2303;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2304;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2304;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2305;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2305;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2306;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2306;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2307;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2307;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2308;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2308;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2309;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2309;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2310;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2310;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2311;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2311;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2312;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2312;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2313;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2313;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2314;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2314;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2315;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2315;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2316;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2316;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2317;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2317;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2318;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2318;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2319;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2319;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2320;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2320;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2321;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2321;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2322;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2322;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2323;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2323;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2324;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2324;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2325;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2325;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2326;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2326;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2327;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2327;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2328;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2328;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2329;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2329;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2330;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2330;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2331;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2331;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2332;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2332;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2333;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2333;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2334;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2334;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2335;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2335;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2336;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2336;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2337;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2337;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2338;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2338;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2339;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2339;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2340;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2340;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2341;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2341;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2342;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2342;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2343;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2343;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2344;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2344;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2345;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2345;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2346;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2346;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2347;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2347;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2348;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2348;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2349;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2349;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2350;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2350;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2351;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2351;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2352;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2352;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2353;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2353;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2354;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2354;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2355;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2355;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2356;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2356;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2357;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2357;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2358;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2358;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2359;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2359;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2360;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2360;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2361;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2361;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2362;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2362;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2363;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2363;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2364;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2364;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2365;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2365;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2366;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2366;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2367;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2367;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2368;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2368;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2369;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2369;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2370;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2370;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2371;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2371;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2372;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2372;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2373;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2373;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2374;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2374;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2375;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2375;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2376;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2376;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2377;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2377;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2378;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2378;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2379;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2379;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2380;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2380;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2381;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2381;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2382;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2382;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2383;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2383;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2384;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2384;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2385;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2385;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2386;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2386;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2387;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2387;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2388;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2388;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2389;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2389;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2390;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2390;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2391;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2391;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2392;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2392;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2393;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2393;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2394;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2394;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2395;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2395;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2396;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2396;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2397;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2397;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2398;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2398;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2399;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2399;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2400;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2400;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2401;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2401;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2402;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2402;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2403;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2403;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2404;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2404;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2405;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2405;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2406;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2406;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2407;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2407;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2408;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2408;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2409;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2409;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2410;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2410;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2411;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2411;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2412;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2412;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2413;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2413;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2414;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2414;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2415;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2415;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2416;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2416;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2417;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2417;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2418;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2418;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2419;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2419;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2420;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2420;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2421;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2421;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2422;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2422;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2423;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2423;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2424;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2424;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2425;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2425;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2426;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2426;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2427;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2427;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2428;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2428;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2429;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2429;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2430;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2430;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2431;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2431;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2432;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2432;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2433;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2433;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2434;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2434;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2435;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2435;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2436;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2436;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2437;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2437;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2438;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2438;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2439;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2439;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2440;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2440;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2441;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2441;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2442;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2442;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2443;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2443;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2444;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2444;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2445;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2445;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2446;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2446;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2447;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2447;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2448;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2448;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2449;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2449;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2450;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2450;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2451;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2451;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2452;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2452;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2453;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2453;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2454;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2454;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2455;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2455;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2456;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2456;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2457;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2457;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2458;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2458;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2459;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2459;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2460;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2460;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2461;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2461;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2462;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2462;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2463;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2463;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2464;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2464;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2465;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2465;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2466;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2466;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2467;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2467;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2468;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2468;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2469;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2469;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2470;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2470;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2471;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2471;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2472;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2472;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2473;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2473;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2474;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2474;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2475;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2475;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2476;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2476;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2477;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2477;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2478;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2478;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2479;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2479;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2480;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2480;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2481;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2481;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2482;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2482;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2483;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2483;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2484;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2484;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2485;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2485;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2486;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2486;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2487;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2487;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2488;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2488;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2489;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2489;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2490;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2490;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2491;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2491;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2492;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2492;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2493;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2493;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2494;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2494;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2495;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2495;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2496;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2496;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2497;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2497;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2498;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2498;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2499;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2499;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2500;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2500;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2501;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2501;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2502;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2502;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2503;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2503;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2504;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2504;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2505;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2505;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2506;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2506;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2507;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2507;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2508;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2508;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2509;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2509;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2510;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2510;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2511;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2511;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2512;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2512;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2513;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2513;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2514;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2514;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2515;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2515;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2516;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2516;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2517;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2517;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2518;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2518;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2519;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2519;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2520;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2520;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2521;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2521;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2522;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2522;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2523;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2523;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2524;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2524;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2525;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2525;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2526;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2526;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2527;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2527;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2528;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2528;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2529;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2529;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2530;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2530;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2531;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2531;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2532;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2532;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2533;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2533;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2534;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2534;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2535;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2535;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2536;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2536;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2537;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2537;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2538;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2538;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2539;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2539;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2540;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2540;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2541;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2541;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2542;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2542;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2543;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2543;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2544;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2544;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2545;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2545;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2546;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2546;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2547;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2547;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2548;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2548;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2549;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2549;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2550;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2550;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2551;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2551;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2552;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2552;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2553;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2553;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2554;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2554;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2555;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2555;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2556;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2556;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2557;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2557;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2558;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2558;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2559;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2559;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2560;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2560;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2561;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2561;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2562;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2562;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2563;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2563;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2564;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2564;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2565;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2565;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2566;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2566;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2567;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2567;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2568;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2568;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2569;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2569;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2570;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2570;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2571;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2571;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2572;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2572;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2573;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2573;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2574;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2574;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2575;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2575;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2576;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2576;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2577;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2577;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2578;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2578;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2579;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2579;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2580;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2580;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2581;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2581;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2582;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2582;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2583;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2583;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2584;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2584;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2585;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2585;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2586;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2586;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2587;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2587;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2588;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2588;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2589;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2589;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2590;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2590;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2591;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2591;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2592;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2592;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2593;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2593;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2594;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2594;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2595;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2595;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2596;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2596;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2597;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2597;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2598;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2598;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2599;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2599;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2600;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2600;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2601;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2601;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2602;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2602;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2603;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2603;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2604;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2604;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2605;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2605;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2606;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2606;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2607;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2607;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2608;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2608;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2609;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2609;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2610;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2610;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2611;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2611;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2612;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2612;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2613;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2613;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2614;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2614;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2615;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2615;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2616;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2616;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2617;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2617;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2618;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2618;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2619;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2619;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2620;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2620;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2621;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2621;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2622;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2622;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2623;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2623;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2624;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2624;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2625;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2625;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2626;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2626;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2627;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2627;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2628;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2628;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2629;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2629;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2630;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2630;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2631;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2631;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2632;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2632;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2633;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2633;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2634;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2634;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2635;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2635;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2636;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2636;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2637;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2637;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2638;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2638;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2639;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2639;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2640;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2640;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2641;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2641;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2642;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2642;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2643;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2643;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2644;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2644;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2645;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2645;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2646;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2646;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2647;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2647;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2648;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2648;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2649;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2649;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2650;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2650;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2651;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2651;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2652;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2652;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2653;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2653;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2654;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2654;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2655;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2655;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2656;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2656;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2657;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2657;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2658;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2658;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2659;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2659;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2660;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2660;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2661;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2661;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2662;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2662;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2663;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2663;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2664;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2664;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2665;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2665;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2666;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2666;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2667;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2667;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2668;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2668;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2669;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2669;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2670;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2670;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2671;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2671;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2672;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2672;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2673;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2673;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2674;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2674;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2675;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2675;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2676;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2676;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2677;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2677;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2678;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2678;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2679;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2679;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2680;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2680;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2681;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2681;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2682;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2682;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2683;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2683;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2684;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2684;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2685;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2685;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2686;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2686;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2687;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2687;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2688;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2688;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2689;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2689;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2690;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2690;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2691;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2691;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2692;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2692;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2693;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2693;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2694;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2694;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2695;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2695;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2696;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2696;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2697;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2697;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2698;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2698;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2699;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2699;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2700;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2700;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2701;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2701;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2702;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2702;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2703;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2703;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2704;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2704;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2705;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2705;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2706;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2706;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2707;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2707;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2708;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2708;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2709;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2709;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2710;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2710;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2711;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2711;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2712;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2712;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2713;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2713;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2714;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2714;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2715;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2715;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2716;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2716;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2717;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2717;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2718;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2718;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2719;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2719;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2720;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2720;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2721;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2721;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2722;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2722;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2723;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2723;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2724;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2724;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2725;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2725;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2726;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2726;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2727;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2727;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2728;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2728;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2729;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2729;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2730;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2730;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2731;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2731;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2732;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2732;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2733;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2733;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2734;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2734;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2735;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2735;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2736;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2736;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2737;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2737;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2738;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2738;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2739;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2739;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2740;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2740;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2741;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2741;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2742;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2742;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2743;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2743;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2744;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2744;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2745;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2745;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2746;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2746;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2747;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2747;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2748;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2748;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2749;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2749;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2750;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2750;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2751;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2751;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2752;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2752;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2753;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2753;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2754;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2754;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2755;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2755;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2756;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2756;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2757;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2757;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2758;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2758;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2759;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2759;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2760;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2760;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2761;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2761;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2762;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2762;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2763;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2763;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2764;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2764;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2765;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2765;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2766;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2766;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2767;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2767;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2768;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2768;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2769;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2769;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2770;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2770;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2771;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2771;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2772;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2772;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2773;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2773;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2774;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2774;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2775;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2775;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2776;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2776;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2777;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2777;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2778;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2778;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2779;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2779;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2780;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2780;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2781;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2781;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2782;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2782;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2783;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2783;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2784;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2784;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2785;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2785;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2786;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2786;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2787;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2787;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2788;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2788;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2789;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2789;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2790;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2790;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2791;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2791;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2792;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2792;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2793;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2793;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2794;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2794;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2795;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2795;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2796;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2796;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2797;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2797;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2798;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2798;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2799;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2799;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2800;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2800;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2801;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2801;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2802;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2802;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2803;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2803;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2804;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2804;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2805;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2805;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2806;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2806;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2807;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2807;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2808;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2808;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2809;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2809;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2810;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2810;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2811;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2811;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2812;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2812;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2813;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2813;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2814;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2814;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2815;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2815;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2816;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2816;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2817;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2817;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2818;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2818;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2819;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2819;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2820;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2820;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2821;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2821;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2822;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2822;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2823;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2823;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2824;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2824;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2825;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2825;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2826;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2826;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2827;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2827;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2828;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2828;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2829;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2829;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2830;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2830;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2831;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2831;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2832;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2832;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2833;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2833;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2834;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2834;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2835;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2835;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2836;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2836;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2837;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2837;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2838;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2838;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2839;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2839;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2840;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2840;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2841;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2841;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2842;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2842;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2843;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2843;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2844;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2844;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2845;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2845;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2846;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2846;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2847;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2847;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2848;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2848;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2849;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2849;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2850;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2850;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2851;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2851;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2852;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2852;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2853;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2853;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2854;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2854;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2855;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2855;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2856;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2856;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2857;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2857;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2858;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2858;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2859;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2859;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2860;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2860;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2861;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2861;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2862;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2862;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2863;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2863;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2864;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2864;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2865;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2865;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2866;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2866;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2867;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2867;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2868;4 #I Order: 2^8 #I Nuclear rank: 8 #I 2-multiplicator rank: 14 #I Group [grp] #2868;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2869;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #2869;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2870;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2870;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2871;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2871;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2872;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2872;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2873;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2873;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2874;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2874;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2875;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2875;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2876;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2876;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2877;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2877;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2878;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2878;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2879;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2879;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2880;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2880;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2881;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2881;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2882;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2882;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2883;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2883;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2884;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2884;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2885;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2885;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2886;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2886;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2887;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2887;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2888;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2888;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2889;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2889;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2890;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2890;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2891;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2891;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2892;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2892;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2893;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2893;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2894;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2894;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2895;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2895;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2896;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2896;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2897;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2897;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2898;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2898;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2899;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2899;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2900;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2900;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2901;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2901;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2902;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2902;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2903;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2903;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2904;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2904;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2905;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2905;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2906;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2906;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2907;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #2907;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2908;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2908;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2909;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2909;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2910;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2910;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2911;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2911;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2912;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2912;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2913;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2913;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2914;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2914;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2915;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2915;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2916;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2916;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2917;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2917;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2918;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2918;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2919;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2919;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2920;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2920;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2921;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2921;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2922;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2922;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2923;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2923;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2924;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2924;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2925;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2925;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2926;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2926;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2927;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2927;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2928;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2928;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2929;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2929;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2930;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2930;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2931;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2931;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2932;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2932;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2933;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2933;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2934;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2934;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2935;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2935;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2936;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2936;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2937;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2937;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2938;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2938;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2939;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2939;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2940;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2940;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2941;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2941;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2942;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2942;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2943;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2943;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2944;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2944;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2945;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2945;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2946;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2946;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2947;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2947;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2948;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2948;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2949;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2949;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2950;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2950;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2951;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2951;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2952;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2952;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2953;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2953;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2954;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2954;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2955;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2955;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2956;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2956;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2957;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2957;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2958;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2958;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2959;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2959;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2960;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2960;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2961;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2961;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2962;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2962;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2963;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2963;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2964;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2964;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2965;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2965;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2966;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2966;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2967;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2967;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2968;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2968;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2969;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2969;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2970;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2970;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2971;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2971;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2972;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #2972;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2973;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2973;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2974;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2974;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2975;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2975;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2976;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2976;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2977;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2977;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2978;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2978;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2979;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2979;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2980;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2980;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2981;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2981;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2982;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2982;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2983;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2983;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2984;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2984;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2985;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2985;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2986;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2986;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2987;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2987;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2988;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2988;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2989;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2989;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2990;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2990;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2991;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #2991;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2992;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2992;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2993;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2993;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2994;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2994;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2995;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2995;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2996;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2996;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2997;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #2997;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2998;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2998;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2999;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #2999;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3000;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3000;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3001;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3001;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3002;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3002;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3003;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3003;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3004;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3004;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3005;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3005;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3006;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3006;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3007;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3007;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3008;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3008;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3009;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3009;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3010;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3010;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3011;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3011;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3012;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3012;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3013;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3013;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3014;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3014;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3015;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3015;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3016;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3016;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3017;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3017;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3018;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3018;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3019;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3019;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3020;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3020;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3021;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3021;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3022;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3022;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3023;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3023;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3024;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3024;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3025;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3025;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3026;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3026;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3027;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3027;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3028;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3028;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3029;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3029;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3030;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3030;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3031;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3031;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3032;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3032;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3033;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3033;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3034;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3034;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3035;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3035;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3036;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3036;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3037;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3037;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3038;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3038;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3039;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3039;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3041;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3041;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3042;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3042;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3043;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3043;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3045;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3045;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3046;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3046;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3049;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3049;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3050;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3050;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3052;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3052;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3053;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3053;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3054;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3054;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3055;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3055;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3056;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3056;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3058;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3058;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3062;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3062;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3064;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3064;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3065;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3065;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3066;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3066;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3067;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3067;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3068;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3068;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3070;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3070;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3072;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3072;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3073;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3073;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3075;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3075;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3077;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3077;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3079;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3079;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3080;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3080;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3081;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3081;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3082;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3082;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3083;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3083;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3084;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3084;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3087;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3087;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3096;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3096;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3098;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3098;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3102;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3102;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3103;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3103;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3104;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3104;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3105;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3105;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3106;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3106;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3111;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3111;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3113;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3113;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3114;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3114;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3115;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3115;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3116;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3116;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3117;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3117;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3118;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3118;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3120;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3120;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3121;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3121;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3122;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3122;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3125;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3125;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3126;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3126;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3127;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3127;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3128;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3128;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3129;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3129;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3130;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3130;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3131;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3131;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3132;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3132;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3134;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3134;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3135;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3135;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3136;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3136;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3137;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3137;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3138;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3138;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3140;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3140;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3141;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3141;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3143;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3143;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3144;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3144;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3145;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3145;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3146;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3146;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3149;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3149;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3150;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3150;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3153;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3153;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3154;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3154;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3156;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3156;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3157;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3157;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3159;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3159;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3161;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3161;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3163;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3163;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3164;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3164;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3165;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3165;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3166;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3166;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3167;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3167;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3168;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3168;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3169;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3169;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3170;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #3170;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3171;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3171;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3172;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3172;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3173;4 #I Order: 2^8 #I Nuclear rank: 6 #I 2-multiplicator rank: 12 #I Group [grp] #3173;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3174;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3174;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3175;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3175;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3176;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3176;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3177;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3177;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3178;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3178;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3179;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3179;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3180;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3180;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3181;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3181;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3182;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3182;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3183;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3183;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3184;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3184;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3185;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3185;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3186;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3186;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3187;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3187;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3188;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3188;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3189;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3189;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3190;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3190;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3191;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3191;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3192;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3192;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3193;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3193;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3194;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3194;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3195;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3195;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3196;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3196;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3197;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3197;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3198;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3198;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3199;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3199;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3200;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3200;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3201;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3201;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3202;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3202;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3203;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3203;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3204;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3204;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3205;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3205;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3206;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3206;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3207;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3207;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3208;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3208;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3209;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3209;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3210;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3210;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3211;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3211;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3212;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3212;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3213;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3213;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3214;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3214;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3215;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3215;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3216;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3216;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3217;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3217;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3218;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3218;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3219;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3219;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3220;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3220;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3221;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3221;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3222;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3222;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3223;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3223;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3224;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3224;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3225;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3225;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3226;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3226;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3227;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3227;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3228;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3228;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3229;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3229;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3230;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3230;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3231;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3231;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3232;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3232;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3233;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3233;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3234;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3234;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3235;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3235;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3236;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3236;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3237;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3237;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3238;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3238;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3239;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3239;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3240;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3240;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3241;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3241;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3242;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3242;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3243;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3243;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3244;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3244;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3245;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3245;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3246;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3246;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3247;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3247;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3248;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3248;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3249;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3249;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3250;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3250;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3251;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3251;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3252;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3252;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3253;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3253;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3254;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3254;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3255;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3255;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3256;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3256;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3257;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3257;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3258;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3258;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3259;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3259;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3260;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3260;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3261;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3261;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3262;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3262;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3263;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3263;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3264;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3264;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3265;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3265;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3266;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3266;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3267;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3267;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3268;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3268;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3269;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3269;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3270;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3270;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3271;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3271;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3272;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3272;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3273;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3273;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3274;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3274;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3275;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3275;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3276;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3276;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3277;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3277;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3278;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3278;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3279;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3279;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3280;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3280;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3281;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3281;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3282;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3282;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3283;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3283;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3284;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3284;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3285;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3285;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3286;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3286;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3287;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3287;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3288;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3288;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3289;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3289;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3290;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3290;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3291;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3291;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3292;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3292;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3293;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3293;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3294;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3294;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3295;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3295;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3296;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3296;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3297;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3297;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3298;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3298;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3299;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3299;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3300;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3300;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3301;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3301;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3302;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3302;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3303;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3303;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3304;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3304;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3305;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3305;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3306;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3306;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3307;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3307;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3308;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3308;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3309;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3309;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3310;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3310;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3311;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3311;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3312;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3312;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3313;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3313;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3314;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3314;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3315;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3315;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3316;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3316;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3317;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3317;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3318;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3318;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3319;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3319;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3320;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3320;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3321;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3321;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3322;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3322;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3323;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3323;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3324;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3324;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3325;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3325;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3326;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3326;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3327;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3327;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3328;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3328;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3329;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3329;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3330;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3330;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3331;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3331;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3332;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3332;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3333;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3333;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3334;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3334;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3335;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3335;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3336;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3336;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3337;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3337;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3338;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3338;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3339;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3339;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3340;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3340;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3341;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3341;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3342;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3342;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3343;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3343;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3344;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3344;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3345;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3345;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3346;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3346;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3347;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3347;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3348;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3348;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3349;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3349;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3350;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3350;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3351;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3351;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3352;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3352;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3353;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3353;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3354;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3354;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3355;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3355;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3356;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3356;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3357;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3357;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3358;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3358;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3359;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3359;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3360;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3360;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3361;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3361;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3362;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3362;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3363;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3363;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3364;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3364;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3365;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3365;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3366;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3366;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3367;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3367;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3368;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3368;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3369;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3369;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3370;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3370;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3371;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3371;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3372;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3372;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3373;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3373;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3374;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3374;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3375;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3375;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3376;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3376;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3377;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3377;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3378;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3378;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3379;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3379;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3380;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3380;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3381;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3381;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3382;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3382;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3383;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3383;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3384;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3384;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3385;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3385;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3386;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3386;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3387;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3387;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3388;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3388;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3389;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3389;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3390;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3390;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3391;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3391;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3392;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3392;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3393;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3393;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3394;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3394;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3395;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3395;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3396;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3396;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3397;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3397;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3398;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3398;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3399;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3399;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3400;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3400;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3401;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3401;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3402;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3402;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3403;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3403;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3404;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3404;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3405;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3405;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3406;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3406;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3407;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3407;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3408;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3408;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3409;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3409;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3410;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3410;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3411;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3411;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3412;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3412;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3413;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3413;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3414;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3414;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3415;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3415;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3416;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3416;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3417;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3417;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3418;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3418;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3419;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3419;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3420;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3420;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3421;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3421;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3422;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3422;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3423;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3423;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3424;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3424;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3425;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3425;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3426;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3426;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3427;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3427;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3428;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3428;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3429;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3429;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3430;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #3430;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3431;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3431;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3432;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3432;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3433;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3433;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3434;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3434;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3435;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3435;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3436;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3436;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3437;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3437;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3438;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3438;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3439;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3439;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3440;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3440;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3441;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3441;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3442;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3442;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3443;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3443;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3444;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3444;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3445;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3445;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3446;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3446;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3447;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3447;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3448;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3448;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3449;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3449;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3450;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3450;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3451;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3451;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3452;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3452;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3453;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3453;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3454;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3454;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3455;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3455;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3456;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3456;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3457;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3457;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3458;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3458;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3459;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3459;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3460;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3460;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3461;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3461;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3462;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3462;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3463;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3463;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3464;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3464;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3465;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3465;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3466;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3466;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3467;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3467;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3468;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3468;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3469;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3469;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3470;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3470;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3471;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3471;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3472;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3472;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3473;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3473;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3474;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3474;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3475;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3475;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3476;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3476;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3477;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3477;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3478;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3478;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3479;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3479;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3480;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3480;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3481;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3481;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3482;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3482;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3483;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3483;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3484;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3484;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3485;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3485;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3486;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3486;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3487;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3487;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3488;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3488;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3489;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3489;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3490;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3490;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3491;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3491;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3492;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3492;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3493;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3493;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3494;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3494;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3495;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3495;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3496;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3496;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3497;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3497;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3498;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3498;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3499;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3499;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3500;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3500;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3501;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3501;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3502;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3502;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3503;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3503;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3504;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3504;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3505;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3505;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3506;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3506;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3507;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3507;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3508;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3508;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3509;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3509;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3510;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3510;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3511;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3511;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3512;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3512;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3513;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3513;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3514;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3514;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3515;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3515;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3516;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3516;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3517;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3517;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3518;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3518;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3519;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3519;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3520;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3520;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3521;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3521;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3522;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3522;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3523;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3523;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3524;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3524;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3525;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3525;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3526;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3526;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3527;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3527;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3528;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3528;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3529;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3529;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3530;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3530;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3531;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3531;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3532;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3532;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3533;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3533;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3534;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3534;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3535;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3535;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3536;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3536;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3537;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3537;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3538;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3538;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3539;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3539;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3540;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3540;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3541;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3541;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3542;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3542;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3543;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3543;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3544;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3544;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3545;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3545;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3546;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3546;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3547;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3547;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3548;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3548;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3549;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3549;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3550;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3550;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3551;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3551;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3552;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3552;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3553;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3553;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3554;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3554;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3555;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3555;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3556;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3556;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3557;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3557;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3558;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3558;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3559;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3559;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3560;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3560;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3561;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3561;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3562;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3562;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3563;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3563;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3564;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3564;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3565;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3565;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3566;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3566;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3567;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3567;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3568;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3568;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3569;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3569;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3570;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3570;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3571;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3571;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3572;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3572;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3573;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3573;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3574;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3574;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3575;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3575;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3576;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3576;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3577;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3577;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3578;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3578;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3579;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3579;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3580;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3580;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3581;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3581;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3582;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3582;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3583;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3583;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3584;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3584;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3585;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3585;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3586;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3586;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3587;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3587;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3588;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3588;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3589;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3589;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3590;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3590;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3591;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3591;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3592;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3592;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3593;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3593;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3594;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3594;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3595;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3595;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3596;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3596;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3597;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3597;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3598;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3598;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3599;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3599;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3600;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3600;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3601;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3601;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3602;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3602;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3603;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3603;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3604;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3604;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3605;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3605;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3606;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3606;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3607;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3607;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3608;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3608;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3609;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3609;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3610;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3610;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3611;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3611;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3612;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3612;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3613;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3613;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3614;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3614;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3615;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3615;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3616;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3616;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3617;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3617;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3618;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3618;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3619;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3619;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3620;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3620;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3621;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3621;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3622;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3622;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3623;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3623;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3624;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3624;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3625;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3625;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3626;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3626;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3627;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3627;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3628;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3628;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3629;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3629;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3630;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3630;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3631;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3631;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3632;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3632;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3637;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3637;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3638;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3638;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3639;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3639;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3640;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3640;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3641;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3641;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3643;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3643;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3644;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3644;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3646;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3646;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3647;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3647;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3648;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3648;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3649;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3649;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3650;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3650;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3651;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3651;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3652;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3652;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3653;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3653;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3654;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3654;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3655;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3655;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3656;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3656;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3657;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3657;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3658;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3658;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3659;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3659;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3660;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3660;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3662;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3662;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3663;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3663;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3664;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3664;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3665;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3665;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3666;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3666;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3667;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3667;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3668;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3668;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3669;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3669;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3670;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3670;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3671;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3671;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3672;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3672;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3673;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3673;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3674;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3674;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3675;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3675;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3676;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3676;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3677;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3677;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3679;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3679;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3680;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3680;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3681;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3681;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3682;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3682;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3683;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3683;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3684;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3684;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3685;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3685;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3686;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3686;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3687;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3687;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3688;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3688;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3689;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3689;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3690;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3690;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3692;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3692;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3693;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3693;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3694;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3694;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3695;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3695;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3697;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3697;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3699;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3699;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3700;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3700;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3701;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3701;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3702;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3702;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3703;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3703;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3706;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3706;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3707;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3707;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3708;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3708;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3709;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3709;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3710;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3710;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3711;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3711;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3712;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3712;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3713;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3713;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3714;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3714;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3715;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3715;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3716;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3716;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3717;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3717;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3718;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3718;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3719;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3719;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3720;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3720;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3721;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3721;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3722;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3722;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3723;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3723;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3724;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3724;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3725;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3725;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3726;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3726;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3727;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3727;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3728;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3728;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3729;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3729;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3730;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3730;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3731;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3731;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3732;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3732;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3733;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3733;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3734;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3734;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3735;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3735;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3736;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3736;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3737;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3737;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3738;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3738;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3739;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3739;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3740;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3740;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3741;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3741;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3742;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3742;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3743;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3743;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3744;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3744;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3745;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3745;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3746;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3746;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3747;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3747;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3748;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3748;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3749;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3749;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3750;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3750;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3751;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3751;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3752;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3752;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3753;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3753;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3754;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3754;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3755;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3755;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3756;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3756;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3757;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3757;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3758;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3758;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3759;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3759;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3760;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3760;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3761;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3761;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3762;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3762;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3763;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3763;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3764;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3764;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3765;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3765;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3766;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3766;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3767;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3767;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3768;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3768;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3769;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3769;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3770;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3770;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3771;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3771;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3772;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3772;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3773;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3773;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3774;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3774;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3775;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3775;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3776;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3776;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3777;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3777;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3778;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3778;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3779;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3779;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3780;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3780;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3781;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3781;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3782;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3782;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3783;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3783;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3784;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3784;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3785;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3785;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3786;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3786;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3787;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3787;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3788;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3788;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3789;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3789;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3790;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3790;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3791;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3791;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3792;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3792;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3793;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3793;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3794;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3794;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3795;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3795;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3796;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3796;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3797;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3797;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3798;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3798;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3799;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3799;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3800;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3800;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3801;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3801;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3802;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3802;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3803;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3803;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3804;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3804;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3805;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3805;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3806;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3806;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3807;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3807;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3808;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3808;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3809;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3809;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3810;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3810;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3811;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3811;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3812;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3812;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3813;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3813;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3814;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3814;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3815;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3815;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3816;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3816;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3817;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3817;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3818;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3818;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3819;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3819;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3820;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3820;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3821;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3821;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3822;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3822;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3823;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3823;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3824;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3824;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3825;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3825;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3826;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3826;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3827;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3827;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3828;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3828;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3829;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3829;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3830;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3830;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3832;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3832;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3833;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3833;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3834;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3834;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3836;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3836;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3837;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3837;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3838;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3838;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3839;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3839;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3840;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3840;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3841;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3841;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3842;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3842;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3844;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3844;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3846;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3846;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3847;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3847;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3848;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3848;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3849;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3849;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3850;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3850;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3851;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3851;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3852;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3852;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3853;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3853;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3854;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3854;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3855;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3855;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3856;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3856;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3857;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3857;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3859;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3859;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3861;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3861;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3863;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3863;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3868;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3868;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3870;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3870;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3871;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3871;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3872;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3872;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3873;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3873;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3874;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3874;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3875;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3875;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3876;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3876;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3877;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3877;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3878;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3878;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3881;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3881;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3882;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3882;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3883;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3883;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3884;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3884;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3885;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3885;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3886;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3886;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3887;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3887;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3888;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3888;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3892;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3892;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3893;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3893;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3897;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3897;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3898;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3898;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3899;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3899;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3900;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3900;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3901;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3901;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3902;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3902;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3903;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3903;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3904;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3904;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3905;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3905;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3906;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3906;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3907;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3907;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3908;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3908;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3909;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3909;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3910;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3910;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3911;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3911;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3912;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3912;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3913;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3913;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3914;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3914;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3915;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3915;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3916;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3916;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3918;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3918;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3920;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3920;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3922;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3922;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3924;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3924;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3925;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3925;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3926;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3926;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3927;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3927;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3928;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3928;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3929;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3929;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3930;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3930;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3931;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3931;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3932;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3932;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3933;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3933;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3934;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3934;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3935;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3935;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3936;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3936;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3937;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3937;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3938;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3938;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3939;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3939;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3940;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3940;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3941;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3941;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3942;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3942;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3943;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3943;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3944;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3944;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3945;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3945;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3946;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3946;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3947;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3947;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3948;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3948;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3949;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3949;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3950;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3950;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3951;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3951;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3952;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3952;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3953;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3953;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3955;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3955;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3956;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3956;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3957;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3957;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3958;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3958;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3959;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3959;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3960;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3960;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3961;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3961;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3962;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3962;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3963;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3963;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3964;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3964;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3965;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3965;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3966;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3966;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3967;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3967;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3968;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3968;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3969;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3969;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3970;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3970;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3971;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3971;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3972;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3972;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3973;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3973;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3974;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3974;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3975;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3975;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3976;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3976;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3977;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #3977;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3978;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3978;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3979;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3979;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3980;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3980;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3981;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3981;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3982;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3982;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3983;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3983;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3984;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3984;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3985;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3985;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3986;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3986;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3987;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3987;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3988;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3988;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3989;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #3989;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3990;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3990;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3991;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3991;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3992;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3992;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3993;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3993;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3994;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3994;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3995;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3995;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3996;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3996;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3997;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3997;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3998;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #3998;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3999;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #3999;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4000;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4000;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4001;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4001;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4002;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4002;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4003;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #4003;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4004;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #4004;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4005;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4005;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4006;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4006;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4007;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #4007;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4008;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4008;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4009;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4009;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4010;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4010;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4011;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4011;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4012;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #4012;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4013;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4013;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4014;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4014;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4015;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4015;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4016;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4016;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4017;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4017;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4018;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4018;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4019;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4019;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4020;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4020;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4021;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4021;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4022;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #4022;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4023;4 #I Order: 2^8 #I Nuclear rank: 5 #I 2-multiplicator rank: 11 #I Group [grp] #4023;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4024;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4024;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4025;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4025;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4026;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #4026;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4027;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4027;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4028;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4028;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4029;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4029;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4030;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #4030;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4031;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4031;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4032;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4032;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4033;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4033;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4034;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4034;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4035;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4035;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4036;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4036;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4037;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4037;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4038;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4038;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4039;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4039;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4040;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4040;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4041;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4041;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4042;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4042;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4043;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4043;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4044;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4044;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4045;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4045;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4046;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4046;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4047;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4047;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4048;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4048;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4049;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4049;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4050;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4050;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4051;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4051;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4052;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4052;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4053;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4053;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4054;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4054;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4055;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4055;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4056;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #4056;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4057;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4057;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4058;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #4058;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4059;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4059;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4060;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4060;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4061;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4061;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4062;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4062;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4063;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4063;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4064;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4064;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4065;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4065;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4066;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4066;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4067;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4067;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4068;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4068;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4069;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4069;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4070;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4070;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4071;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4071;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4072;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4072;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4073;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4073;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4074;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4074;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4075;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4075;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4076;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4076;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4077;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4077;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4078;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4078;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4079;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4079;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4080;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4080;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4081;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4081;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4082;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4082;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4083;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4083;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4084;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4084;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4085;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4085;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4086;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4086;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4087;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4087;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4088;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4088;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4089;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4089;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4090;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4090;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4091;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4091;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4092;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4092;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4093;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4093;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4094;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4094;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4095;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4095;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4096;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4096;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4097;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4097;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4098;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4098;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4099;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4099;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4100;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4100;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4101;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4101;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4102;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4102;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4103;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4103;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4104;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4104;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4105;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4105;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4106;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4106;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4107;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4107;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4108;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4108;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4109;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4109;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4110;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4110;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4111;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4111;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4112;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4112;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4113;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4113;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4114;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4114;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4115;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4115;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4116;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4116;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4117;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4117;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4118;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4118;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4119;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4119;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4120;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4120;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4121;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4121;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4122;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4122;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4123;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4123;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4124;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4124;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4125;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4125;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4126;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4126;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4127;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4127;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4128;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4128;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4129;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4129;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4130;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4130;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4131;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4131;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4132;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4132;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4133;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4133;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4134;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4134;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4135;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4135;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4136;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4136;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4137;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4137;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4138;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4138;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4139;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4139;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4140;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4140;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4141;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4141;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4142;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4142;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4143;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4143;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4144;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4144;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4145;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4145;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4146;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4146;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4147;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4147;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4148;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4148;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4149;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4149;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4150;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4150;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4151;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4151;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4152;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4152;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4153;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4153;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4154;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4154;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4155;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4155;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4156;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4156;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4157;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4157;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4158;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4158;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4159;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4159;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4160;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4160;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4161;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4161;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4162;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4162;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4163;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4163;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4164;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4164;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4165;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4165;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4167;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4167;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4168;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4168;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4169;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4169;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4170;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4170;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4171;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4171;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4172;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4172;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4173;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4173;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4174;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4174;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4175;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4175;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4176;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4176;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4177;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4177;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4180;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4180;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4181;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4181;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4182;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4182;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4183;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4183;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4184;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4184;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4185;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4185;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4186;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4186;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4188;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4188;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4189;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4189;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4190;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4190;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4191;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4191;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4192;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4192;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4193;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4193;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4194;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4194;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4195;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4195;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4196;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4196;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4197;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4197;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4198;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4198;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4199;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4199;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4200;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4200;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4201;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4201;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4202;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4202;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4203;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4203;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4204;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4204;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4205;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4205;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4209;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4209;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4210;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4210;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4211;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4211;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4212;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4212;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4214;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4214;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4215;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4215;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4216;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4216;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4217;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4217;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4218;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4218;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4219;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4219;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4221;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4221;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4222;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4222;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4224;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4224;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4225;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4225;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4226;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4226;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4227;4 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 7 #I Group [grp] #4227;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4228;4 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 8 #I Group [grp] #4228;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4229;4 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 9 #I Group [grp] #4229;4 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4230;4 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 10 #I Group [grp] #4230;4 is an invalid starting group #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;1 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^7 is 4 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #2;1 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^7 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #7;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 7 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;2 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 3 #I ************************************************** #I Starting group: [grp] #7;2 #8;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I Group [grp] #7;2 #8;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #9;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I Group [grp] #7;2 #9;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #10;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #7;2 #10;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #11;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #7;2 #11;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #12;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #7;2 #12;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #13;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #7;2 #13;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #14;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #7;2 #14;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #15;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #7;2 #15;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #16;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #7;2 #16;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #30;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #7;2 #30;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;2 #31;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #7;2 #31;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 11 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #8;2 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 33 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #8;2 #14;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #8;2 #27;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 11 #I Group [grp] #8;2 #27;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #28;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 11 #I Group [grp] #8;2 #28;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #29;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #29;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #30;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 11 #I Group [grp] #8;2 #30;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #31;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #31;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #32;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #32;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #33;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #33;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #34;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #34;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #35;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #35;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #36;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #36;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #37;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #37;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #38;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #38;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #39;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #39;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #40;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #40;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #42;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #42;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #43;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #43;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #44;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #44;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #46;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #46;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #47;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #47;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #57;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #57;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #61;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #61;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #62;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #62;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #65;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #65;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #76;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #76;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #80;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #80;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #81;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #81;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #84;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #84;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #95;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 11 #I Group [grp] #8;2 #95;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #96;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #96;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #97;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #97;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #98;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #98;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #99;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #99;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #100;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #100;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #101;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #101;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #102;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #102;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #103;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #103;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #104;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #104;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #108;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #108;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #119;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #119;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #134;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #134;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #149;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #149;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #171;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 11 #I Group [grp] #8;2 #171;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #172;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #172;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #174;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #174;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #175;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #175;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #178;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #178;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #179;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #179;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #182;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #182;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #183;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #183;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #186;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #186;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #195;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #195;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #196;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #196;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #199;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #199;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #200;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #200;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #203;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #203;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #208;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 11 #I Group [grp] #8;2 #208;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #209;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #209;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #212;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #212;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #213;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #213;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #216;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #216;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #218;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #218;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #221;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #221;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #222;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #222;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #226;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #226;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #231;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #231;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #236;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #236;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #239;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #239;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #247;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #247;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #252;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #252;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #267;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #267;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #277;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #277;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #290;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #290;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #309;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #309;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #319;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 11 #I Group [grp] #8;2 #319;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #320;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #320;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #321;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #321;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #322;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #322;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #327;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #327;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #328;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #328;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #329;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #329;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #330;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #330;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #335;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #335;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #346;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #346;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #347;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #347;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #354;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #354;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #358;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #358;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #380;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #380;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #396;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #396;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #399;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #399;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #401;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #401;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #404;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #404;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #416;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #416;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #436;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #436;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #439;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #439;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #441;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #441;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #8;2 #444;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #8;2 #444;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #9;2 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 3 #I ************************************************** #I Starting group: [grp] #9;2 #6;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #9;2 #16;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I Group [grp] #9;2 #16;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #17;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I Group [grp] #9;2 #17;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #18;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #18;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #19;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #19;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #20;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #20;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #21;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #21;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #22;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #22;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #23;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #23;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #29;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #29;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #30;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #30;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #40;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #40;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #41;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #41;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #51;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #51;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #52;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #52;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #59;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #59;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #9;2 #61;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #9;2 #61;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #10;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 9 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #10;2 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 5 #I ************************************************** #I Starting group: [grp] #11;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 15 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #11;2 #9;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 22 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #11;2 #15;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 6 #I ************************************************** #I Starting group: [grp] #11;2 #33;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I Group [grp] #11;2 #33;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #34;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #34;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #35;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #35;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #36;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #36;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #37;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #37;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #38;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #38;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #39;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I Group [grp] #11;2 #39;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #40;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #40;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #41;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #41;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #42;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #42;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #43;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #43;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #44;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #44;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #45;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #45;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #46;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #46;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #47;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #47;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #48;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #48;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #49;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #49;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #50;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #50;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #57;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #57;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #74;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #74;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #80;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #80;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #91;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #91;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #98;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #98;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #119;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #119;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #126;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #126;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #147;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #147;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #153;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #153;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #166;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #166;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #172;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #172;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #185;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #185;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #192;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #192;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #205;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #205;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #212;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #212;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #229;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #229;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #11;2 #239;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #11;2 #239;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #12;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #13;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #14;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #15;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #16;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #17;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 33 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #17;2 #28;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I # of immediate descendants of order 2^8 is 30 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #17;2 #34;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 11 #I Group [grp] #17;2 #34;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #35;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #35;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #36;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #36;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #37;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #37;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #38;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #38;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #39;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #39;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #40;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #40;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #41;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #41;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #42;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #42;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #48;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 11 #I Group [grp] #17;2 #48;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #49;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #49;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #50;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #50;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #51;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #51;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #52;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #52;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #53;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #53;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #54;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #54;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #55;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #55;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #56;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #56;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #62;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #62;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #72;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #72;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #73;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #73;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #74;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #74;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #75;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #75;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #76;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #76;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #82;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #82;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #83;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #83;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #84;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #84;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #85;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #85;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #86;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #86;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #92;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #92;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #102;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #102;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #103;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #103;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #104;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #104;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #105;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #105;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #106;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #106;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #107;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #107;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #108;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #108;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #118;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #118;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #126;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #126;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #132;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #132;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #133;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #133;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #134;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 11 #I Group [grp] #17;2 #134;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #135;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #135;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #136;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #136;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #137;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #137;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #138;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #138;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #139;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #139;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #142;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #142;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #143;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #143;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #150;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #150;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #158;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #158;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #164;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #164;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #165;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #165;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #166;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #166;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #167;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #167;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #168;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #168;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #169;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #169;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #170;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #170;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #171;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #171;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #192;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #192;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #193;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #193;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #194;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #194;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #195;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #195;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #196;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #196;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #197;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #197;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #198;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #198;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #199;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #199;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #200;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #200;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #201;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #201;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #224;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #224;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #232;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #232;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #240;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #240;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #248;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #248;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #320;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #320;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #327;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #327;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #334;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #334;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #341;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #341;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #348;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #348;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #414;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 11 #I Group [grp] #17;2 #414;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #415;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #415;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #421;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #421;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #426;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #426;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #428;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #428;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #435;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #435;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #438;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #438;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #444;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #444;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #451;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #451;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #456;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #456;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #464;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #464;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #560;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #560;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #570;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #570;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #580;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #580;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #590;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #590;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #602;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #602;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #614;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #614;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #686;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #686;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #696;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #696;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #706;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #706;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #716;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #716;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #726;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #726;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #738;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #738;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #810;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #810;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #822;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #822;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #832;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #832;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #842;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #842;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #852;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #852;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #17;2 #862;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #17;2 #862;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 24 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #18;2 #20;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 23 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #18;2 #42;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #42;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #43;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I Group [grp] #18;2 #43;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #44;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #44;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #45;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #45;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #47;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #47;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #48;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #48;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #50;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #50;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #52;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #52;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #56;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #56;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #60;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #60;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #65;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #65;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #69;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #69;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #74;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #74;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #75;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #75;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #76;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #76;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #77;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #77;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #106;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #106;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #107;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #107;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #130;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #130;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #131;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #131;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #132;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #132;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #133;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #133;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #134;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #134;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #174;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #174;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #175;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #175;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #199;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #199;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #202;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #202;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #205;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #205;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #211;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #211;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #215;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #215;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #220;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #220;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #330;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #330;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #336;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #336;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #342;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #342;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #348;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #348;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #354;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #354;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #18;2 #360;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #18;2 #360;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #19;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 15 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #19;2 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 4 #I ************************************************** #I Starting group: [grp] #20;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 15 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #20;2 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 6 #I ************************************************** #I Starting group: [grp] #21;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 28 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #21;2 #10;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 6 #I ************************************************** #I Starting group: [grp] #22;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 15 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #26;2 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #26;2 #16;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #26;2 #16;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;2 #20;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #26;2 #20;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;2 #24;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I Group [grp] #26;2 #24;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;2 #25;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #26;2 #25;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;2 #26;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #26;2 #26;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;2 #37;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #26;2 #37;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;2 #38;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #26;2 #38;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;2 #39;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #26;2 #39;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;2 #52;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #26;2 #52;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;2 #53;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #26;2 #53;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;2 #54;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #26;2 #54;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;2 #83;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #26;2 #83;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;2 #84;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #26;2 #84;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #26;2 #85;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #26;2 #85;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #27;2 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #28;2 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 19 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #30;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 19 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #31;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 21 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #32;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 19 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #33;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 19 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #41;2 #16;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I # of immediate descendants of order 2^8 is 31 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #41;2 #31;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #31;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #32;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #32;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #33;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #33;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #34;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #34;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #35;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #35;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #36;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #36;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #37;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #37;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #38;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #38;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #159;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #159;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #160;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #160;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #161;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #161;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #162;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #162;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #163;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #163;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #164;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #164;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #165;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #165;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #243;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 10 #I Group [grp] #41;2 #243;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #244;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #244;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #245;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #245;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #246;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #246;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #247;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #247;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #248;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #248;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #249;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #249;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #250;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #250;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #41;2 #251;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #41;2 #251;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #42;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 40 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #43;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 24 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #44;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 20 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #45;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 13 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #46;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I # of immediate descendants of order 2^8 is 13 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #61;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #61;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #61;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #61;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #61;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #61;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #62;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #62;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #62;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #62;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #62;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #62;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #63;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #63;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #63;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #63;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #63;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #63;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #64;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #64;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #64;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #64;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #64;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #64;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #64;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #64;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #64;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #64;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #64;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #64;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #64;3 #36;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #64;3 #36;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #65;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #65;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #65;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #65;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #65;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #65;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #65;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #65;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #65;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #65;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #65;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #65;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #65;3 #24;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #65;3 #24;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #66;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #66;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #66;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #66;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #66;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #66;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #66;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #66;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #66;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #66;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #66;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #66;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #67;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #67;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #67;3 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #67;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #67;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #67;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #67;3 #12;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #67;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #68;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #68;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #68;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #68;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #69;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #69;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #69;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #69;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #70;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #70;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #70;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #70;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #70;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #70;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #70;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #70;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #71;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #71;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #71;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #71;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #72;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #72;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #72;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #72;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #73;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 13 #I Group [grp] #73;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #73;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 13 #I Group [grp] #73;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #73;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 13 #I Group [grp] #73;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #73;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 13 #I Group [grp] #73;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #73;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 13 #I Group [grp] #73;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #73;3 #31;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 13 #I Group [grp] #73;3 #31;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #73;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 13 #I Group [grp] #73;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #74;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #74;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #74;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #74;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #74;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #74;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #74;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #74;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #74;3 #32;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #74;3 #32;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #74;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #74;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #75;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #75;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #75;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #75;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #75;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #75;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #75;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #75;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #75;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #75;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #76;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #76;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #76;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #76;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #76;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #76;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #76;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #76;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #76;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #76;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #76;3 #20;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #76;3 #20;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #76;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #76;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #76;3 #26;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #76;3 #26;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #77;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #77;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #77;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #77;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #77;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #77;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #77;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #77;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #78;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #78;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #79;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #79;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #79;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #79;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #80;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #80;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #80;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #80;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #80;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #80;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #80;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #80;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #80;3 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #80;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #81;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #81;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #81;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #81;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #81;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #81;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #81;3 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #81;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #81;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #81;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #82;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #82;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #82;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #82;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #82;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #82;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #82;3 #37;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #82;3 #37;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #82;3 #38;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #82;3 #38;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #82;3 #56;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #82;3 #56;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #83;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #83;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #83;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #83;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #83;3 #29;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #83;3 #29;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #83;3 #65;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #83;3 #65;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #83;3 #74;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #83;3 #74;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #83;3 #89;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #83;3 #89;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #84;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #84;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #84;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #84;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #84;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #84;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #84;3 #12;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #84;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #84;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #84;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #84;3 #14;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #84;3 #14;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #85;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #85;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #85;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #85;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #85;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #85;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #85;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #85;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #85;3 #39;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #85;3 #39;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #85;3 #42;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #85;3 #42;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #86;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #86;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #86;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #86;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #86;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #86;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #86;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #86;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #86;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #86;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #87;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #87;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #87;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #87;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #87;3 #12;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #87;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #87;3 #26;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #87;3 #26;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #87;3 #27;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #87;3 #27;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #88;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #88;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #88;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #88;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #88;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #88;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #88;3 #14;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #88;3 #14;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #88;3 #27;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #88;3 #27;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #88;3 #39;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #88;3 #39;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #88;3 #42;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #88;3 #42;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #88;3 #71;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #88;3 #71;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #89;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #89;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #89;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #89;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #89;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #89;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #89;3 #12;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #89;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #90;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #90;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #90;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #90;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #90;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #90;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #90;3 #12;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #90;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #90;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #90;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #90;3 #23;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #90;3 #23;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #90;3 #34;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #90;3 #34;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #91;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #91;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #91;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #91;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #92;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #92;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #92;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #92;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #92;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #92;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #92;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #92;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #93;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #93;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #93;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #93;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #93;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #93;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #93;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #93;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #93;3 #28;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #93;3 #28;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #93;3 #35;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #93;3 #35;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #93;3 #47;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #93;3 #47;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #94;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #94;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #94;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #94;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #95;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #95;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #95;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #95;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #95;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #95;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #95;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #95;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #96;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #96;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #96;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #96;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #96;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #96;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #96;3 #37;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #96;3 #37;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #96;3 #42;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #96;3 #42;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #97;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #97;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #97;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #97;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #97;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #97;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #97;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #97;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #97;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #97;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #98;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #98;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #98;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #98;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #98;3 #14;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #98;3 #14;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #98;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #98;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #98;3 #20;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #98;3 #20;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #99;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #99;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #99;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #99;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #99;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #99;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #99;3 #12;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #99;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #100;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #100;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #101;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #101;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #102;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #102;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #102;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #102;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #102;3 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #102;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #102;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #102;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #102;3 #26;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #102;3 #26;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #103;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #103;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #103;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #103;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #103;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #103;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #104;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #104;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #104;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #104;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #104;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #104;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #104;3 #27;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #104;3 #27;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #105;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #105;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #105;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #105;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #105;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #105;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #105;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #105;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #105;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #105;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #105;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #105;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #105;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #105;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #106;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #106;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #106;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #106;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #106;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #106;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #106;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #106;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #106;3 #23;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #106;3 #23;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #107;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #107;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #107;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #107;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #107;3 #12;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #107;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #107;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #107;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #107;3 #27;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #107;3 #27;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #107;3 #37;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #107;3 #37;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #107;3 #41;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #107;3 #41;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #108;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #108;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #108;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #108;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #109;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #109;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #109;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #109;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #110;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #110;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #110;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #110;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #111;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #111;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #111;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #111;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #111;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #111;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #112;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #112;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #112;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #112;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #112;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #112;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #113;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #113;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #113;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #113;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #113;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #113;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #113;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #113;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #114;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #114;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #114;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #114;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #115;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #115;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #115;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #115;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #116;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #116;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #116;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #116;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #117;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #117;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #117;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #117;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #117;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #117;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #117;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #117;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #118;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #118;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #118;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #118;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #118;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #118;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #119;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #119;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #119;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #119;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #119;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #119;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #120;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #120;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #120;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #120;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #120;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #120;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #120;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #120;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #121;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #121;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #121;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #121;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #121;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #121;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #122;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #122;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #122;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #122;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #122;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #122;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #122;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #122;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #123;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #123;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #123;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #123;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #123;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #123;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #124;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #124;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #124;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #124;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #124;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #124;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #124;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #124;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #125;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #125;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #126;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #126;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #127;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #127;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #127;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #127;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #128;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #128;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #129;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #129;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #129;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #129;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #130;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #130;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #131;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #131;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #132;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #132;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #133;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #133;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #133;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #133;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #134;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #134;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #134;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #134;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #134;3 #14;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #134;3 #14;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #134;3 #28;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #134;3 #28;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #134;3 #38;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #134;3 #38;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #135;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #135;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #135;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #135;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #135;3 #14;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #135;3 #14;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #136;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #136;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #136;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #136;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #136;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #136;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #137;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #137;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #137;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #137;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #137;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #137;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #138;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #138;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #138;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #138;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #138;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #138;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #138;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #138;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #139;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #139;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #139;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #139;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #140;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #140;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #140;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #140;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #140;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #140;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #140;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #140;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #141;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #141;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #141;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #141;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #142;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #142;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #142;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #142;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #142;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #142;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #143;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #143;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #143;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #143;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #144;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #144;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #144;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #144;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #144;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #144;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #144;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #144;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #144;3 #27;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #144;3 #27;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #145;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #145;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #145;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #145;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #145;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #145;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #146;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #146;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #146;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #146;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #146;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #146;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #147;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #147;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #147;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #147;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #147;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #147;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #148;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #148;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #148;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #148;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #148;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #148;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #148;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #148;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #149;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #149;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #149;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #149;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #150;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #150;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #150;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #150;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #150;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #150;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #150;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #150;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #151;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #151;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #151;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #151;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #152;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #152;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #152;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #152;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #153;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #153;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #153;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #153;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #154;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #154;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #154;3 #27;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #154;3 #27;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #154;3 #39;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #154;3 #39;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #155;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #155;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #155;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #155;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #155;3 #39;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #155;3 #39;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #156;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #156;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #156;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #156;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #156;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #156;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #157;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #157;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #157;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #157;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #157;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #157;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #157;3 #26;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #157;3 #26;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #157;3 #30;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #157;3 #30;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #158;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #158;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #158;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #158;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #158;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #158;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #159;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #159;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #159;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #159;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #159;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #159;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #159;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #159;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #160;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #160;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #160;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #160;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #160;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #160;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #161;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #161;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #161;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #161;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #161;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #161;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #162;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #162;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #162;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #162;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #162;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #162;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #163;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #163;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #163;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #163;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #163;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #163;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #164;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #164;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #165;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #165;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #165;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #165;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #166;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #166;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #167;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #167;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #168;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #168;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #168;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #168;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #168;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #168;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #169;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #169;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #170;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #170;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #171;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #171;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #171;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #171;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #172;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #172;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #173;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #173;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #173;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #173;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #174;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #174;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #175;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #175;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #175;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #175;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #175;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #175;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #176;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #176;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #177;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #177;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #177;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #177;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #178;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #178;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #179;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #179;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #180;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #180;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #180;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #180;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #180;3 #35;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #180;3 #35;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #181;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #181;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #181;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #181;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #182;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #182;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #182;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #182;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #182;3 #32;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #182;3 #32;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #182;3 #44;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #182;3 #44;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #182;3 #46;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #182;3 #46;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #183;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #183;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #183;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #183;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #183;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #183;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #184;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #184;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #184;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #184;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #184;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #184;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #185;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #185;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #185;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #185;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #186;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #186;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #186;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #186;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #186;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #186;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #186;3 #14;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #186;3 #14;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #186;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #186;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #187;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #187;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #187;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #187;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #187;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #187;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #187;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #187;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #187;3 #12;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #187;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #187;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #187;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #188;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #188;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #188;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #188;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #188;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #188;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #188;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #188;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #188;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #188;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #189;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #189;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #189;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #189;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #189;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #189;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #190;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #190;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #190;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #190;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #190;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #190;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #191;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #191;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #191;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #191;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #191;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #191;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #191;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #191;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #191;3 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #191;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #191;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #191;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #192;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #192;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #192;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #192;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #192;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #192;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #192;3 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #192;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #193;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #193;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #193;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #193;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #193;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #193;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #194;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #194;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #194;3 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #194;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #195;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #195;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #195;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #195;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #195;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #195;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #199;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #199;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #199;3 #27;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #199;3 #27;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #199;3 #65;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 12 #I Group [grp] #199;3 #65;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #200;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #200;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #200;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #200;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #200;3 #37;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #200;3 #37;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #201;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #201;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #201;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #201;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #201;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #201;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #201;3 #27;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #201;3 #27;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #201;3 #35;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #201;3 #35;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #201;3 #36;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #201;3 #36;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #202;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #202;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #202;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #202;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #202;3 #23;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #202;3 #23;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #202;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #202;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #202;3 #34;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #202;3 #34;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #203;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #203;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #203;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #203;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #203;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #203;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #203;3 #35;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #203;3 #35;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #203;3 #37;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #203;3 #37;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #203;3 #69;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #203;3 #69;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #203;3 #81;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #203;3 #81;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #204;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #204;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #204;3 #29;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #204;3 #29;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #204;3 #41;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #204;3 #41;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #204;3 #53;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #204;3 #53;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #204;3 #60;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #204;3 #60;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #205;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #205;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #205;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #205;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #205;3 #29;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #205;3 #29;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #205;3 #41;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #205;3 #41;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #205;3 #53;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #205;3 #53;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #206;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #206;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #206;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #206;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #206;3 #43;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #206;3 #43;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #206;3 #71;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #206;3 #71;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #207;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #207;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #207;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #207;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #207;3 #31;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #207;3 #31;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #208;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #208;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #208;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #208;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #208;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #208;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #208;3 #28;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #208;3 #28;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #209;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #209;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #209;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #209;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #209;3 #32;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #209;3 #32;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #210;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #210;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #210;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #210;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #210;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #210;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #211;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #211;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #211;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #211;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #211;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #211;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #212;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #212;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #212;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #212;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #212;3 #47;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #212;3 #47;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #213;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #213;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #213;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #213;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #213;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #213;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #213;3 #26;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #213;3 #26;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #214;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #214;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #214;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #214;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #214;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #214;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #214;3 #37;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #214;3 #37;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #214;3 #49;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #214;3 #49;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #214;3 #53;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #214;3 #53;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #215;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #215;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #215;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #215;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #216;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #216;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #216;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #216;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #217;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #217;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #217;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #217;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #218;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #218;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #218;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #218;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #218;3 #23;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #218;3 #23;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #218;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #218;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #219;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #219;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #219;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #219;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #220;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #220;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #220;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #220;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #220;3 #73;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #220;3 #73;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #220;3 #93;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #220;3 #93;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #221;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #221;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #221;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #221;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #222;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #222;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #222;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #222;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #223;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #223;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #223;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #223;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #223;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #223;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #223;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #223;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #224;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #224;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #224;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #224;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #224;3 #43;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #224;3 #43;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #225;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #225;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #225;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #225;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #226;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #226;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #226;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #226;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #226;3 #43;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #226;3 #43;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #227;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #227;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #227;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #227;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #227;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #227;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #227;3 #65;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #227;3 #65;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #228;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #228;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #228;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #228;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #228;3 #29;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #228;3 #29;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #228;3 #59;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #228;3 #59;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #229;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #229;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #229;3 #41;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #229;3 #41;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #229;3 #55;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #229;3 #55;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #229;3 #63;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #229;3 #63;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #230;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #230;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #230;3 #28;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #230;3 #28;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #230;3 #42;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #230;3 #42;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #231;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #231;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #231;3 #27;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #231;3 #27;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #231;3 #31;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #231;3 #31;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #231;3 #45;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #231;3 #45;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #231;3 #46;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #231;3 #46;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #232;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #232;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #232;3 #32;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #232;3 #32;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #232;3 #46;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #232;3 #46;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #233;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #233;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #233;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #233;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #234;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #234;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #234;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #234;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #235;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #235;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #235;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #235;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #236;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #236;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #236;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #236;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #236;3 #26;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #236;3 #26;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #237;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #237;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #237;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #237;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #238;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #238;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #238;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #238;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #238;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #238;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #238;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #238;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #239;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #239;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #239;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #239;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #239;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #239;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #239;3 #49;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #239;3 #49;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #240;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #240;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #240;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #240;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #241;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #241;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #241;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #241;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #241;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #241;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #242;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #242;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #242;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #242;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #243;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #243;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #243;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #243;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #243;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #243;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #243;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #243;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #244;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #244;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #244;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #244;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #245;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #245;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #245;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #245;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #245;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #245;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #245;3 #57;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #245;3 #57;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #246;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #246;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #246;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #246;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #247;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #247;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #247;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #247;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #248;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #248;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #248;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #248;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #248;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #248;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #249;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #249;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #249;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #249;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #250;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #250;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #250;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #250;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #250;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #250;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #250;3 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #250;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #251;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #251;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #251;3 #24;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #251;3 #24;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #252;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #252;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #252;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #252;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #252;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #252;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #252;3 #50;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #252;3 #50;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #253;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #253;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #253;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #253;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #253;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #253;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #253;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #253;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #254;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #254;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #254;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #254;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #255;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #255;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #255;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #255;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #256;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #256;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #256;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #256;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #257;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #257;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #257;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #257;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #257;3 #35;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #257;3 #35;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #258;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #258;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #258;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #258;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #259;3 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #259;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #259;3 #23;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #259;3 #23;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #260;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #260;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #260;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #260;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #260;3 #36;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #260;3 #36;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #260;3 #52;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #260;3 #52;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #261;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #261;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #261;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #261;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #262;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #262;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #262;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #262;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #263;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #263;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #263;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #263;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #264;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #264;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #264;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #264;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #264;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #264;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #264;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #264;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #265;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #265;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #265;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #265;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #266;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #266;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #266;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #266;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #267;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #267;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #267;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #267;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #268;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #268;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #268;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #268;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #268;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #268;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #269;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #269;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #269;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #269;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #270;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #270;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #270;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #270;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #271;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #271;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #271;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #271;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #272;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #272;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #272;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #272;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #273;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #273;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #273;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #273;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #274;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #274;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #274;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #274;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #275;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #275;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #275;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #275;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #276;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #276;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #276;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #276;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #276;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #276;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #276;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #276;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #277;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #277;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #277;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #277;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #278;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #278;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #278;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #278;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #279;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #279;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #279;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #279;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #279;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #279;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #280;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #280;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #280;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #280;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #280;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #280;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #280;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #280;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #281;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #281;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #281;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #281;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #281;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #281;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #281;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #281;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #282;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #282;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #282;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #282;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #282;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #282;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #282;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #282;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #283;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #283;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #283;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #283;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #284;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #284;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #285;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #285;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #285;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #285;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #286;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #286;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #286;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #286;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #287;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #287;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #287;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #287;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #288;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #288;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #288;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #288;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #292;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #292;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #292;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #292;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #294;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #294;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #294;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #294;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #295;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #295;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #295;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #295;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #296;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #296;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #296;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #296;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #297;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #297;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #297;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #297;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #297;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #297;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #297;3 #28;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #297;3 #28;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #298;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #298;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #298;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #298;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #299;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #299;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #299;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #299;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #300;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #300;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #302;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #302;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #308;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #308;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #315;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #315;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #317;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #317;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #317;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #317;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #330;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #330;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #330;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #330;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #330;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #330;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #330;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #330;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #331;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #331;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #331;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #331;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #331;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #331;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #331;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #331;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #332;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #332;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #332;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #332;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #332;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #332;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #332;3 #14;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #332;3 #14;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #333;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #333;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #333;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #333;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #333;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #333;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #333;3 #23;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #333;3 #23;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #334;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #334;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #334;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #334;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #334;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #334;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #334;3 #14;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #334;3 #14;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #335;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #335;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #335;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #335;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #335;3 #29;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #335;3 #29;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #335;3 #41;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #335;3 #41;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #336;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #336;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #336;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #336;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #336;3 #29;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #336;3 #29;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #336;3 #45;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #336;3 #45;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #337;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #337;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #337;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #337;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #337;3 #41;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #337;3 #41;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #338;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #338;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #338;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #338;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #338;3 #20;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #338;3 #20;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #338;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #338;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #339;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #339;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #339;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #339;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #340;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #340;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #340;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #340;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #340;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #340;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #341;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #341;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #341;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #341;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #342;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #342;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #342;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #342;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #343;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #343;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #343;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #343;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #343;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #343;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #344;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #344;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #344;3 #12;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #344;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #345;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #345;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #346;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #346;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #346;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #346;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #347;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #347;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #348;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #348;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #348;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #348;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #349;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #349;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #349;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #349;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #350;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #350;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #351;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #351;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #352;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #352;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #353;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #353;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #353;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #353;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #354;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #354;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #355;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #355;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #355;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #355;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #356;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #356;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #357;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #357;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #357;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #357;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #358;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #358;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #358;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #358;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #359;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #359;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #360;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #360;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #360;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #360;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #361;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #361;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #361;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #361;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #362;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #362;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #362;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #362;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #363;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #363;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #363;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #363;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #364;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #364;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #364;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #364;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #375;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #375;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #375;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #375;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #375;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #375;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #375;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #375;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #376;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #376;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #376;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #376;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #377;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #377;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #377;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #377;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #377;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #377;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #377;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #377;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #378;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #378;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #378;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #378;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #378;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #378;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #379;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #379;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #379;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #379;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #380;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #380;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #380;3 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #380;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #387;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #387;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #387;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #387;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #388;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #388;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #388;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #388;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #394;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #394;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #394;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #394;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #395;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #395;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #395;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #395;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #395;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #395;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #395;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #395;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #396;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #396;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #396;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #396;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #396;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #396;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #397;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #397;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #397;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #397;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #398;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #398;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #398;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #398;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #399;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #399;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #399;3 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #399;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #399;3 #14;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #399;3 #14;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #400;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #400;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #400;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #400;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #405;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #405;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #405;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #405;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #405;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #405;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #406;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #406;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #406;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #406;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #407;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #407;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #407;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #407;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #409;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #409;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #409;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #409;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #409;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #409;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #409;3 #23;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #409;3 #23;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #409;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #409;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #410;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #410;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #410;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #410;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #411;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #411;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #411;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #411;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #412;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #412;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #412;3 #23;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #412;3 #23;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #413;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #413;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #413;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #413;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #413;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #413;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #414;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #414;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #414;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #414;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #415;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #415;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #415;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #415;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #416;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #416;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #416;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #416;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #417;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #417;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #417;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #417;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #418;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #418;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #418;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #418;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #419;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #419;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #419;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #419;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #419;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #419;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #420;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #420;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #420;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #420;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #420;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #420;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #421;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #421;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #421;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #421;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #421;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #421;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #422;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #422;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #422;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #422;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #423;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #423;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #423;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #423;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #424;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #424;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #424;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #424;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #425;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #425;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #425;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #425;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #426;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #426;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #426;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #426;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #427;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #427;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #428;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #428;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #428;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #428;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #429;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #429;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #429;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #429;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #430;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #430;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #430;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #430;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #431;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #431;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #431;3 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #431;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #432;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #432;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #432;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #432;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #432;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #432;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #433;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #433;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #433;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #433;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #434;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #434;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #434;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #434;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #435;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #435;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #436;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #436;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #437;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #437;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #438;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #438;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #452;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #452;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #453;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #453;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #454;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #454;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #455;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #455;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #456;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #456;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #457;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #457;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #458;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #458;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #459;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #459;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #460;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #460;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #464;3 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #464;3 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #464;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #464;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #465;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #465;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #465;3 #36;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #465;3 #36;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #466;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #466;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #467;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #467;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #467;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #467;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #467;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #467;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #467;3 #37;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #467;3 #37;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #468;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #468;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #468;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #468;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #469;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #469;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #469;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #469;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #470;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #470;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #470;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #470;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #471;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #471;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #472;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #472;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #472;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #472;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #473;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #473;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #474;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #474;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #474;3 #17;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #474;3 #17;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #474;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #474;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #474;3 #49;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #474;3 #49;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #475;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #475;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #475;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #475;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #476;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #476;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #477;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #477;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #477;3 #33;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #477;3 #33;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #478;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #478;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #478;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #478;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #479;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #479;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #480;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #480;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #480;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #480;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #481;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #481;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #481;3 #29;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #481;3 #29;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #482;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #482;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #482;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #482;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #483;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #483;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #483;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #483;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #484;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #484;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #484;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #484;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #485;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #485;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #485;3 #29;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #485;3 #29;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #486;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #486;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #486;3 #30;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #486;3 #30;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #487;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #487;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #487;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #487;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #488;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #488;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #488;3 #30;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #488;3 #30;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #489;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #489;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #489;3 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #489;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #489;3 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #489;3 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #490;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #490;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #490;3 #32;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #490;3 #32;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #491;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #491;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #491;3 #12;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #491;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #492;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #492;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #492;3 #32;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #492;3 #32;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #493;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #493;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #493;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #493;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #493;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #493;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #493;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #493;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #494;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #494;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #495;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #495;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #495;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #495;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #496;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #496;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #497;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #497;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #497;3 #27;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #497;3 #27;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #498;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #498;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #499;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #499;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #499;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #499;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #500;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #500;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #501;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #501;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #502;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #502;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #502;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #502;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #503;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #503;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #504;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #504;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #504;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #504;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #504;3 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #504;3 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #504;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #504;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #505;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #505;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #505;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #505;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #506;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #506;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #507;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #507;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #508;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #508;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #509;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #509;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #510;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #510;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #511;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #511;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #512;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #512;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #513;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #513;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #513;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #513;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #514;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #514;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #515;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #515;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #516;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #516;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #517;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #517;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #518;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #518;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #519;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #519;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #520;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #520;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #520;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #520;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #520;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #520;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #521;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #521;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #522;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #522;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #523;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #523;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #524;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #524;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #524;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #524;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #524;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #524;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #525;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #525;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #525;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #525;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #526;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #526;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #526;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #526;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #527;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #527;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #528;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #528;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #528;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #528;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #528;3 #12;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #528;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #529;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #529;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #530;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #530;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #608;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #608;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #608;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #608;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #609;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #609;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #610;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #610;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #611;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #611;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #612;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #612;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #613;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #613;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #614;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #614;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #615;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #615;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #616;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #616;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #617;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #617;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #618;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #618;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #619;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #619;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #619;3 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #619;3 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #642;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 13 #I Group [grp] #642;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #642;3 #21;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 13 #I Group [grp] #642;3 #21;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #642;3 #22;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 13 #I Group [grp] #642;3 #22;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #643;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #643;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #643;3 #25;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #643;3 #25;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #643;3 #29;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 11 #I Group [grp] #643;3 #29;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #644;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #644;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #644;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #644;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #644;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #644;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #644;3 #20;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #644;3 #20;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #645;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #645;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #645;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #645;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #645;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #645;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #645;3 #16;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #645;3 #16;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #645;3 #29;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #645;3 #29;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #645;3 #31;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #645;3 #31;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #646;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #646;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #646;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #646;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #646;3 #19;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #646;3 #19;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #647;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #647;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #647;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #647;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #647;3 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #647;3 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #648;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #648;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #648;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #648;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #649;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #649;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #649;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #649;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #649;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #649;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #650;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #650;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #650;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #650;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #650;3 #24;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #650;3 #24;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #651;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #651;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #651;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #651;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #651;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #651;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #651;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #651;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #652;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #652;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #652;3 #12;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #652;3 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #653;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #653;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #653;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #653;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #653;3 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #653;3 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #654;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #654;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #654;3 #18;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #654;3 #18;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #655;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #655;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #656;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #656;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #656;3 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #656;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #657;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #657;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #658;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 8 #I Group [grp] #658;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #663;3 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 10 #I Group [grp] #663;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #664;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 9 #I Group [grp] #664;3 #3;1 is an invalid starting group #I ************************************************** 5473 gap> PqQuitAll(); gap> ##Example: "2gp-PG-e4-i" . . . based on: examples/pga_exp4 gap> ##All 2-generator exponent 4 2-groups gap> F := FreeGroup("a", "b"); gap> procId := PqStart(F : Prime := 2); 1 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^2 gap> PqComputePCover(procId); #I Group: [grp] to lower exponent-2 central class 2 has order 2^5 gap> PqPGSupplyAutomorphisms(procId, [ [[0,1], > [1,1]], > > [[0,1], > [1,0]] ]); gap> PqPGConstructDescendants(procId : ClassBound := 12, > PcgsAutomorphisms, > Exponent := 4); #I ************************************************** #I Starting group: [grp] #I Order: 2^2 #I Nuclear rank: 3 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^3 is 3 #I # of immediate descendants of order 2^4 is 3 #I # of capable immediate descendants is 1 #I # of immediate descendants of order 2^5 is 1 #I # of capable immediate descendants is 1 #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;1 #I Order: 2^3 #I Nuclear rank: 0 #I 2-multiplicator rank: 1 #I Group [grp] #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2;1 #I Order: 2^3 #I Nuclear rank: 0 #I 2-multiplicator rank: 1 #I Group [grp] #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #3;1 #I Order: 2^3 #I Nuclear rank: 0 #I 2-multiplicator rank: 1 #I Group [grp] #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4;2 #I Order: 2^4 #I Nuclear rank: 0 #I 2-multiplicator rank: 2 #I Group [grp] #4;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #I Order: 2^4 #I Nuclear rank: 1 #I 2-multiplicator rank: 2 #I # of immediate descendants of order 2^5 is 1 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #6;2 #I Order: 2^4 #I Nuclear rank: 0 #I 2-multiplicator rank: 2 #I Group [grp] #6;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #I Order: 2^5 #I Nuclear rank: 2 #I 2-multiplicator rank: 2 #I # of immediate descendants of order 2^6 is 1 #I # of capable immediate descendants is 1 #I # of immediate descendants of order 2^7 is 1 #I # of capable immediate descendants is 1 #I ************************************************** #I ************************************************** #I Starting group: [grp] #5;2 #1;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 2 #I # of immediate descendants of order 2^6 is 2 #I ************************************************** #I Starting group: [grp] #7;3 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 2 #I # of immediate descendants of order 2^7 is 1 #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 3 #I # of immediate descendants of order 2^9 is 3 #I # of capable immediate descendants is 1 #I # of immediate descendants of order 2^10 is 1 #I # of capable immediate descendants is 1 #I ************************************************** #I ************************************************** #I Starting group: [grp] #5;2 #1;1 #1;1 #I Order: 2^6 #I Nuclear rank: 0 #I 2-multiplicator rank: 1 #I Group [grp] #5;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #1;1 #2;1 #I Order: 2^6 #I Nuclear rank: 0 #I 2-multiplicator rank: 1 #I Group [grp] #5;2 #1;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 0 #I 2-multiplicator rank: 1 #I Group [grp] #7;3 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #1;1 #I Order: 2^8 #I Nuclear rank: 0 #I 2-multiplicator rank: 1 #I Group [grp] #7;3 #2;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #2;1 #I Order: 2^8 #I Nuclear rank: 0 #I 2-multiplicator rank: 1 #I Group [grp] #7;3 #2;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #3;1 #I Order: 2^8 #I Nuclear rank: 0 #I 2-multiplicator rank: 1 #I Group [grp] #7;3 #2;2 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #4;2 #I Order: 2^9 #I Nuclear rank: 0 #I 2-multiplicator rank: 2 #I Group [grp] #7;3 #2;2 #4;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #5;2 #I Order: 2^9 #I Nuclear rank: 0 #I 2-multiplicator rank: 2 #I Group [grp] #7;3 #2;2 #5;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #6;2 #I Order: 2^9 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^10 is 2 #I # of immediate descendants of order 2^11 is 2 #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #7;3 #I Order: 2^10 #I Nuclear rank: 2 #I 2-multiplicator rank: 2 #I # of immediate descendants of order 2^11 is 1 #I # of immediate descendants of order 2^12 is 1 #I ************************************************** #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #6;2 #1;1 #I Order: 2^10 #I Nuclear rank: 0 #I 2-multiplicator rank: 1 #I Group [grp] #7;3 #2;2 #6;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #6;2 #2;1 #I Order: 2^10 #I Nuclear rank: 0 #I 2-multiplicator rank: 1 #I Group [grp] #7;3 #2;2 #6;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #6;2 #3;2 #I Order: 2^11 #I Nuclear rank: 0 #I 2-multiplicator rank: 2 #I Group [grp] #7;3 #2;2 #6;2 #3;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #6;2 #4;2 #I Order: 2^11 #I Nuclear rank: 0 #I 2-multiplicator rank: 2 #I Group [grp] #7;3 #2;2 #6;2 #4;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #7;3 #1;1 #I Order: 2^11 #I Nuclear rank: 0 #I 2-multiplicator rank: 1 #I Group [grp] #7;3 #2;2 #7;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #2;2 #7;3 #2;2 #I Order: 2^12 #I Nuclear rank: 0 #I 2-multiplicator rank: 2 #I Group [grp] #7;3 #2;2 #7;3 #2;2 is an invalid starting group 26 gap> ##Example: "2gp-PG-i" . . . based on: examples/pga_2gp gap> ##All descendants of C2 x C2 up to order 2^8 gap> F := FreeGroup("a", "b"); gap> procId := PqStart(F : Prime := 2); 2 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^2 gap> PqComputePCover(procId); #I Group: [grp] to lower exponent-2 central class 2 has order 2^5 gap> PqPGSupplyAutomorphisms(procId, [ [[0,1], > [1,1]], > > [[0,1], > [1,0]] ]); gap> PqPGConstructDescendants(procId : ClassBound := 7, > OrderBound := 8, > PcgsAutomorphisms, > BasicAlgorithm); #I ************************************************** #I Starting group: [grp] #I Order: 2^2 #I Nuclear rank: 3 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^3 is 3 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 2^4 is 3 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 2^5 is 1 #I # of capable immediate descendants is 1 #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;1 #I Order: 2^3 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^4 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #2;1 #I Order: 2^3 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^4 is 3 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #4;2 #I Order: 2^4 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^5 is 2 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 2^6 is 2 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #I Order: 2^4 #I Nuclear rank: 3 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^5 is 7 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 2^6 is 11 #I # of capable immediate descendants is 10 #I # of immediate descendants of order 2^7 is 3 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #6;2 #I Order: 2^4 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^5 is 4 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 2^6 is 2 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #I Order: 2^5 #I Nuclear rank: 5 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^6 is 9 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 2^7 is 37 #I # of capable immediate descendants is 28 #I # of immediate descendants of order 2^8 is 37 #I # of capable immediate descendants is 37 #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;1 #1;1 #I Order: 2^4 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^5 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #2;1 #1;1 #I Order: 2^4 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^5 is 3 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #4;2 #1;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^6 is 2 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #4;2 #2;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^6 is 1 #I ************************************************** #I Starting group: [grp] #4;2 #3;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 2 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 2^8 is 2 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #4;2 #4;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 2 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 2^8 is 1 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #1;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^6 is 3 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #2;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^6 is 6 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #5;2 #5;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^6 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^7 is 8 #I # of capable immediate descendants is 5 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 8 #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^7 is 7 #I # of capable immediate descendants is 4 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^7 is 8 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 6 #I ************************************************** #I Starting group: [grp] #5;2 #11;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^7 is 12 #I # of capable immediate descendants is 4 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 16 #I ************************************************** #I Starting group: [grp] #5;2 #13;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 4 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #5;2 #14;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 2 #I ************************************************** #I Starting group: [grp] #5;2 #16;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 1 #I # of immediate descendants of order 2^8 is 7 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #5;2 #17;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 3 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #18;2 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 1 #I ************************************************** #I Starting group: [grp] #5;2 #19;3 #I Order: 2^7 #I Nuclear rank: 4 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #5;2 #20;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #5;2 #21;3 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #6;2 #1;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^6 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #6;2 #2;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^6 is 1 #I ************************************************** #I Starting group: [grp] #6;2 #3;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^6 is 3 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #6;2 #5;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 3 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 2^8 is 1 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #6;2 #6;2 #I Order: 2^6 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 4 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 2^8 is 2 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #7;3 #5;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #7;3 #7;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #10;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #11;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 3 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #7;3 #12;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 3 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #13;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 3 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #14;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #7;3 #15;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #7;3 #16;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #7;3 #17;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #7;3 #18;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #19;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #7;3 #20;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #7;3 #21;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #7;3 #23;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #25;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 2 #I ************************************************** #I Starting group: [grp] #7;3 #26;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #7;3 #27;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 2 #I ************************************************** #I Starting group: [grp] #7;3 #29;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #30;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 3 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #7;3 #31;2 #I Order: 2^7 #I Nuclear rank: 3 #I 2-multiplicator rank: 6 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #7;3 #32;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #7;3 #33;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #37;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #7;3 #38;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 2 #I ************************************************** #I Starting group: [grp] #7;3 #39;2 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 14 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #7;3 #40;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 3 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #41;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 3 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #44;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #46;2 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #47;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #47;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #48;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #48;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #49;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #49;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #50;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #50;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #51;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #51;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #52;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #52;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #53;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #53;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #54;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #54;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #55;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #55;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #56;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #56;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #57;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #57;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #58;3 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 6 #I Group [grp] #7;3 #58;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #59;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #59;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #60;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #60;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #61;3 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 6 #I Group [grp] #7;3 #61;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #62;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #62;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #63;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #63;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #64;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #64;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #65;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #65;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #66;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #66;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #67;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #67;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #68;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #68;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #69;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #69;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #70;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #70;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #71;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #71;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #72;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #72;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #73;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #73;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #74;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #74;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #75;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #75;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #76;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #76;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #77;3 #I Order: 2^8 #I Nuclear rank: 4 #I 2-multiplicator rank: 6 #I Group [grp] #7;3 #77;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #78;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #78;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #79;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #79;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #80;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #80;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #81;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #81;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #82;3 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #82;3 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #83;3 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #83;3 is an invalid starting group #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;1 #1;1 #1;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^6 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #2;1 #1;1 #1;1 #I Order: 2^5 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^6 is 3 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #4;2 #1;1 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 2 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #4;2 #1;1 #2;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 1 #I ************************************************** #I Starting group: [grp] #4;2 #3;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 2 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #4;2 #3;2 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 1 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #4;2 #3;2 #3;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I Group [grp] #4;2 #3;2 #3;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4;2 #3;2 #4;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I Group [grp] #4;2 #3;2 #4;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4;2 #4;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 2 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #4;2 #4;2 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 1 #I ************************************************** #I Starting group: [grp] #4;2 #4;2 #3;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I Group [grp] #4;2 #4;2 #3;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #1;1 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^7 is 3 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #2;1 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^7 is 4 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #2;1 #3;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #2;1 #4;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^7 is 3 #I ************************************************** #I Starting group: [grp] #5;2 #5;1 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^7 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #3;1 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #6;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #9;2 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #8;2 #9;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #10;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #8;2 #10;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #11;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #8;2 #11;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #12;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #8;2 #12;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #13;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #8;2 #13;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #14;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #8;2 #14;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #15;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #8;2 #15;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #16;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #8;2 #16;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 5 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #8;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #9;2 #8;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #9;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #9;2 #9;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #10;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #9;2 #10;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #11;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #9;2 #11;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #12;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #9;2 #12;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #13;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #9;2 #13;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 3 #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #9;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #10;2 #9;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #10;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #10;2 #10;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #11;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #10;2 #11;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #12;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #10;2 #12;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #13;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #10;2 #13;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #15;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #10;2 #15;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #11;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #5;1 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #6;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #7;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #9;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #13;2 #I Order: 2^8 #I Nuclear rank: 3 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #12;2 #13;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #14;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #12;2 #14;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #15;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #12;2 #15;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #16;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #12;2 #16;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #17;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #12;2 #17;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #18;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #12;2 #18;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #19;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #12;2 #19;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #20;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #12;2 #20;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #21;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #12;2 #21;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #22;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #12;2 #22;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #23;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #12;2 #23;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #24;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #12;2 #24;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #25;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #12;2 #25;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #26;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #12;2 #26;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #27;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #12;2 #27;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #28;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #12;2 #28;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #13;2 #1;1 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 3 #I ************************************************** #I Starting group: [grp] #5;2 #13;2 #2;1 #I Order: 2^7 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #13;2 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 2 #I ************************************************** #I Starting group: [grp] #5;2 #13;2 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 2 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #16;2 #5;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #16;2 #7;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #16;2 #7;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #16;2 #9;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #16;2 #9;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #16;2 #11;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #16;2 #11;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #16;2 #12;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #16;2 #12;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #16;2 #13;2 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #16;2 #13;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #17;2 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 3 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #17;2 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 2 #I ************************************************** #I Starting group: [grp] #5;2 #19;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #19;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #19;3 #2;1 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I Group [grp] #5;2 #19;3 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #19;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #19;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #19;3 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #19;3 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #20;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #20;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #20;3 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #20;3 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #20;3 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #20;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #20;3 #5;1 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #20;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #20;3 #6;1 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #20;3 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #21;3 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #21;3 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #21;3 #4;1 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #21;3 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #21;3 #5;1 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #21;3 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #1;1 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #6;2 #3;1 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 3 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #6;2 #3;1 #2;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 1 #I ************************************************** #I Starting group: [grp] #6;2 #5;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #6;2 #5;2 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 1 #I ************************************************** #I Starting group: [grp] #6;2 #5;2 #4;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I Group [grp] #6;2 #5;2 #4;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #6;2 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #6;2 #6;2 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 3 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #6;2 #6;2 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #6;2 #6;2 #5;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I Group [grp] #6;2 #6;2 #5;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #6;2 #6;2 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 3 #I Group [grp] #6;2 #6;2 #6;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #7;3 #5;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 10 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #7;3 #7;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 16 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #7;3 #7;1 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I # of immediate descendants of order 2^8 is 12 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #7;3 #10;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #10;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #10;2 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #10;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #11;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #11;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #11;2 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #11;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #11;2 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #11;2 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #12;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #12;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #12;2 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #12;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #13;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #13;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #13;2 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #13;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #14;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #14;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #14;2 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #14;2 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #14;2 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #14;2 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #15;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #15;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #16;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #16;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #16;2 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #16;2 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #16;2 #12;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #16;2 #12;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #17;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #17;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #17;2 #5;1 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I Group [grp] #7;3 #17;2 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #17;2 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #17;2 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #18;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #18;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #18;2 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #18;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #19;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #19;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #19;2 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #19;2 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #19;2 #6;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #19;2 #6;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #19;2 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #19;2 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #20;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #20;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #21;2 #1;1 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #21;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #21;2 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #21;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #21;2 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #21;2 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #23;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #23;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #23;2 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #23;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #26;2 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #26;2 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #26;2 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #26;2 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #26;2 #11;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #26;2 #11;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #29;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #29;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #29;2 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #29;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #30;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #30;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #30;2 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #30;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #30;2 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #30;2 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #31;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #7;3 #31;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #31;2 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #7;3 #31;2 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #31;2 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #7;3 #31;2 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #31;2 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 6 #I Group [grp] #7;3 #31;2 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #31;2 #15;1 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 7 #I Group [grp] #7;3 #31;2 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #32;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #32;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #32;2 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #32;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #32;2 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #32;2 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #32;2 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #32;2 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #33;2 #1;1 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #33;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #33;2 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #33;2 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #37;2 #1;1 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 6 #I Group [grp] #7;3 #37;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #37;2 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #37;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #37;2 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #37;2 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #39;2 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #39;2 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #40;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #40;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #40;2 #2;1 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #40;2 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #41;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #41;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #41;2 #3;1 #I Order: 2^8 #I Nuclear rank: 2 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #41;2 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #44;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #44;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #44;2 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #44;2 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #46;2 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #46;2 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #46;2 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #7;3 #46;2 #7;1 is an invalid starting group #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;1 #1;1 #1;1 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #2;1 #1;1 #1;1 #1;1 #I Order: 2^6 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^7 is 3 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #4;2 #1;1 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 2 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #4;2 #1;1 #1;1 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 1 #I ************************************************** #I Starting group: [grp] #4;2 #3;2 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #4;2 #3;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4;2 #3;2 #1;1 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #4;2 #3;2 #1;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4;2 #3;2 #2;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #4;2 #3;2 #2;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4;2 #4;2 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #4;2 #4;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4;2 #4;2 #1;1 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #4;2 #4;2 #1;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #1;1 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 3 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #2;1 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 8 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #2;1 #1;1 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I ************************************************** #I Starting group: [grp] #5;2 #2;1 #3;1 #3;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #2;1 #3;1 #4;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 4 #I ************************************************** #I Starting group: [grp] #5;2 #5;1 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I # of immediate descendants of order 2^8 is 6 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #8;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #3;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #8;2 #3;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #3;1 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #8;2 #3;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #3;1 #7;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #8;2 #3;1 #7;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #3;1 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #8;2 #3;1 #8;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #4;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #8;2 #4;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #4;1 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #8;2 #4;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #5;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #8;2 #5;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #5;1 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #8;2 #5;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #5;1 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #8;2 #5;1 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #8;2 #5;1 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #8;2 #5;1 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #9;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #3;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #9;2 #3;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #4;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #9;2 #4;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #4;1 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #9;2 #4;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #5;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #9;2 #5;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #9;2 #5;1 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #9;2 #5;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #10;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #3;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #10;2 #3;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #10;2 #3;1 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #10;2 #3;1 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #11;2 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #11;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #5;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #12;2 #5;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #5;1 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #12;2 #5;1 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #5;1 #10;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #12;2 #5;1 #10;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #5;1 #15;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #5;2 #12;2 #5;1 #15;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #6;1 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #12;2 #6;1 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #7;1 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #12;2 #7;1 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #7;1 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #12;2 #7;1 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #12;2 #9;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #12;2 #9;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #13;2 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #13;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #13;2 #1;1 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #13;2 #1;1 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #13;2 #1;1 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #13;2 #1;1 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #13;2 #2;1 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #13;2 #2;1 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #13;2 #2;1 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #13;2 #2;1 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #13;2 #4;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #13;2 #4;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #13;2 #4;1 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #13;2 #4;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #16;2 #5;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #16;2 #5;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #17;2 #2;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #17;2 #2;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #17;2 #2;1 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #5;2 #17;2 #2;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #1;1 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #6;2 #3;1 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 3 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #6;2 #3;1 #1;1 #2;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 1 #I ************************************************** #I Starting group: [grp] #6;2 #5;2 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #6;2 #5;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #6;2 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #6;2 #6;2 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #6;2 #2;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #6;2 #6;2 #2;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #6;2 #2;1 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #6;2 #6;2 #2;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #6;2 #3;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #6;2 #6;2 #3;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #1;1 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #1;1 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #5;1 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #5;1 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #7;1 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #7;1 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #7;1 #1;1 #5;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #7;1 #1;1 #5;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #7;1 #1;1 #9;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #7;1 #1;1 #9;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #7;1 #1;1 #13;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #7;1 #1;1 #13;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #7;1 #4;1 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #7;1 #4;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #7;3 #7;1 #4;1 #8;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 5 #I Group [grp] #7;3 #7;1 #4;1 #8;1 is an invalid starting group #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;1 #1;1 #1;1 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #2;1 #1;1 #1;1 #1;1 #1;1 #I Order: 2^7 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I # of immediate descendants of order 2^8 is 3 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #4;2 #1;1 #1;1 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #4;2 #1;1 #1;1 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #4;2 #1;1 #1;1 #1;1 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #4;2 #1;1 #1;1 #1;1 #2;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #1;1 #1;1 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #1;1 #1;1 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #2;1 #1;1 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #2;1 #1;1 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #2;1 #3;1 #3;1 #3;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #2;1 #3;1 #3;1 #3;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #2;1 #3;1 #3;1 #4;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #2;1 #3;1 #3;1 #4;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #5;2 #5;1 #1;1 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 4 #I Group [grp] #5;2 #5;1 #1;1 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #1;1 #1;1 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #6;2 #1;1 #1;1 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #3;1 #1;1 #1;1 #1;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #6;2 #3;1 #1;1 #1;1 #1;1 is an invalid starting group #I ************************************************** #I Starting group: [grp] #6;2 #3;1 #1;1 #1;1 #2;1 #I Order: 2^8 #I Nuclear rank: 1 #I 2-multiplicator rank: 3 #I Group [grp] #6;2 #3;1 #1;1 #1;1 #2;1 is an invalid starting group #I ************************************************** 355 gap> ##Example: "2gp-Rel" . . . based on: examples/2gp gap> ##Construction of largest quotient of class 6 of a 2-group gap> F := FreeGroup("a", "b"); gap> rels := [ "[b, a, a]", "(a * b * a)^4"]; [ "[b, a, a]", "(a * b * a)^4" ] gap> Pq( F : Prime := 2, ClassBound := 6, Relators := rels, > OutputLevel := 1 ); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^2 #I Group: [grp] to lower exponent-2 central class 2 has order 2^5 #I Group: [grp] to lower exponent-2 central class 3 has order 2^8 #I Group: [grp] to lower exponent-2 central class 4 has order 2^11 #I Group: [grp] to lower exponent-2 central class 5 has order 2^15 #I Group: [grp] to lower exponent-2 central class 6 has order 2^19 gap> # Executing interactive variant of example: "2gp-Rel" gap> ##Example: "2gp-Rel" . . . based on: examples/2gp gap> ##Construction of largest quotient of class 6 of a 2-group gap> F := FreeGroup("a", "b"); gap> rels := [ "[b, a, a]", "(a * b * a)^4"]; [ "[b, a, a]", "(a * b * a)^4" ] gap> procId := PqStart( F ); 3 gap> Pq( procId : Prime := 2, ClassBound := 6, Relators := rels, > OutputLevel := 1 ); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^2 #I Group: [grp] to lower exponent-2 central class 2 has order 2^5 #I Group: [grp] to lower exponent-2 central class 3 has order 2^8 #I Group: [grp] to lower exponent-2 central class 4 has order 2^11 #I Group: [grp] to lower exponent-2 central class 5 has order 2^15 #I Group: [grp] to lower exponent-2 central class 6 has order 2^19 gap> PqQuitAll(); gap> ##Example: "2gp-Rel-i" . . . based on: examples/2gp gap> F := FreeGroup("a", "b"); gap> rels := ["[b, a, a]", "(a * b * a)^4"]; [ "[b, a, a]", "(a * b * a)^4" ] gap> procId := PqStart(F : Prime := 2, Relators := rels); 1 gap> PqPcPresentation(procId : ClassBound := 6, > OutputLevel := 1); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^2 #I Group: [grp] to lower exponent-2 central class 2 has order 2^5 #I Group: [grp] to lower exponent-2 central class 3 has order 2^8 #I Group: [grp] to lower exponent-2 central class 4 has order 2^11 #I Group: [grp] to lower exponent-2 central class 5 has order 2^15 #I Group: [grp] to lower exponent-2 central class 6 has order 2^19 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> ##Example: "2gp-SP-1-Rel-i" . . . based on: isom/2gp.exam gap> F := FreeGroup("a", "b"); gap> rels := ["a^4", "b^2*[b, a, b]^-1", "b*(a^2 * b^-1 * a^2)^-1" ]; [ "a^4", "b^2*[b, a, b]^-1", "b*(a^2 * b^-1 * a^2)^-1" ] gap> procId := PqStart(F : Prime := 2, Relators := rels); 2 gap> PqSPComputePcpAndPCover(procId : ClassBound := 1); gap> PqSPStandardPresentation(procId, [ [[1,0], > [1,1]], > > [[0,1], > [1,0]] ] > > : # options > ClassBound := 7, > PcgsAutomorphisms); gap> ##Example: "2gp-SP-2-Rel-i" . . . based on: isom/2gp.com gap> F := FreeGroup("a", "b"); gap> rels := ["a^4", "b^2*[b, a, b]^-1" ]; [ "a^4", "b^2*[b, a, b]^-1" ] gap> procId := PqStart(F : Prime := 2, Relators := rels); 3 gap> PqSPComputePcpAndPCover(procId : ClassBound := 2); gap> PqSPStandardPresentation(procId, [ [[1,0,0,1], > [0,1,0,0]], > > [[1,0,0,0], > [0,1,0,1]], > > [[1,1,1,0], > [0,1,1,1]] ] > > : # options > ClassBound := 10, > PcgsAutomorphisms); gap> PqDisplayPcPresentation(procId); gap> PqQuitAll(); gap> ##Example: "2gp-SP-3-Rel-i" . . . based on: isom/example.com gap> F := FreeGroup("a", "b"); gap> rels := ["a^4", "b^2*[b, a, b]^-1", "b * (a^2 * b^-1 * a^2)^-1" ]; [ "a^4", "b^2*[b, a, b]^-1", "b * (a^2 * b^-1 * a^2)^-1" ] gap> procId := PqStart(F : Prime := 2, Relators := rels); 1 gap> PqSPComputePcpAndPCover(procId : ClassBound := 2); gap> PqSPStandardPresentation(procId, [ [[1,0,0,1], > [0,1,0,0]], > > [[1,0,0,0], > [0,1,0,1]], > > [[1,1,1,0], > [0,1,1,1]] ] > > : # options > ClassBound := 9, > PcgsAutomorphisms); gap> ##Example: "2gp-SP-4-Rel-i" . . . based on: isom/isom_example.com gap> F := FreeGroup("a", "b"); gap> rels := ["a^4", "b^2*[b, a, a]^-1", "b * (a^2 * b^-1 * a^2)^-1" ]; [ "a^4", "b^2*[b, a, a]^-1", "b * (a^2 * b^-1 * a^2)^-1" ] gap> procId := PqStart(F : Prime := 2, Relators := rels); 2 gap> PqSPComputePcpAndPCover(procId : ClassBound := 2); gap> PqSPStandardPresentation(procId, [ [[1,0,0,1], > [0,1,0,0]], > > [[1,0,0,0], > [0,1,0,1]], > > [[1,1,1,0], > [0,1,1,1]] ] > > : # options > ClassBound := 10, > PcgsAutomorphisms); gap> ##Example: "2gp-SP-Rel-i" . . . based on: isom/2gp gap> F := FreeGroup("a", "b"); gap> rels := ["a^4", "b^4", "[b, a, a]" ]; [ "a^4", "b^4", "[b, a, a]" ] gap> procId := PqStart(F : Prime := 2, Relators := rels); 3 gap> PqSPComputePcpAndPCover(procId : ClassBound := 1, OutputLevel := 3); #I Lower exponent-2 central series for [grp] #I Defining relation was 1 #I Defining relation was 2 #I Defining relation was 3 #I Group: [grp] to lower exponent-2 central class 1 has order 2^2 #I Group defining relations: #I 4 1 #I 0 #I 4 2 #I 0 #I 1 [ 2 1 1 ] #I 0 #I Relationship between group defining generators and consistent #I power-commutator presentation generators: #I 1 = .1 #I 1^-1 = .1 #I 2 = .2 #I 2^-1 = .2 #I Values of power-commutator presentation generators #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I The number of new generators introduced for weight 2 is 3 gap> PqSPStandardPresentation(procId, [ [[0,1], > [1,1]], > > [[0,1], > [1,0]] ] > > : # options > ClassBound := 10, > PcgsAutomorphisms); #I Starting group has order 2^2; its automorphism group order is 6 #I Non-standard label is 1 #I Required step size is 3 #I Relative step size is 1 #I Rank of characteristic subgroup is 1 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 #I 2 ---> 0 1 #I Non-standard label is 1 #I Required step size is 3 #I Relative step size is 3 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 1 has orbit representative 1 #I The standard presentation for the class 2 2-quotient is #I Group: [grp] #1;3 to lower exponent-2 central class 2 has order 2^5 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I Subset of automorphism group to check has order bound 96 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 #I 2 ---> 0 1 0 0 0 #I Non-standard label is 3 #I Required step size is 2 #I Relative step size is 1 #I Rank of characteristic subgroup is 2 #I The non-standard subgroup 3 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 0 1 0 0 0 #I 2 ---> 1 1 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 2 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 #I 2 ---> 0 1 0 0 0 #I Non-standard label is 6 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 4 #I The non-standard subgroup 6 has orbit representative 1 #I The standard presentation for the class 3 2-quotient is #I Group: G #1;2 to lower exponent-2 central class 3 has order 2^7 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .6 .7 #I Subset of automorphism group to check has order bound 32 #I The standard automorphism is: #I 1 ---> 1 1 1 0 0 0 0 #I 2 ---> 0 1 1 1 0 0 0 #I Non-standard label is 1 #I Required step size is 1 #I Relative step size is 1 #I Rank of characteristic subgroup is 1 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 #I Non-standard label is 2 #I Required step size is 1 #I Relative step size is 1 #I Rank of characteristic subgroup is 2 #I The non-standard subgroup 2 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 #I 2 ---> 0 1 0 1 0 0 0 #I Non-standard label is 1 #I Required step size is 1 #I Relative step size is 1 #I Rank of characteristic subgroup is 2 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 1 #I Relative step size is 1 #I Rank of characteristic subgroup is 2 #I The non-standard subgroup 1 has orbit representative 1 #I The standard presentation for the class 4 2-quotient is #I Group: G #1;1 to lower exponent-2 central class 4 has order 2^8 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .4, .3 ] = .8 #I [ .5, .1 ] = .6 .7 #I [ .6, .1 ] = .8 #I [ .7, .1 ] = .8 #I Subset of automorphism group to check has order bound 32 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 1 #I Rank of characteristic subgroup is 1 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 2 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 1 has orbit representative 1 #I The standard presentation for the class 5 2-quotient is #I Group: G #1;2 to lower exponent-2 central class 5 has order 2^10 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .6^2 = .9 #I .7^2 = .9 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .4, .3 ] = .8 .9 #I [ .5, .1 ] = .6 .7 #I [ .5, .4 ] = .9 .10 #I [ .6, .1 ] = .8 #I [ .6, .2 ] = .10 #I [ .6, .3 ] = .10 #I [ .6, .4 ] = .9 #I [ .7, .1 ] = .8 .9 .10 #I [ .7, .2 ] = .10 #I [ .7, .3 ] = .10 #I [ .7, .4 ] = .9 #I [ .8, .1 ] = .9 #I [ .8, .2 ] = .10 #I Subset of automorphism group to check has order bound 256 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 1 #I Rank of characteristic subgroup is 1 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 2 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 #I Non-standard label is 4 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 4 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 1 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 1 has orbit representative 1 #I The standard presentation for the class 6 2-quotient is #I Group: G #1;2 to lower exponent-2 central class 6 has order 2^12 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .6^2 = .9 .12 #I .7^2 = .9 .12 #I .8^2 = .11 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .4, .3 ] = .8 .9 .11 .12 #I [ .5, .1 ] = .6 .7 #I [ .5, .4 ] = .9 .10 .12 #I [ .6, .1 ] = .8 #I [ .6, .2 ] = .10 #I [ .6, .3 ] = .10 #I [ .6, .4 ] = .9 .11 #I [ .7, .1 ] = .8 .9 .10 .11 .12 #I [ .7, .2 ] = .10 #I [ .7, .3 ] = .10 #I [ .7, .4 ] = .9 .12 #I [ .8, .1 ] = .9 #I [ .8, .2 ] = .10 #I [ .8, .3 ] = .12 #I [ .8, .4 ] = .11 #I [ .9, .1 ] = .11 #I [ .10, .1 ] = .12 #I Subset of automorphism group to check has order bound 256 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 1 #I Rank of characteristic subgroup is 1 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 2 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 1 has orbit representative 1 #I The standard presentation for the class 7 2-quotient is #I Group: G #1;2 to lower exponent-2 central class 7 has order 2^14 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .6^2 = .9 .12 .14 #I .7^2 = .9 .12 #I .8^2 = .11 .13 #I .9^2 = .13 #I .10^2 = .13 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .4, .3 ] = .8 .9 .11 .12 .14 #I [ .5, .1 ] = .6 .7 #I [ .5, .4 ] = .9 .10 .12 .13 .14 #I [ .6, .1 ] = .8 #I [ .6, .2 ] = .10 .14 #I [ .6, .3 ] = .10 .13 #I [ .6, .4 ] = .9 .11 .13 #I [ .6, .5 ] = .13 .14 #I [ .7, .1 ] = .8 .9 .10 .11 .12 .14 #I [ .7, .2 ] = .10 .13 .14 #I [ .7, .3 ] = .10 #I [ .7, .4 ] = .9 .12 .13 #I [ .7, .5 ] = .13 .14 #I [ .7, .6 ] = .13 .14 #I [ .8, .1 ] = .9 #I [ .8, .2 ] = .10 #I [ .8, .3 ] = .12 #I [ .8, .4 ] = .11 .13 #I [ .8, .5 ] = .13 .14 #I [ .9, .1 ] = .11 #I [ .9, .2 ] = .13 .14 #I [ .9, .3 ] = .13 #I [ .9, .4 ] = .13 #I [ .10, .1 ] = .12 #I [ .10, .2 ] = .14 #I [ .10, .3 ] = .14 #I [ .10, .4 ] = .13 #I [ .11, .1 ] = .13 #I [ .11, .2 ] = .13 #I [ .12, .1 ] = .13 #I [ .12, .2 ] = .14 #I Subset of automorphism group to check has order bound 512 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 1 #I Rank of characteristic subgroup is 1 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 2 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 4 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 4 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 1 1 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 2 #I Relative step size is 2 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 1 has orbit representative 1 #I The standard presentation for the class 8 2-quotient is #I Group: G #1;2 to lower exponent-2 central class 8 has order 2^16 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .6^2 = .9 .12 .14 .15 .16 #I .7^2 = .9 .12 .15 .16 #I .8^2 = .11 .13 #I .9^2 = .13 .15 #I .10^2 = .13 #I .11^2 = .15 #I .12^2 = .15 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .4, .3 ] = .8 .9 .11 .12 .14 .16 #I [ .5, .1 ] = .6 .7 #I [ .5, .4 ] = .9 .10 .12 .13 .14 .15 .16 #I [ .6, .1 ] = .8 #I [ .6, .2 ] = .10 .14 #I [ .6, .3 ] = .10 .13 #I [ .6, .4 ] = .9 .11 .13 #I [ .6, .5 ] = .13 .14 #I [ .7, .1 ] = .8 .9 .10 .11 .12 .14 .16 #I [ .7, .2 ] = .10 .13 .14 #I [ .7, .3 ] = .10 #I [ .7, .4 ] = .9 .12 .13 .15 .16 #I [ .7, .5 ] = .13 .14 #I [ .7, .6 ] = .13 .14 #I [ .8, .1 ] = .9 #I [ .8, .2 ] = .10 #I [ .8, .3 ] = .12 .16 #I [ .8, .4 ] = .11 .13 .15 #I [ .8, .5 ] = .13 .14 #I [ .8, .6 ] = .15 .16 #I [ .9, .1 ] = .11 #I [ .9, .2 ] = .13 .14 #I [ .9, .3 ] = .13 .16 #I [ .9, .4 ] = .13 .15 #I [ .10, .1 ] = .12 #I [ .10, .2 ] = .14 #I [ .10, .3 ] = .14 #I [ .10, .4 ] = .13 #I [ .11, .1 ] = .13 #I [ .11, .2 ] = .13 #I [ .11, .3 ] = .15 #I [ .11, .4 ] = .15 #I [ .12, .1 ] = .13 .15 #I [ .12, .2 ] = .14 #I [ .12, .3 ] = .16 #I [ .12, .4 ] = .15 #I [ .13, .1 ] = .15 #I [ .14, .1 ] = .16 #I Subset of automorphism group to check has order bound 512 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 3 #I Relative step size is 1 #I Rank of characteristic subgroup is 1 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 3 #I Relative step size is 2 #I Rank of characteristic subgroup is 2 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 3 #I Relative step size is 3 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 3 #I Relative step size is 3 #I Rank of characteristic subgroup is 4 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 3 #I Relative step size is 3 #I Rank of characteristic subgroup is 4 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 3 #I Relative step size is 3 #I Rank of characteristic subgroup is 4 #I The non-standard subgroup 1 has orbit representative 1 #I The standard presentation for the class 9 2-quotient is #I Group: G #1;3 to lower exponent-2 central class 9 has order 2^19 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .6^2 = .9 .12 .14 .15 .16 #I .7^2 = .9 .12 .15 .16 #I .8^2 = .11 .13 .17 .18 #I .9^2 = .13 .15 #I .10^2 = .13 .19 #I .11^2 = .15 .17 #I .12^2 = .15 #I .13^2 = .17 #I .14^2 = .17 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .4, .3 ] = .8 .9 .11 .12 .14 .16 .18 #I [ .5, .1 ] = .6 .7 #I [ .5, .4 ] = .9 .10 .12 .13 .14 .15 .16 .18 .19 #I [ .6, .1 ] = .8 #I [ .6, .2 ] = .10 .14 .19 #I [ .6, .3 ] = .10 .13 #I [ .6, .4 ] = .9 .11 .13 .17 .18 #I [ .6, .5 ] = .13 .14 #I [ .7, .1 ] = .8 .9 .10 .11 .12 .14 .16 .17 .18 .19 #I [ .7, .2 ] = .10 .13 .14 .17 .18 #I [ .7, .3 ] = .10 .18 .19 #I [ .7, .4 ] = .9 .12 .13 .15 .16 .17 #I [ .7, .5 ] = .13 .14 #I [ .7, .6 ] = .13 .14 #I [ .8, .1 ] = .9 #I [ .8, .2 ] = .10 #I [ .8, .3 ] = .12 .16 #I [ .8, .4 ] = .11 .13 .15 #I [ .8, .5 ] = .13 .14 .17 .19 #I [ .8, .6 ] = .15 .16 .18 .19 #I [ .8, .7 ] = .17 .18 #I [ .9, .1 ] = .11 #I [ .9, .2 ] = .13 .14 .17 .18 #I [ .9, .3 ] = .13 .16 .18 #I [ .9, .4 ] = .13 .15 .17 #I [ .9, .5 ] = .17 .19 #I [ .9, .6 ] = .17 .18 #I [ .9, .7 ] = .17 .18 #I [ .10, .1 ] = .12 #I [ .10, .2 ] = .14 .17 #I [ .10, .3 ] = .14 .19 #I [ .10, .4 ] = .13 .18 .19 #I [ .10, .5 ] = .17 .19 #I [ .10, .6 ] = .18 .19 #I [ .10, .7 ] = .17 .18 #I [ .10, .8 ] = .17 .18 #I [ .11, .1 ] = .13 #I [ .11, .2 ] = .13 .18 .19 #I [ .11, .3 ] = .15 .17 #I [ .11, .4 ] = .15 .17 #I [ .12, .1 ] = .13 .15 .18 .19 #I [ .12, .2 ] = .14 #I [ .12, .3 ] = .16 .17 .19 #I [ .12, .4 ] = .15 #I [ .12, .5 ] = .17 .19 #I [ .12, .6 ] = .17 .18 #I [ .12, .7 ] = .17 .18 #I [ .13, .1 ] = .15 #I [ .13, .2 ] = .17 #I [ .13, .3 ] = .17 #I [ .13, .4 ] = .17 #I [ .14, .1 ] = .16 #I [ .14, .2 ] = .19 #I [ .14, .3 ] = .19 #I [ .14, .4 ] = .18 #I [ .15, .1 ] = .17 #I [ .15, .2 ] = .17 #I [ .16, .1 ] = .18 #I [ .16, .2 ] = .19 #I Subset of automorphism group to check has order bound 8192 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 3 #I Relative step size is 1 #I Rank of characteristic subgroup is 1 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 3 #I Relative step size is 2 #I Rank of characteristic subgroup is 2 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 3 #I Relative step size is 3 #I Rank of characteristic subgroup is 3 #I The non-standard subgroup 1 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 5 #I Required step size is 3 #I Relative step size is 3 #I Rank of characteristic subgroup is 4 #I The non-standard subgroup 5 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Non-standard label is 4 #I Required step size is 3 #I Relative step size is 3 #I Rank of characteristic subgroup is 4 #I The non-standard subgroup 4 has orbit representative 1 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I Non-standard label is 1 #I Required step size is 3 #I Relative step size is 3 #I Rank of characteristic subgroup is 4 #I The non-standard subgroup 1 has orbit representative 1 #I The standard presentation for the class 10 2-quotient is #I Group: G #1;3 to lower exponent-2 central class 10 has order 2^22 #I Non-trivial powers: #I .1^2 = .4 #I .2^2 = .5 #I .3^2 = .6 .7 #I .6^2 = .9 .12 .14 .15 .16 .20 .21 #I .7^2 = .9 .12 .15 .16 .20 .21 #I .8^2 = .11 .13 .17 .18 #I .9^2 = .13 .15 #I .10^2 = .13 .19 .20 .22 #I .11^2 = .15 .17 #I .12^2 = .15 .22 #I .13^2 = .17 .20 #I .14^2 = .17 .20 #I .15^2 = .20 #I .16^2 = .20 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .4, .3 ] = .8 .9 .11 .12 .14 .16 .18 .21 .22 #I [ .5, .1 ] = .6 .7 #I [ .5, .4 ] = .9 .10 .12 .13 .14 .15 .16 .18 .19 .20 .21 .22 #I [ .6, .1 ] = .8 #I [ .6, .2 ] = .10 .14 .19 #I [ .6, .3 ] = .10 .13 .20 .22 #I [ .6, .4 ] = .9 .11 .13 .17 .18 #I [ .6, .5 ] = .13 .14 .20 .22 #I [ .7, .1 ] = .8 .9 .10 .11 .12 .14 .16 .17 .18 .19 .20 .21 .22 #I [ .7, .2 ] = .10 .13 .14 .17 .18 .20 .22 #I [ .7, .3 ] = .10 .18 .19 .20 #I [ .7, .4 ] = .9 .12 .13 .15 .16 .17 .20 .21 .22 #I [ .7, .5 ] = .13 .14 .20 .22 #I [ .7, .6 ] = .13 .14 .20 .22 #I [ .8, .1 ] = .9 #I [ .8, .2 ] = .10 #I [ .8, .3 ] = .12 .16 .22 #I [ .8, .4 ] = .11 .13 .15 #I [ .8, .5 ] = .13 .14 .17 .19 .22 #I [ .8, .6 ] = .15 .16 .18 .19 .20 #I [ .8, .7 ] = .17 .18 #I [ .9, .1 ] = .11 #I [ .9, .2 ] = .13 .14 .17 .18 .20 .22 #I [ .9, .3 ] = .13 .16 .18 .20 #I [ .9, .4 ] = .13 .15 .17 #I [ .9, .5 ] = .17 .19 .20 #I [ .9, .6 ] = .17 .18 .20 .22 #I [ .9, .7 ] = .17 .18 #I [ .9, .8 ] = .20 .21 #I [ .10, .1 ] = .12 #I [ .10, .2 ] = .14 .17 .20 #I [ .10, .3 ] = .14 .19 #I [ .10, .4 ] = .13 .18 .19 .22 #I [ .10, .5 ] = .17 .19 .20 #I [ .10, .6 ] = .18 .19 .20 #I [ .10, .7 ] = .17 .18 #I [ .10, .8 ] = .17 .18 #I [ .11, .1 ] = .13 #I [ .11, .2 ] = .13 .18 .19 .22 #I [ .11, .3 ] = .15 .17 .20 .21 .22 #I [ .11, .4 ] = .15 .17 .20 #I [ .12, .1 ] = .13 .15 .18 .19 .20 #I [ .12, .2 ] = .14 #I [ .12, .3 ] = .16 .17 .19 #I [ .12, .4 ] = .15 .21 .22 #I [ .12, .5 ] = .17 .19 .20 #I [ .12, .6 ] = .17 .18 .20 .22 #I [ .12, .7 ] = .17 .18 #I [ .12, .8 ] = .20 .21 #I [ .13, .1 ] = .15 #I [ .13, .2 ] = .17 .20 #I [ .13, .3 ] = .17 .20 #I [ .13, .4 ] = .17 .20 #I [ .14, .1 ] = .16 #I [ .14, .2 ] = .19 #I [ .14, .3 ] = .19 #I [ .14, .4 ] = .18 .20 #I [ .15, .1 ] = .17 #I [ .15, .2 ] = .17 .20 #I [ .15, .3 ] = .20 #I [ .15, .4 ] = .20 #I [ .16, .1 ] = .18 #I [ .16, .2 ] = .19 #I [ .16, .3 ] = .22 #I [ .16, .4 ] = .21 #I [ .17, .1 ] = .20 #I [ .18, .1 ] = .21 #I [ .19, .1 ] = .22 #I Subset of automorphism group to check has order bound 8192 #I The standard automorphism is: #I 1 ---> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 0 #I 2 ---> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #I 0 gap> PqQuitAll(); gap> ##Example: "2gp-SP-d-Rel-i" . . . based on: isom/red1.com gap> F := FreeGroup("a", "b", "c", "d"); gap> rels := ["b^4", "b^2 * [b, a, a]^-1", "d^16", "a^16 * (c * d)^-1", > "b^8 * (d * c^4)^-1", "b * (a^2 * b^-1 * a^2)^-1"]; [ "b^4", "b^2 * [b, a, a]^-1", "d^16", "a^16 * (c * d)^-1", "b^8 * (d * c^4)^-1", "b * (a^2 * b^-1 * a^2)^-1" ] gap> procId := PqStart(F : Prime := 2, Relators := rels); 1 gap> PqSPComputePcpAndPCover(procId : ClassBound := 1); gap> PqSPStandardPresentation(procId, [ [[0,1], > [1,1]], > > [[0,1], > [1,0]] ] > > : # options > ClassBound := 10, > PcgsAutomorphisms); gap> ##Example: "2gp-a-Rel-i" . . . based on: examples/keyword_2gp gap> F := FreeGroup(3, "x"); gap> rels := ["x1^x2 * x3", "[x2, x1, x1]", > "[x2 * [x2, x1] * x1^2, x1 * x2 ]"]; [ "x1^x2 * x3", "[x2, x1, x1]", "[x2 * [x2, x1] * x1^2, x1 * x2 ]" ] gap> procId := PqStart(F : Prime := 2, Relators := rels); 2 gap> PqPcPresentation(procId : ClassBound := 3, > OutputLevel := 1); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^2 #I Group: [grp] to lower exponent-2 central class 2 has order 2^4 #I Group: [grp] to lower exponent-2 central class 3 has order 2^6 gap> ##Example: "3gp-PG-4-i" . . . based on: examples/pga_4-3.com gap> ##All descendants of C3 x C3 x C3 x C3 gap> F := FreeGroup("a", "b", "c", "d"); gap> procId := PqStart(F : Prime := 3); 3 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-3 central series for [grp] #I Group: [grp] to lower exponent-3 central class 1 has order 3^4 gap> PqComputePCover(procId); #I Group: [grp] to lower exponent-3 central class 2 has order 3^14 gap> PqPGSupplyAutomorphisms(procId, [ [[2,0,0,0], > [0,1,0,0], > [0,0,1,0], > [0,0,0,1]], > > [[2,0,0,1], > [2,0,0,0], > [0,2,0,0], > [0,0,2,0]] ]); gap> PqPGConstructDescendants(procId : ClassBound := 2, > OrderBound := 5); #I ************************************************** #I Starting group: [grp] #I Order: 3^4 #I Nuclear rank: 10 #I 3-multiplicator rank: 10 #I # of immediate descendants of order 3^5 is 6 #I # of capable immediate descendants is 2 #I ************************************************** 6 gap> PqQuitAll(); gap> ##Example: "3gp-PG-i" . . . based on: examples/pga_3gp gap> ##All groups with lower exponent-3 series of shape 2-2-3-1 gap> F := FreeGroup("a", "b"); gap> procId := PqStart(F : Prime := 3); 1 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-3 central series for [grp] #I Group: [grp] to lower exponent-3 central class 1 has order 3^2 gap> PqComputePCover(procId); #I Group: [grp] to lower exponent-3 central class 2 has order 3^5 gap> PqPGSupplyAutomorphisms(procId, [ [[2,0], > [0,2]], > > [[0,2], > [1,0]], > > [[1,2], > [2,2]], > > [[1,0], > [2,1]], > > [[2,0], > [0,1]] ]); gap> PqPGConstructDescendants(procId : ClassBound := 4, > CapableDescendants, > StepSize := [2, 3, 1], > PcgsAutomorphisms, > BasicAlgorithm); #I ************************************************** #I Starting group: [grp] #I Order: 3^2 #I Nuclear rank: 3 #I 3-multiplicator rank: 3 #I # of immediate descendants of order 3^4 is 3 #I # of capable immediate descendants is 3 #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;2 #I Order: 3^4 #I Nuclear rank: 2 #I 3-multiplicator rank: 3 #I Group [grp] #1;2 is an invalid starting group #I ************************************************** #I Starting group: [grp] #2;2 #I Order: 3^4 #I Nuclear rank: 3 #I 3-multiplicator rank: 4 #I # of immediate descendants of order 3^7 is 4 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #3;2 #I Order: 3^4 #I Nuclear rank: 2 #I 3-multiplicator rank: 3 #I Group [grp] #3;2 is an invalid starting group #I ************************************************** #I ************************************************** #I Starting group: [grp] #2;2 #1;3 #I Order: 3^7 #I Nuclear rank: 4 #I 3-multiplicator rank: 5 #I # of immediate descendants of order 3^8 is 16 #I # of capable immediate descendants is 11 #I ************************************************** #I Starting group: [grp] #2;2 #2;3 #I Order: 3^7 #I Nuclear rank: 3 #I 3-multiplicator rank: 4 #I # of immediate descendants of order 3^8 is 13 #I # of capable immediate descendants is 9 #I ************************************************** #I Starting group: [grp] #2;2 #3;3 #I Order: 3^7 #I Nuclear rank: 3 #I 3-multiplicator rank: 4 #I # of immediate descendants of order 3^8 is 13 #I # of capable immediate descendants is 9 #I ************************************************** #I Starting group: [grp] #2;2 #4;3 #I Order: 3^7 #I Nuclear rank: 3 #I 3-multiplicator rank: 4 #I # of immediate descendants of order 3^8 is 7 #I # of capable immediate descendants is 5 #I ************************************************** 41 gap> ##Example: "3gp-PG-x-i" . . . based on example from Werner gap> ##A `by hand' descendants example gap> F := FreeGroup("a", "b"); gap> procId := PqStart(F : Prime := 3); 2 gap> Pq(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-3 central series for [grp] #I Group: [grp] to lower exponent-3 central class 1 has order 3^2 gap> PqPCover(procId); #I Group: [grp] to lower exponent-3 central class 2 has order 3^5 gap> PqPGSupplyAutomorphisms(procId, [ [[1,1], > [0,1]], > > [[0,1], > [1,0]] ]); gap> PqPGExtendAutomorphisms(procId); #I Automorphism 1: #I Generator 1 --> 1 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 #I Generator 3 --> 0 0 1 0 0 #I Generator 4 --> 0 0 0 1 1 #I Generator 5 --> 0 0 0 0 1 #I Automorphism 2: #I Generator 1 --> 0 1 0 0 0 #I Generator 2 --> 1 0 0 0 0 #I Generator 3 --> 0 0 2 0 0 #I Generator 4 --> 0 0 0 0 1 #I Generator 5 --> 0 0 0 1 0 gap> PqPGConstructDescendants(procId : ClassBound := 3, > BasicAlgorithm); #I ************************************************** #I Starting group: [grp] #I Order: 3^2 #I Nuclear rank: 3 #I 3-multiplicator rank: 3 #I # of immediate descendants of order 3^3 is 3 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 3^4 is 3 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 3^5 is 1 #I # of capable immediate descendants is 1 #I ************************************************** #I ************************************************** #I Starting group: [grp] #1;1 #I Order: 3^3 #I Nuclear rank: 1 #I 3-multiplicator rank: 3 #I # of immediate descendants of order 3^4 is 2 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #2;1 #I Order: 3^3 #I Nuclear rank: 2 #I 3-multiplicator rank: 4 #I # of immediate descendants of order 3^4 is 4 #I # of capable immediate descendants is 1 #I # of immediate descendants of order 3^5 is 7 #I # of capable immediate descendants is 5 #I ************************************************** #I Starting group: [grp] #4;2 #I Order: 3^4 #I Nuclear rank: 2 #I 3-multiplicator rank: 3 #I # of immediate descendants of order 3^5 is 2 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 3^6 is 2 #I # of capable immediate descendants is 2 #I ************************************************** #I Starting group: [grp] #5;2 #I Order: 3^4 #I Nuclear rank: 3 #I 3-multiplicator rank: 4 #I # of immediate descendants of order 3^5 is 9 #I # of capable immediate descendants is 5 #I # of immediate descendants of order 3^6 is 18 #I # of capable immediate descendants is 16 #I # of immediate descendants of order 3^7 is 4 #I # of capable immediate descendants is 4 #I ************************************************** #I Starting group: [grp] #6;2 #I Order: 3^4 #I Nuclear rank: 2 #I 3-multiplicator rank: 3 #I # of immediate descendants of order 3^5 is 2 #I # of capable immediate descendants is 1 #I # of immediate descendants of order 3^6 is 1 #I # of capable immediate descendants is 1 #I ************************************************** #I Starting group: [grp] #7;3 #I Order: 3^5 #I Nuclear rank: 5 #I 3-multiplicator rank: 5 #I # of immediate descendants of order 3^6 is 11 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 3^7 is 58 #I # of capable immediate descendants is 32 #I # of immediate descendants of order 3^8 is 58 #I # of capable immediate descendants is 58 #I # of immediate descendants of order 3^9 is 11 #I # of capable immediate descendants is 11 #I # of immediate descendants of order 3^10 is 1 #I # of capable immediate descendants is 1 #I ************************************************** 148 gap> ##Example: "3gp-PG-x-i" . . . based on example from Werner gap> ##Iterated descendants example gap> F := FreeGroup("a", "b"); gap> procId := PqStart(F : Prime := 3); 3 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-3 central series for [grp] #I Group: [grp] to lower exponent-3 central class 1 has order 3^2 gap> PqComputePCover(procId); #I Group: [grp] to lower exponent-3 central class 2 has order 3^5 gap> PqPGSupplyAutomorphisms(procId, [ [[1,1], > [0,1]], > > [[0,1], > [1,0]] ]); gap> PqPGExtendAutomorphisms(procId); #I Automorphism 1: #I Generator 1 --> 1 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 #I Generator 3 --> 0 0 1 0 0 #I Generator 4 --> 0 0 0 1 1 #I Generator 5 --> 0 0 0 0 1 #I Automorphism 2: #I Generator 1 --> 0 1 0 0 0 #I Generator 2 --> 1 0 0 0 0 #I Generator 3 --> 0 0 2 0 0 #I Generator 4 --> 0 0 0 0 1 #I Generator 5 --> 0 0 0 1 0 gap> PqPGConstructDescendants(procId : ClassBound := 2, > CapableDescendants, > BasicAlgorithm); #I ************************************************** #I Starting group: [grp] #I Order: 3^2 #I Nuclear rank: 3 #I 3-multiplicator rank: 3 #I # of immediate descendants of order 3^3 is 3 #I # of capable immediate descendants is 2 #I # of immediate descendants of order 3^4 is 3 #I # of capable immediate descendants is 3 #I # of immediate descendants of order 3^5 is 1 #I # of capable immediate descendants is 1 #I ************************************************** 6 gap> PqPGSetDescendantToPcp(procId, 2, 5); gap> PqPGExtendAutomorphisms(procId); #I Automorphism 1: #I Generator 1 --> 1 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 1 0 0 #I Generator 4 --> 0 0 0 1 0 1 0 #I Generator 5 --> 0 0 0 0 1 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 #I Generator 7 --> 0 0 0 0 2 0 1 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 1 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 #I Generator 7 --> 0 0 0 0 0 1 1 #I Automorphism 3: #I Generator 1 --> 1 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 #I Generator 4 --> 0 0 1 1 2 0 1 #I Generator 5 --> 0 0 0 0 1 0 0 #I Generator 6 --> 0 0 0 0 1 1 0 #I Generator 7 --> 0 0 0 0 0 0 1 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 #I Generator 2 --> 0 2 0 0 0 0 0 #I Generator 3 --> 0 0 2 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 #I Generator 5 --> 0 0 0 0 2 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 #I Generator 7 --> 0 0 0 0 0 0 2 gap> PqPGConstructDescendants(procId : ClassBound := 3, > CapableDescendants, > BasicAlgorithm); #I ************************************************** #I Starting group: [grp] #6;2 #I Order: 3^4 #I Nuclear rank: 2 #I 3-multiplicator rank: 3 #I # of immediate descendants of order 3^5 is 2 #I # of capable immediate descendants is 1 #I # of immediate descendants of order 3^6 is 1 #I # of capable immediate descendants is 1 #I ************************************************** 2 gap> PqPGSetDescendantToPcp(procId, 3, 2); gap> PqPGExtendAutomorphisms(procId); #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 1 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 1 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 #I Generator 9 --> 0 0 0 0 0 0 2 0 1 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 1 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 #I Generator 9 --> 0 0 0 0 0 0 0 1 1 #I Automorphism 3: #I Generator 1 --> 1 1 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 #I Generator 4 --> 0 0 1 1 2 0 2 0 1 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 #I Generator 6 --> 0 0 0 0 1 1 2 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 #I Generator 8 --> 0 0 0 0 0 0 1 1 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 2 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 2 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 #I Generator 5 --> 0 0 0 0 2 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 2 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 2 gap> PqPGConstructDescendants(procId : ClassBound := 4, > CapableDescendants, > BasicAlgorithm); #I ************************************************** #I Starting group: [grp] #6;2 #3;2 #I Order: 3^6 #I Nuclear rank: 2 #I 3-multiplicator rank: 3 #I # of immediate descendants of order 3^7 is 2 #I # of capable immediate descendants is 1 #I # of immediate descendants of order 3^8 is 1 #I # of capable immediate descendants is 1 #I ************************************************** 2 gap> PqPGSetDescendantToPcp(procId, 4, 2); gap> PqPGExtendAutomorphisms(procId); #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 1 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 1 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 2 0 1 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 1 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 1 1 #I Automorphism 3: #I Generator 1 --> 1 1 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 1 1 2 0 2 0 0 0 1 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 1 1 2 0 1 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 1 1 2 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 1 1 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 2 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 2 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 0 0 #I Generator 5 --> 0 0 0 0 2 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 2 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 2 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 2 gap> PqPGConstructDescendants(procId : ClassBound := 5, > CapableDescendants, > BasicAlgorithm); #I ************************************************** #I Starting group: [grp] #6;2 #3;2 #3;2 #I Order: 3^8 #I Nuclear rank: 2 #I 3-multiplicator rank: 3 #I # of immediate descendants of order 3^9 is 2 #I # of capable immediate descendants is 1 #I # of immediate descendants of order 3^10 is 1 #I # of capable immediate descendants is 1 #I ************************************************** 2 gap> PqPGSetDescendantToPcp(procId, 5, 1); gap> PqPGExtendAutomorphisms(procId); #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 1 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 1 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 0 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 1 0 1 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 1 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 1 0 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 1 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 2 1 #I Automorphism 4: #I Generator 1 --> 1 1 0 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 1 1 2 0 2 0 0 0 0 1 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 1 1 2 0 0 0 1 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 1 1 0 0 2 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 1 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 2 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 2 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 0 0 0 #I Generator 5 --> 0 0 0 0 2 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 2 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 2 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 2 gap> PqPGConstructDescendants(procId : ClassBound := 6, > CapableDescendants, > BasicAlgorithm); #I ************************************************** #I Starting group: [grp] #6;2 #3;2 #3;2 #1;1 #I Order: 3^9 #I Nuclear rank: 1 #I 3-multiplicator rank: 3 #I # of immediate descendants of order 3^10 is 2 #I # of capable immediate descendants is 1 #I ************************************************** 1 gap> PqPGSetDescendantToPcp(procId, 6, 1); gap> PqPGExtendAutomorphisms(procId); #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 0 1 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 13 --> 0 0 0 0 0 0 0 0 0 0 0 0 1 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 1 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 0 0 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 13 --> 0 0 0 0 0 0 0 0 0 0 1 0 1 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 1 0 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 1 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 13 --> 0 0 0 0 0 0 0 0 0 0 0 0 1 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 1 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 1 0 0 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 1 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 1 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 13 --> 0 0 0 0 0 0 0 0 0 0 0 2 1 #I Automorphism 5: #I Generator 1 --> 1 1 0 0 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 1 1 2 0 2 0 0 0 0 0 1 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 1 1 2 0 0 0 0 1 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 1 1 0 0 0 2 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 1 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 13 --> 0 0 0 0 0 0 0 0 0 0 0 0 1 #I Automorphism 6: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 2 0 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 2 0 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 0 0 0 0 #I Generator 5 --> 0 0 0 0 2 0 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 2 0 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 2 0 #I Generator 13 --> 0 0 0 0 0 0 0 0 0 0 0 0 2 gap> PqPGConstructDescendants(procId : ClassBound := 7, > CapableDescendants, > BasicAlgorithm); #I ************************************************** #I Starting group: [grp] #6;2 #3;2 #3;2 #1;1 #1;1 #I Order: 3^10 #I Nuclear rank: 1 #I 3-multiplicator rank: 3 #I # of immediate descendants of order 3^11 is 2 #I # of capable immediate descendants is 1 #I ************************************************** 1 gap> PqPGSetDescendantToPcp(procId, 7, 1); gap> PqPGExtendAutomorphisms(procId); #I Automorphism 1: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 0 0 1 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 0 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 13 --> 0 0 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 14 --> 0 0 0 0 0 0 0 0 0 0 0 0 0 1 #I Automorphism 2: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 0 0 0 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 0 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 13 --> 0 0 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 14 --> 0 0 0 0 0 0 0 0 0 0 0 1 0 1 #I Automorphism 3: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 0 1 0 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 0 1 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 13 --> 0 0 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 14 --> 0 0 0 0 0 0 0 0 0 0 0 0 0 1 #I Automorphism 4: #I Generator 1 --> 1 0 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 1 0 0 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 1 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 1 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 13 --> 0 0 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 14 --> 0 0 0 0 0 0 0 0 0 0 0 0 0 1 #I Automorphism 5: #I Generator 1 --> 1 0 0 0 0 0 0 1 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 0 1 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 1 0 0 0 0 0 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 1 0 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 1 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 1 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 13 --> 0 0 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 14 --> 0 0 0 0 0 0 0 0 0 0 0 0 2 1 #I Automorphism 6: #I Generator 1 --> 1 1 0 0 0 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 1 0 0 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 1 1 2 0 2 0 0 0 0 0 0 1 #I Generator 5 --> 0 0 0 0 1 0 0 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 1 1 2 0 0 0 0 0 1 0 #I Generator 7 --> 0 0 0 0 0 0 1 0 0 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 1 1 0 0 0 0 2 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 1 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 13 --> 0 0 0 0 0 0 0 0 0 0 0 0 1 0 #I Generator 14 --> 0 0 0 0 0 0 0 0 0 0 0 0 0 1 #I Automorphism 7: #I Generator 1 --> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 #I Generator 2 --> 0 2 0 0 0 0 0 0 0 0 0 0 0 0 #I Generator 3 --> 0 0 2 0 0 0 0 0 0 0 0 0 0 0 #I Generator 4 --> 0 0 0 1 0 0 0 0 0 0 0 0 0 0 #I Generator 5 --> 0 0 0 0 2 0 0 0 0 0 0 0 0 0 #I Generator 6 --> 0 0 0 0 0 1 0 0 0 0 0 0 0 0 #I Generator 7 --> 0 0 0 0 0 0 2 0 0 0 0 0 0 0 #I Generator 8 --> 0 0 0 0 0 0 0 1 0 0 0 0 0 0 #I Generator 9 --> 0 0 0 0 0 0 0 0 1 0 0 0 0 0 #I Generator 10 --> 0 0 0 0 0 0 0 0 0 1 0 0 0 0 #I Generator 11 --> 0 0 0 0 0 0 0 0 0 0 1 0 0 0 #I Generator 12 --> 0 0 0 0 0 0 0 0 0 0 0 1 0 0 #I Generator 13 --> 0 0 0 0 0 0 0 0 0 0 0 0 2 0 #I Generator 14 --> 0 0 0 0 0 0 0 0 0 0 0 0 0 2 gap> PqPGConstructDescendants(procId : ClassBound := 8, > CapableDescendants, > BasicAlgorithm); #I ************************************************** #I Starting group: [grp] #6;2 #3;2 #3;2 #1;1 #1;1 #1;1 #I Order: 3^11 #I Nuclear rank: 1 #I 3-multiplicator rank: 3 #I # of immediate descendants of order 3^12 is 2 #I # of capable immediate descendants is 1 #I ************************************************** 1 gap> PqQuitAll(); gap> ##Example: "3gp-Rel-i" . . . based on: examples/3gp gap> F := FreeGroup("a", "b", "c", "d"); gap> rels := ["(b * c^-1 * d)^-3", "(c * d^-1)^3", > "[b, a] * c", "[c, a]", "[c, b] * d"]; [ "(b * c^-1 * d)^-3", "(c * d^-1)^3", "[b, a] * c", "[c, a]", "[c, b] * d" ] gap> procId := PqStart(F : Prime := 3, Relators := rels); 1 gap> PqPcPresentation(procId : ClassBound := 19, > OutputLevel := 1); #I Lower exponent-3 central series for [grp] #I Group: [grp] to lower exponent-3 central class 1 has order 3^2 #I Group: [grp] to lower exponent-3 central class 2 has order 3^4 #I Group: [grp] to lower exponent-3 central class 3 has order 3^6 #I Group: [grp] to lower exponent-3 central class 4 has order 3^7 #I Group: [grp] to lower exponent-3 central class 5 has order 3^8 #I Group: [grp] to lower exponent-3 central class 6 has order 3^9 #I Group: [grp] to lower exponent-3 central class 7 has order 3^10 #I Group: [grp] to lower exponent-3 central class 8 has order 3^11 #I Group: [grp] to lower exponent-3 central class 9 has order 3^12 #I Group: [grp] to lower exponent-3 central class 10 has order 3^13 #I Group: [grp] to lower exponent-3 central class 11 has order 3^14 #I Group: [grp] to lower exponent-3 central class 12 has order 3^15 #I Group: [grp] to lower exponent-3 central class 13 has order 3^16 #I Group: [grp] to lower exponent-3 central class 14 has order 3^17 #I Group: [grp] to lower exponent-3 central class 15 has order 3^18 #I Group: [grp] to lower exponent-3 central class 16 has order 3^19 #I Group: [grp] to lower exponent-3 central class 17 has order 3^20 #I Group: [grp] to lower exponent-3 central class 18 has order 3^21 #I Group: [grp] to lower exponent-3 central class 19 has order 3^22 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> ##Example: "3gp-SP-1-Rel-i" . . . based on: isom/3gp.ex1 gap> F := FreeGroup("x", "y"); gap> rels := ["(x * y * x)^3", "[x, y, y]"]; [ "(x * y * x)^3", "[x, y, y]" ] gap> procId := PqStart(F : Prime := 3, Relators := rels); 2 gap> PqSPComputePcpAndPCover(procId : ClassBound := 1); gap> PqSPStandardPresentation(procId, [ [[2,0], > [0,2]], > > [[0,2], > [1,0]], > > [[1,2], > [2,2]], > > [[1,0], > [2,1]], > > [[2,0], > [0,1]] ] > > : # options > ClassBound := 10, > PcgsAutomorphisms); gap> ##Example: "3gp-SP-2-Rel-i" . . . based on: isom/3gp.ex2 gap> F := FreeGroup("x", "y"); gap> rels := ["(x * y * x)^3", "[y, x, x]"]; [ "(x * y * x)^3", "[y, x, x]" ] gap> procId := PqStart(F : Prime := 3, Relators := rels); 3 gap> PqSPComputePcpAndPCover(procId : ClassBound := 1); gap> PqSPStandardPresentation(procId, [ [[2,0], > [0,2]], > > [[0,2], > [1,0]], > > [[1,2], > [2,2]], > > [[1,0], > [2,1]], > > [[2,0], > [0,1]] ] > > : # options > ClassBound := 9, > PcgsAutomorphisms); gap> PqQuitAll(); gap> ##Example: "3gp-SP-3-Rel-i" . . . based on: isom/3gp.exam gap> F := FreeGroup("x", "y"); gap> rels := ["(x * y * x)^3", "[x, y, x]"]; [ "(x * y * x)^3", "[x, y, x]" ] gap> procId := PqStart(F : Prime := 3, Relators := rels); 1 gap> PqSPComputePcpAndPCover(procId : ClassBound := 1); gap> PqSPStandardPresentation(procId, [ [[2,0], > [0,2]], > > [[0,2], > [1,0]], > > [[1,2], > [2,2]], > > [[1,0], > [2,1]], > > [[2,0], > [0,1]] ] > > : # options > ClassBound := 6, > PcgsAutomorphisms); gap> ##Example: "3gp-SP-4-Rel-i" . . . based on: isom/3gp.test gap> F := FreeGroup("a", "b"); gap> rels := ["(b * [b, a] * [b, a, b])^3", "([b, a] * [b, a, b]^2)^3", > "[b, a, a]"]; [ "(b * [b, a] * [b, a, b])^3", "([b, a] * [b, a, b]^2)^3", "[b, a, a]" ] gap> procId := PqStart(F : Prime := 3, Relators := rels); 2 gap> PqSPComputePcpAndPCover(procId : ClassBound := 1); gap> PqSPStandardPresentation(procId, [ [[2,0], > [0,2]], > > [[0,2], > [1,0]], > > [[1,2], > [2,2]], > > [[1,0], > [2,1]], > > [[2,0], > [0,1]] ] > > : # options > ClassBound := 7, > PcgsAutomorphisms); gap> ##Example: "3gp-SP-Rel-i" . . . based on: isom/3gp gap> F := FreeGroup("x", "y"); gap> rels := ["[x, y, y, y]", "[x, y, x]"]; [ "[x, y, y, y]", "[x, y, x]" ] gap> procId := PqStart(F : Prime := 3, Relators := rels); 3 gap> PqSPComputePcpAndPCover(procId : ClassBound := 1); gap> PqSPStandardPresentation(procId, [ [[2,0], > [0,2]], > > [[0,2], > [1,0]], > > [[1,2], > [2,2]], > > [[1,0], > [2,1]], > > [[2,0], > [0,1]] ] > > : # options > ClassBound := 10, > PcgsAutomorphisms); gap> PqQuitAll(); gap> ##Example: "3gp-a-Rel" . . . based on: examples/3gpA gap> ##(exponent 9 group with 2 generators of order 3) gap> F := FreeGroup("a", "b"); gap> rels := ["a^3", "b^3"]; [ "a^3", "b^3" ] gap> Pq( F : Prime := 3, Exponent := 9, Relators := rels, ClassBound := 6, > OutputLevel := 1 ); #I Lower exponent-3 central series for [grp] #I Group: [grp] to lower exponent-3 central class 1 has order 3^2 #I Group: [grp] to lower exponent-3 central class 2 has order 3^3 #I Group: [grp] to lower exponent-3 central class 3 has order 3^5 #I Group: [grp] to lower exponent-3 central class 4 has order 3^7 #I Group: [grp] to lower exponent-3 central class 5 has order 3^9 #I Group: [grp] to lower exponent-3 central class 6 has order 3^11 gap> # Executing interactive variant of example: "3gp-a-Rel" gap> ##Example: "3gp-a-Rel" . . . based on: examples/3gpA gap> ##(exponent 9 group with 2 generators of order 3) gap> F := FreeGroup("a", "b"); gap> rels := ["a^3", "b^3"]; [ "a^3", "b^3" ] gap> procId := PqStart( F ); 1 gap> Pq( procId : Prime := 3, Exponent := 9, Relators := rels, ClassBound := 6, > OutputLevel := 1 ); #I Lower exponent-3 central series for [grp] #I Group: [grp] to lower exponent-3 central class 1 has order 3^2 #I Group: [grp] to lower exponent-3 central class 2 has order 3^3 #I Group: [grp] to lower exponent-3 central class 3 has order 3^5 #I Group: [grp] to lower exponent-3 central class 4 has order 3^7 #I Group: [grp] to lower exponent-3 central class 5 has order 3^9 #I Group: [grp] to lower exponent-3 central class 6 has order 3^11 gap> ##Example: "3gp-a-Rel-i" . . . based on: examples/3gpA gap> ##(exponent 9 group with 2 generators of order 3) gap> F := FreeGroup("a", "b"); gap> rels := ["a^3", "b^3"]; [ "a^3", "b^3" ] gap> procId := PqStart(F : Prime := 3, Exponent := 9, Relators := rels); 2 gap> PqPcPresentation(procId : ClassBound := 12, > OutputLevel := 1); #I Lower exponent-3 central series for [grp] #I Group: [grp] to lower exponent-3 central class 1 has order 3^2 #I Group: [grp] to lower exponent-3 central class 2 has order 3^3 #I Group: [grp] to lower exponent-3 central class 3 has order 3^5 #I Group: [grp] to lower exponent-3 central class 4 has order 3^7 #I Group: [grp] to lower exponent-3 central class 5 has order 3^9 #I Group: [grp] to lower exponent-3 central class 6 has order 3^11 #I Group: [grp] to lower exponent-3 central class 7 has order 3^15 #I Group: [grp] to lower exponent-3 central class 8 has order 3^20 #I Group: [grp] to lower exponent-3 central class 9 has order 3^28 #I Group: [grp] to lower exponent-3 central class 10 has order 3^38 #I Group: [grp] to lower exponent-3 central class 11 has order 3^52 #I Group: [grp] to lower exponent-3 central class 12 has order 3^73 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> ##Example: "3gp-a-x-Rel-i" . . . based on: examples/3gpA gap> ##(exponent 9 group with 2 generators of order 3, extended) gap> F := FreeGroup("a", "b"); gap> rels := ["a^3", "b^3"]; [ "a^3", "b^3" ] gap> procId := PqStart(F : Prime := 3, Exponent := 9, Relators := rels); 3 gap> PqPcPresentation(procId : ClassBound := 4, > OutputLevel := 1); #I Lower exponent-3 central series for [grp] #I Group: [grp] to lower exponent-3 central class 1 has order 3^2 #I Group: [grp] to lower exponent-3 central class 2 has order 3^3 #I Group: [grp] to lower exponent-3 central class 3 has order 3^5 #I Group: [grp] to lower exponent-3 central class 4 has order 3^7 gap> PqDisplayPcPresentation(procId : OutputLevel := 2); #I Group: [grp] to lower exponent-3 central class 4 has order 3^7 #I Non-trivial powers: #I .3^3 = .6^2 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .4 #I [ .3, .2 ] = .5 #I [ .4, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .5, .1 ] = .7 #I [ .5, .2 ] = .6 gap> PqNextClass(procId); #I Processing tails for generators of weight 4 and 1 #I Processing tails for generators of weight 3 and 2 #I The number of new generators introduced for weight 5 is 4 #I Processing tails for generators of weight 3 and 1 #I Processing tails for generators of weight 2 and 2 #I The number of new generators introduced for weight 4 is 2 #I Generator 12 is redundant #I Jacobi was 3 2 1 #I Processing tails for generators of weight 2 and 1 #I The number of new generators introduced for weight 3 is 0 #I Generator 13 is redundant #I Jacobi was 2 1 1 #I The number of new generators introduced for weight 2 is 2 #I Generator 14 is trivial #I Defining relation was 1 #I Generator 15 is trivial #I Defining relation was 2 #I 2 relations of class 1 collected #I Generator 9 is redundant #I Collected power 9 of the following word: 1^1 2^1 #I 2 relations of class 2 collected #I Generator 8 is trivial #I Collected power 9 of the following word: 1^1 2^2 #I 3 relations of class 3 collected #I 2 relations of class 4 collected #I 1 relation of class 5 collected #I Group: [grp] to lower exponent-3 central class 5 has order 3^9 #I Non-trivial powers: #I .3^3 = .6^2 .8^2 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .4 #I [ .3, .2 ] = .5 #I [ .4, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .4, .3 ] = .8 #I [ .5, .1 ] = .7 .8 .9^2 #I [ .5, .2 ] = .6 .8 .9^2 #I [ .5, .3 ] = .9^2 #I [ .7, .1 ] = .8 #I [ .7, .2 ] = .9 gap> PqSetOutputLevel(procId, 1); gap> PqSetupTablesForNextClass(procId); #I Setup performed for class 6 gap> PqTails(procId, 0); gap> PqDoConsistencyChecks(procId, 0, 0); gap> PqCollectDefiningRelations(procId); gap> PqDoExponentChecks(procId); gap> PqEliminateRedundantGenerators(procId); gap> PqDisplayPcPresentation(procId : OutputLevel := 2); #I Group: [grp] to lower exponent-3 central class 6 has order 3^11 #I Non-trivial powers: #I .3^3 = .6^2 .8^2 .10 .11 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .4 #I [ .3, .2 ] = .5 #I [ .4, .1 ] = .6 #I [ .4, .2 ] = .7 #I [ .4, .3 ] = .8 .10^2 .11^2 #I [ .5, .1 ] = .7 .8 .9^2 .10^2 .11^2 #I [ .5, .2 ] = .6 .8 .9^2 .10^2 #I [ .5, .3 ] = .9^2 .11 #I [ .5, .4 ] = .10 .11 #I [ .6, .2 ] = .10^2 #I [ .7, .1 ] = .8 #I [ .7, .2 ] = .9 #I [ .7, .3 ] = .10^2 .11 #I [ .8, .2 ] = .10 #I [ .9, .1 ] = .11 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> PqQuitAll(); gap> ##Example: "3gp-maxoccur-Rel-i" . . . based on: examples/maxoccur gap> ##Demonstrates usage of `PqSetMaximalOccurrences'. gap> F := FreeGroup("a", "b"); gap> rels := ["a^3", "b^3"]; [ "a^3", "b^3" ] gap> procId := PqStart(F : Prime := 3, Relators := rels); 1 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-3 central series for [grp] #I Group: [grp] to lower exponent-3 central class 1 has order 3^2 gap> PqSetMaximalOccurrences(procId, [6, 4]); gap> for class in [2 .. 9] do > PqNextClass(procId); > od; #I Group: [grp] to lower exponent-3 central class 2 has order 3^3 #I Group: [grp] to lower exponent-3 central class 3 has order 3^5 #I Group: [grp] to lower exponent-3 central class 4 has order 3^7 #I Group: [grp] to lower exponent-3 central class 5 has order 3^11 #I Group: [grp] to lower exponent-3 central class 6 has order 3^15 #I Group: [grp] to lower exponent-3 central class 7 has order 3^23 #I Group: [grp] to lower exponent-3 central class 8 has order 3^29 #I Group: [grp] to lower exponent-3 central class 9 has order 3^35 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> ##Example: "5gp-PG-i" . . . based on: examples/pga_5gp gap> ##Descendants of C5 x C5 gap> F := FreeGroup("a", "b"); gap> procId := PqStart(F : Prime := 5); 2 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 gap> PqComputePCover(procId); #I Group: [grp] to lower exponent-5 central class 2 has order 5^5 gap> PqPGSupplyAutomorphisms(procId, [ [[2,0], > [0,1]], > > [[4,1], > [4,0]] ]); gap> PqPGConstructDescendants(procId : ClassBound := 2, > StepSize := 2, > RankInitialSegmentSubgroups := 4); #I ************************************************** #I Starting group: [grp] #I Order: 5^2 #I Nuclear rank: 3 #I 5-multiplicator rank: 3 #I # of immediate descendants of order 5^4 is 3 #I # of capable immediate descendants is 3 #I ************************************************** 3 gap> ##Example: "5gp-Rel-i" . . . based on: examples/5gp gap> F := FreeGroup("a", "b", "c"); gap> rels := ["a^25 * c", "[a, b] * c^-4", "[a, c]^25"]; [ "a^25 * c", "[a, b] * c^-4", "[a, c]^25" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 3 gap> PqPcPresentation(procId : ClassBound := 27, > OutputLevel := 1); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 #I Group: [grp] to lower exponent-5 central class 2 has order 5^4 #I Group: [grp] to lower exponent-5 central class 3 has order 5^6 #I Group: [grp] to lower exponent-5 central class 4 has order 5^8 #I Group: [grp] to lower exponent-5 central class 5 has order 5^10 #I Group: [grp] to lower exponent-5 central class 6 has order 5^12 #I Group: [grp] to lower exponent-5 central class 7 has order 5^14 #I Group: [grp] to lower exponent-5 central class 8 has order 5^16 #I Group: [grp] to lower exponent-5 central class 9 has order 5^18 #I Group: [grp] to lower exponent-5 central class 10 has order 5^20 #I Group: [grp] to lower exponent-5 central class 11 has order 5^22 #I Group: [grp] to lower exponent-5 central class 12 has order 5^24 #I Group: [grp] to lower exponent-5 central class 13 has order 5^26 #I Group: [grp] to lower exponent-5 central class 14 has order 5^28 #I Group: [grp] to lower exponent-5 central class 15 has order 5^30 #I Group: [grp] to lower exponent-5 central class 16 has order 5^32 #I Group: [grp] to lower exponent-5 central class 17 has order 5^34 #I Group: [grp] to lower exponent-5 central class 18 has order 5^36 #I Group: [grp] to lower exponent-5 central class 19 has order 5^38 #I Group: [grp] to lower exponent-5 central class 20 has order 5^40 #I Group: [grp] to lower exponent-5 central class 21 has order 5^42 #I Group: [grp] to lower exponent-5 central class 22 has order 5^44 #I Group: [grp] to lower exponent-5 central class 23 has order 5^46 #I Group: [grp] to lower exponent-5 central class 24 has order 5^48 #I Group: [grp] to lower exponent-5 central class 25 has order 5^50 #I Group: [grp] to lower exponent-5 central class 26 has order 5^52 #I Group: [grp] to lower exponent-5 central class 27 has order 5^54 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> PqQuitAll(); gap> ##Example: "5gp-SP-Rel-i" . . . based on: isom/5gp gap> F := FreeGroup("a", "b"); gap> rels := ["a^25", "[b, a, a, a]", "b^5*[b, a, a]^-1"]; [ "a^25", "[b, a, a, a]", "b^5*[b, a, a]^-1" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 1 gap> PqSPComputePcpAndPCover(procId : ClassBound := 2); gap> PqSPStandardPresentation(procId, [ [[1,0,0,1], > [0,1,0,0]], > > [[1,0,0,0], > [0,1,0,1]], > > [[1,3,0,0], > [0,1,0,0]], > > [[1,3,0,0], > [0,4,0,0]], > > [[1,2,0,0], > [0,3,0,0]], > > [[4,0,0,0], > [0,1,0,0]], > > [[3,0,0,0], > [0,1,0,0]] ] > > : # options > ClassBound := 10, > PcgsAutomorphisms); gap> ##Example: "5gp-SP-a-Rel-i" . . . based on: isom/5gp_a gap> F := FreeGroup("a", "b"); gap> rels := ["a^25", "[b, a, a]", "[b, a, b, b, b, b]", "b^5"]; [ "a^25", "[b, a, a]", "[b, a, b, b, b, b]", "b^5" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 2 gap> PqSPComputePcpAndPCover(procId : ClassBound := 2); gap> PqSPStandardPresentation(procId, [ [[1,0,0,1], > [0,1,0,0]], > > [[1,0,0,0], > [0,1,0,1]], > > [[1,3,0,0], > [0,1,0,0]], > > [[1,3,0,0], > [0,4,0,0]], > > [[1,2,0,0], > [0,3,0,0]], > > [[4,0,0,0], > [0,1,0,0]], > > [[3,0,0,0], > [0,1,0,0]] ] > > : # options > ClassBound := 27, > PcgsAutomorphisms); gap> ##Example: "5gp-SP-b-Rel-i" . . . based on: isom/5gp_b gap> F := FreeGroup("a", "b"); gap> rels := ["a^25", "[b, a, a]", "[b, a, a, a, a, a, b]", > "[b, a, b, b, b, b]", "b^5 * [b, a, a]^-1"]; [ "a^25", "[b, a, a]", "[b, a, a, a, a, a, b]", "[b, a, b, b, b, b]", "b^5 * [b, a, a]^-1" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 3 gap> PqSPComputePcpAndPCover(procId : ClassBound := 2); gap> PqSPStandardPresentation(procId, [ [[1,0,0,1], > [0,1,0,0]], > > [[1,0,0,0], > [0,1,0,1]], > > [[1,3,0,0], > [0,1,0,0]], > > [[1,3,0,0], > [0,4,0,0]], > > [[1,2,0,0], > [0,3,0,0]], > > [[4,0,0,0], > [0,1,0,0]], > > [[3,0,0,0], > [0,1,0,0]] ] > > : # options > ClassBound := 27, > PcgsAutomorphisms); gap> PqQuitAll(); gap> ##Example: "5gp-SP-big-Rel-i" . . . based on: isom/large_5gp gap> F := FreeGroup("a", "b", "c", "d"); gap> rels := ["a * b^d", "c * d^a", "[c, a, a]", "[c, b, b, a]"]; [ "a * b^d", "c * d^a", "[c, a, a]", "[c, b, b, a]" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 1 gap> PqSPComputePcpAndPCover(procId : ClassBound := 1); gap> PqSPStandardPresentation(procId, [ [[4,1], > [4,0]], > > [[2,0], > [0,1]] ] > > : # options > ClassBound := 5); gap> ##Example: "5gp-SP-d-Rel-i" . . . based on: isom/5gp_d gap> F := FreeGroup("a", "b"); gap> rels := ["a^25", "[b, a, a, a, b]", "[b, a, b, b, b]", > "[b, a, b, a]", "b^5 * [a, b, a]^-1"]; [ "a^25", "[b, a, a, a, b]", "[b, a, b, b, b]", "[b, a, b, a]", "b^5 * [a, b, a]^-1" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 2 gap> PqSPComputePcpAndPCover(procId : ClassBound := 2); gap> PqSPStandardPresentation(procId, [ [[1,0,0,1], > [0,1,0,0]], > > [[1,0,0,0], > [0,1,0,1]], > > [[1,3,0,0], > [0,1,0,0]], > > [[1,3,0,0], > [0,4,0,0]], > > [[1,2,0,0], > [0,3,0,0]], > > [[4,0,0,0], > [0,1,0,0]], > > [[3,0,0,0], > [0,1,0,0]] ] > > : # options > ClassBound := 20, > PcgsAutomorphisms); gap> ##Example: "5gp-a-Rel-i" . . . based on: examples/5gpA gap> F := FreeGroup("a", "b"); gap> rels := ["a^5", "b^5", "(a * b)^5", "(a * b^2)^5", "(a * b^-2)^5", > "(a * b^-1)^5", "(a^2 * b)^5", "(a^2 * b^2)^5", "(a^2 * b^-2)^5", > "(a^2 * b^-1)^5", "(a * b * a^-1 * b^2)^5", > "(a * b * a^2 * b^-1)^5", "(a * b * a^2 * b^2)^5", > "(a * b * a * b^-1)^5", "(a * b * a^-1 * b)^5", > "(a * b * a^-1 * b^-1)^5"]; [ "a^5", "b^5", "(a * b)^5", "(a * b^2)^5", "(a * b^-2)^5", "(a * b^-1)^5", "(a^2 * b)^5", "(a^2 * b^2)^5", "(a^2 * b^-2)^5", "(a^2 * b^-1)^5", "(a * b * a^-1 * b^2)^5", "(a * b * a^2 * b^-1)^5", "(a * b * a^2 * b^2)^5", "(a * b * a * b^-1)^5", "(a * b * a^-1 * b)^5", "(a * b * a^-1 * b^-1)^5" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 3 gap> PqPcPresentation(procId : ClassBound := 5, > OutputLevel := 1); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 #I Group: [grp] to lower exponent-5 central class 2 has order 5^3 #I Group: [grp] to lower exponent-5 central class 3 has order 5^5 #I Group: [grp] to lower exponent-5 central class 4 has order 5^8 #I Group: [grp] to lower exponent-5 central class 5 has order 5^10 gap> PqNextClass(procId); #class 6 #I Group: [grp] to lower exponent-5 central class 6 has order 5^14 gap> PqNextClass(procId); #class 7 #I Group: [grp] to lower exponent-5 central class 7 has order 5^18 gap> PqNextClass(procId); #class 8 #I Group: [grp] to lower exponent-5 central class 8 has order 5^22 gap> PqNextClass(procId); #class 9 #I Group: [grp] to lower exponent-5 central class 9 has order 5^28 gap> PqNextClass(procId); #class 10 #I Group: [grp] to lower exponent-5 central class 10 has order 5^39 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> PqQuitAll(); gap> ##Example: "5gp-b-Rel-i" . . . based on: examples/5gpB gap> F := FreeGroup("x", "y", "z", "w"); gap> rels := ["x^25 * (x^z)^-1", "[x, y] * z^-1", "[x, z]"]; [ "x^25 * (x^z)^-1", "[x, y] * z^-1", "[x, z]" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 1 gap> PqPcPresentation(procId : ClassBound := 5, > OutputLevel := 1); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 #I Group: [grp] to lower exponent-5 central class 2 has order 5^5 #I Group: [grp] to lower exponent-5 central class 3 has order 5^10 #I Group: [grp] to lower exponent-5 central class 4 has order 5^18 #I Group: [grp] to lower exponent-5 central class 5 has order 5^32 gap> ##Example: "5gp-c-Rel-i" . . . based on: examples/keyword_5gp gap> F := FreeGroup("a", "b", "c", "d"); gap> rels := ["[a, b, b, c]", "(a * b * c^d * a)^25", > "(a * b)^25 * [a, c, c, d]^-2"]; [ "[a, b, b, c]", "(a * b * c^d * a)^25", "(a * b)^25 * [a, c, c, d]^-2" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 2 gap> PqPcPresentation(procId : ClassBound := 2, > OutputLevel := 1); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^4 #I Group: [grp] to lower exponent-5 central class 2 has order 5^14 gap> ##Example: "5gp-maxoccur-Rel-i" . . . based on: GrpFP_2_pQuotient6 gap> ##Demonstrates usage of `PqSetMaximalOccurrences'. gap> F := FreeGroup("a", "b"); gap> rels := ["a^5", "b^5"]; [ "a^5", "b^5" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 3 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 gap> PqSetMaximalOccurrences(procId, [3, 2]); gap> for class in [2 .. 6] do > PqNextClass(procId); > od; #I Group: [grp] to lower exponent-5 central class 2 has order 5^3 #I Group: [grp] to lower exponent-5 central class 3 has order 5^5 #I Group: [grp] to lower exponent-5 central class 4 has order 5^7 #I Group: [grp] to lower exponent-5 central class 5 has order 5^9 #I Group completed. Lower exponent-5 central class = 5, Order = 5^9 #I Group: [grp] to lower exponent-5 central class 5 has order 5^9 gap> PqDisplayPcPresentation(procId); #I Group: [grp] to lower exponent-5 central class 5 has order 5^9 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> PqQuitAll(); gap> ##Example: "5gp-metabelian-Rel" . . . based on: examples/metabelian gap> ##Construction of a metabelian 5-quotient gap> F := FreeGroup("a", "b"); gap> rels := [ "a^625", "b^625", "[b, a, b]", > "[b, a, a, a, a] * [b, a]^-5" ]; [ "a^625", "b^625", "[b, a, b]", "[b, a, a, a, a] * [b, a]^-5" ] gap> Pq( F : Prime := 5, ClassBound := 20, Metabelian, Relators := rels, > OutputLevel := 1 ); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 #I Group: [grp] to lower exponent-5 central class 2 has order 5^5 #I Group: [grp] to lower exponent-5 central class 3 has order 5^8 #I Group: [grp] to lower exponent-5 central class 4 has order 5^11 #I Group: [grp] to lower exponent-5 central class 5 has order 5^12 #I Group: [grp] to lower exponent-5 central class 6 has order 5^13 #I Group: [grp] to lower exponent-5 central class 7 has order 5^14 #I Group: [grp] to lower exponent-5 central class 8 has order 5^15 #I Group: [grp] to lower exponent-5 central class 9 has order 5^16 #I Group: [grp] to lower exponent-5 central class 10 has order 5^17 #I Group: [grp] to lower exponent-5 central class 11 has order 5^18 #I Group: [grp] to lower exponent-5 central class 12 has order 5^19 #I Group: [grp] to lower exponent-5 central class 13 has order 5^20 #I Group completed. Lower exponent-5 central class = 13, Order = 5^20 gap> # Executing interactive variant of example: "5gp-metabelian-Rel" gap> ##Example: "5gp-metabelian-Rel" . . . based on: examples/metabelian gap> ##Construction of a metabelian 5-quotient gap> F := FreeGroup("a", "b"); gap> rels := [ "a^625", "b^625", "[b, a, b]", > "[b, a, a, a, a] * [b, a]^-5" ]; [ "a^625", "b^625", "[b, a, b]", "[b, a, a, a, a] * [b, a]^-5" ] gap> procId := PqStart( F ); 1 gap> Pq( procId : Prime := 5, ClassBound := 20, Metabelian, Relators := rels, > OutputLevel := 1 ); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 #I Group: [grp] to lower exponent-5 central class 2 has order 5^5 #I Group: [grp] to lower exponent-5 central class 3 has order 5^8 #I Group: [grp] to lower exponent-5 central class 4 has order 5^11 #I Group: [grp] to lower exponent-5 central class 5 has order 5^12 #I Group: [grp] to lower exponent-5 central class 6 has order 5^13 #I Group: [grp] to lower exponent-5 central class 7 has order 5^14 #I Group: [grp] to lower exponent-5 central class 8 has order 5^15 #I Group: [grp] to lower exponent-5 central class 9 has order 5^16 #I Group: [grp] to lower exponent-5 central class 10 has order 5^17 #I Group: [grp] to lower exponent-5 central class 11 has order 5^18 #I Group: [grp] to lower exponent-5 central class 12 has order 5^19 #I Group: [grp] to lower exponent-5 central class 13 has order 5^20 #I Group completed. Lower exponent-5 central class = 13, Order = 5^20 gap> ##Example: "5gp-metabelian-Rel-i" . . . based on: examples/metabelian gap> ##Demonstrates usage of `PqSetMetabelian'. gap> F := FreeGroup("a", "b"); gap> rels := ["a^625", "b^625", "[b, a, b]", "[b, a, a, a, a] * [b, a]^-5"]; [ "a^625", "b^625", "[b, a, b]", "[b, a, a, a, a] * [b, a]^-5" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 2 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 gap> PqSetMetabelian(procId); gap> for class in [2 .. 14] do > PqNextClass(procId); > od; #I Group: [grp] to lower exponent-5 central class 2 has order 5^5 #I Group: [grp] to lower exponent-5 central class 3 has order 5^8 #I Group: [grp] to lower exponent-5 central class 4 has order 5^11 #I Group: [grp] to lower exponent-5 central class 5 has order 5^12 #I Group: [grp] to lower exponent-5 central class 6 has order 5^13 #I Group: [grp] to lower exponent-5 central class 7 has order 5^14 #I Group: [grp] to lower exponent-5 central class 8 has order 5^15 #I Group: [grp] to lower exponent-5 central class 9 has order 5^16 #I Group: [grp] to lower exponent-5 central class 10 has order 5^17 #I Group: [grp] to lower exponent-5 central class 11 has order 5^18 #I Group: [grp] to lower exponent-5 central class 12 has order 5^19 #I Group: [grp] to lower exponent-5 central class 13 has order 5^20 #I Group completed. Lower exponent-5 central class = 13, Order = 5^20 #I Group: [grp] to lower exponent-5 central class 13 has order 5^20 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> ##Example: "7gp-PG-i" . . . based on: examples/pga_7gp gap> ##Descendants of C7 x C7 gap> F := FreeGroup("a", "b"); gap> procId := PqStart(F : Prime := 7); 3 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-7 central series for [grp] #I Group: [grp] to lower exponent-7 central class 1 has order 7^2 gap> PqComputePCover(procId); #I Group: [grp] to lower exponent-7 central class 2 has order 7^5 gap> PqPGSupplyAutomorphisms(procId, [ [[3,0], > [0,1]], > > [[6,1], > [6,0]] ]); gap> PqPGConstructDescendants(procId : ClassBound := 2, > CapableDescendants, > StepSize := 1); #I ************************************************** #I Starting group: [grp] #I Order: 7^2 #I Nuclear rank: 3 #I 7-multiplicator rank: 3 #I # of immediate descendants of order 7^3 is 3 #I # of capable immediate descendants is 2 #I ************************************************** 2 gap> PqQuitAll(); gap> ##Example: "7gp-Rel-i" . . . based on: examples/7gp gap> F := FreeGroup("a", "b"); gap> rels := ["[b, a, a, b, b]^49", "(a * b * b * a * b * a)^49", "b^7"]; [ "[b, a, a, b, b]^49", "(a * b * b * a * b * a)^49", "b^7" ] gap> procId := PqStart(F : Prime := 7, Relators := rels); 1 gap> PqPcPresentation(procId : ClassBound := 10, > OutputLevel := 1); #I Lower exponent-7 central series for [grp] #I Group: [grp] to lower exponent-7 central class 1 has order 7^2 #I Group: [grp] to lower exponent-7 central class 2 has order 7^4 #I Group: [grp] to lower exponent-7 central class 3 has order 7^6 #I Group: [grp] to lower exponent-7 central class 4 has order 7^9 #I Group: [grp] to lower exponent-7 central class 5 has order 7^15 #I Group: [grp] to lower exponent-7 central class 6 has order 7^24 #I Group: [grp] to lower exponent-7 central class 7 has order 7^42 #I Group: [grp] to lower exponent-7 central class 8 has order 7^72 #I Group: [grp] to lower exponent-7 central class 9 has order 7^128 #I Group: [grp] to lower exponent-7 central class 10 has order 7^226 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> ##Example: "7gp-SP-Rel-i" . . . based on: isom/7gp.com gap> F := FreeGroup("a", "b"); gap> rels := ["a^7", "b^7 * [b, a, a]^-1", "[b, a, b, b, b, b, b]"]; [ "a^7", "b^7 * [b, a, a]^-1", "[b, a, b, b, b, b, b]" ] gap> procId := PqStart(F : Prime := 7, Relators := rels); 2 gap> PqSPComputePcpAndPCover(procId : ClassBound := 3); gap> PqSPStandardPresentation(procId, [ [[1,0,0,0,1], > [0,1,0,0,0]], > > [[1,0,0,0,0], > [0,1,0,0,1]], > > [[1,0,0,0,0], > [0,1,0,0,1]], > > [[1,0,0,0,0], > [6,1,0,0,0]], > > [[6,0,0,0,0], > [2,1,0,0,0]], > > [[6,0,0,0,0], > [0,6,0,0,0]], > > [[6,0,0,0,0], > [4,5,0,0,0]] ] > > : # options > ClassBound := 10, > PcgsAutomorphisms); gap> ##Example: "7gp-SP-a-Rel-i" . . . based on: isom/7gp_a gap> F := FreeGroup("a", "b"); gap> rels := ["b^7", "a^7 * [b, a, b]^-1", "(a * b * [b, a, b] )^7", > "[b, a, a, a, a, b, a]"]; [ "b^7", "a^7 * [b, a, b]^-1", "(a * b * [b, a, b] )^7", "[b, a, a, a, a, b, a]" ] gap> procId := PqStart(F : Prime := 7, Relators := rels); 3 gap> PqSPComputePcpAndPCover(procId : ClassBound := 3); gap> PqSPStandardPresentation(procId, [ [[1,0,0,0], > [0,1,0,1]], > > [[1,3,0,0], > [0,1,0,0]], > > [[6,0,0,0], > [0,1,0,0]], > > [[3,0,0,0], > [0,1,0,0]], > > [[1,2,0,0], > [0,1,0,0]], > > [[1,4,0,0], > [0,4,0,0]] ] > > : # options > ClassBound := 20, > PcgsAutomorphisms); gap> PqQuitAll(); gap> ##Example: "7gp-SP-b-Rel-i" . . . based on: isom/7gp_b gap> F := FreeGroup("a", "b"); gap> rels := ["b^7 * [b, a, a]^-1", "[b, a, b]"]; [ "b^7 * [b, a, a]^-1", "[b, a, b]" ] gap> procId := PqStart(F : Prime := 7, Relators := rels); 1 gap> PqSPComputePcpAndPCover(procId : ClassBound := 2); gap> PqSPStandardPresentation(procId, [ [[1,0,0,1], > [0,1,0,0]], > > [[1,0,0,0], > [0,1,0,1]], > > [[1,3,0,0], > [0,1,0,0]], > > [[6,0,0,0], > [0,1,0,0]], > > [[3,0,0,0], > [0,1,0,0]], > > [[1,2,0,0], > [0,6,0,0]], > > [[1,4,0,0], > [0,4,0,0]] ] > > : # options > ClassBound := 40, > PcgsAutomorphisms); gap> ##Example: "B2-4" . . . the ``right'' way to generate B(2, 4) gap> ##Generates B(2, 4) by using the `Exponent' option gap> F := FreeGroup("a", "b"); gap> Pq( F : Prime := 2, Exponent := 4 ); gap> # Executing interactive variant of example: "B2-4" gap> ##Example: "B2-4" . . . the ``right'' way to generate B(2, 4) gap> ##Generates B(2, 4) by using the `Exponent' option gap> F := FreeGroup("a", "b"); gap> procId := PqStart( F ); 2 gap> Pq( procId : Prime := 2, Exponent := 4 ); gap> ##Example: "B2-4-Id" . . . alternative way to generate B(2, 4) gap> ##Generates B(2, 4) by using the `Identities' option gap> ##... this is not as efficient as using `Exponent' but gap> ##demonstrates the usage of the `Identities' option. gap> F := FreeGroup("a", "b"); gap> # All words w in the pc generators of B(2, 4) satisfy f(w) = 1 gap> f := w -> w^4; function( w ) ... end gap> Pq( F : Prime := 2, Identities := [ f ] ); #I Class 1 with 2 generators. #I Class 2 with 5 generators. #I Class 3 with 7 generators. #I Class 4 with 10 generators. #I Class 5 with 12 generators. #I Class 5 with 12 generators. gap> # Executing interactive variant of example: "B2-4-Id" gap> ##Example: "B2-4-Id" . . . alternative way to generate B(2, 4) gap> ##Generates B(2, 4) by using the `Identities' option gap> ##... this is not as efficient as using `Exponent' but gap> ##demonstrates the usage of the `Identities' option. gap> F := FreeGroup("a", "b"); gap> # All words w in the pc generators of B(2, 4) satisfy f(w) = 1 gap> f := w -> w^4; function( w ) ... end gap> procId := PqStart( F ); 3 gap> Pq( procId : Prime := 2, Identities := [ f ] ); #I Class 1 with 2 generators. #I Class 2 with 5 generators. #I Class 3 with 7 generators. #I Class 4 with 10 generators. #I Class 5 with 12 generators. #I Class 5 with 12 generators. gap> PqQuitAll(); gap> ##Example: "B2-4-SP-i" . . . based on: isom/B2-4.com gap> ##Computes standard presentation for B(2,4) gap> F := FreeGroup("a", "b"); a := F.1; b := F.2; a b gap> procId := PqStart(F : Prime := 2, Exponent := 4); 1 gap> PqSPComputePcpAndPCover(procId : ClassBound := 1); gap> PqSPStandardPresentation(procId, [ [[0,1], > [1,1]], > > [[0,1], > [1,0]] ] > > : # options > ClassBound := 6, > PcgsAutomorphisms); gap> ##Example: "B2-5" . . . based on: examples/B2-5 gap> ##Construction of B(2,5) gap> ##i.e. largest finite 2-generator group of exponent 5 gap> F := FreeGroup("a", "b"); gap> Pq( F : Prime := 5, ClassBound := 14, Exponent := 5, > OutputLevel := 1 ); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 #I Group: [grp] to lower exponent-5 central class 2 has order 5^3 #I Group: [grp] to lower exponent-5 central class 3 has order 5^5 #I Group: [grp] to lower exponent-5 central class 4 has order 5^8 #I Group: [grp] to lower exponent-5 central class 5 has order 5^10 #I Group: [grp] to lower exponent-5 central class 6 has order 5^14 #I Group: [grp] to lower exponent-5 central class 7 has order 5^18 #I Group: [grp] to lower exponent-5 central class 8 has order 5^22 #I Group: [grp] to lower exponent-5 central class 9 has order 5^28 #I Group: [grp] to lower exponent-5 central class 10 has order 5^31 #I Group: [grp] to lower exponent-5 central class 11 has order 5^33 #I Group: [grp] to lower exponent-5 central class 12 has order 5^34 #I Group completed. Lower exponent-5 central class = 12, Order = 5^34 gap> # Executing interactive variant of example: "B2-5" gap> ##Example: "B2-5" . . . based on: examples/B2-5 gap> ##Construction of B(2,5) gap> ##i.e. largest finite 2-generator group of exponent 5 gap> F := FreeGroup("a", "b"); gap> procId := PqStart( F ); 2 gap> Pq( procId : Prime := 5, ClassBound := 14, Exponent := 5, > OutputLevel := 1 ); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 #I Group: [grp] to lower exponent-5 central class 2 has order 5^3 #I Group: [grp] to lower exponent-5 central class 3 has order 5^5 #I Group: [grp] to lower exponent-5 central class 4 has order 5^8 #I Group: [grp] to lower exponent-5 central class 5 has order 5^10 #I Group: [grp] to lower exponent-5 central class 6 has order 5^14 #I Group: [grp] to lower exponent-5 central class 7 has order 5^18 #I Group: [grp] to lower exponent-5 central class 8 has order 5^22 #I Group: [grp] to lower exponent-5 central class 9 has order 5^28 #I Group: [grp] to lower exponent-5 central class 10 has order 5^31 #I Group: [grp] to lower exponent-5 central class 11 has order 5^33 #I Group: [grp] to lower exponent-5 central class 12 has order 5^34 #I Group completed. Lower exponent-5 central class = 12, Order = 5^34 gap> ##Example: "B2-5-i" . . . based on: examples/B2-5 gap> ##Construction of B(2,5) gap> F := FreeGroup("a", "b"); gap> procId := PqStart(F : Prime := 5, Exponent := 5); 3 gap> PqPcPresentation(procId : ClassBound := 15, > OutputLevel := 1); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 #I Group: [grp] to lower exponent-5 central class 2 has order 5^3 #I Group: [grp] to lower exponent-5 central class 3 has order 5^5 #I Group: [grp] to lower exponent-5 central class 4 has order 5^8 #I Group: [grp] to lower exponent-5 central class 5 has order 5^10 #I Group: [grp] to lower exponent-5 central class 6 has order 5^14 #I Group: [grp] to lower exponent-5 central class 7 has order 5^18 #I Group: [grp] to lower exponent-5 central class 8 has order 5^22 #I Group: [grp] to lower exponent-5 central class 9 has order 5^28 #I Group: [grp] to lower exponent-5 central class 10 has order 5^31 #I Group: [grp] to lower exponent-5 central class 11 has order 5^33 #I Group: [grp] to lower exponent-5 central class 12 has order 5^34 #I Group completed. Lower exponent-5 central class = 12, Order = 5^34 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> PqQuitAll(); gap> ##Example: "B2-8-i" . . . based on: examples/B2-8 gap> ##Construction of B(2,8) gap> F := FreeGroup("a", "b"); gap> procId := PqStart(F : Prime := 2, Exponent := 8); 1 gap> PqPcPresentation(procId : ClassBound := 10, > OutputLevel := 1); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^2 #I Group: [grp] to lower exponent-2 central class 2 has order 2^5 #I Group: [grp] to lower exponent-2 central class 3 has order 2^10 #I Group: [grp] to lower exponent-2 central class 4 has order 2^15 #I Group: [grp] to lower exponent-2 central class 5 has order 2^24 #I Group: [grp] to lower exponent-2 central class 6 has order 2^35 #I Group: [grp] to lower exponent-2 central class 7 has order 2^53 #I Group: [grp] to lower exponent-2 central class 8 has order 2^83 #I Group: [grp] to lower exponent-2 central class 9 has order 2^139 #I Group: [grp] to lower exponent-2 central class 10 has order 2^238 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> ##Example: "B4-4-a-i" . . . based on: examples/B4-4A gap> ##Construction of B(4,4) gap> F := FreeGroup("a", "b", "c", "d"); gap> procId := PqStart(F : Prime := 2, Exponent := 4); 2 gap> PqPcPresentation(procId : ClassBound := 6, > OutputLevel := 1); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^4 #I Group: [grp] to lower exponent-2 central class 2 has order 2^14 #I Group: [grp] to lower exponent-2 central class 3 has order 2^34 #I Group: [grp] to lower exponent-2 central class 4 has order 2^89 #I Group: [grp] to lower exponent-2 central class 5 has order 2^188 #I Group: [grp] to lower exponent-2 central class 6 has order 2^272 gap> PqSupplyAutomorphisms(procId, [ [[0,0,0,1], > [1,0,0,0], > [0,1,0,0], > [0,0,1,0]], > > [[1,1,0,0], > [0,1,0,0], > [0,0,1,0], > [0,0,0,1]] ]); gap> for class in [7 .. 11] do > PqNextClass(procId : QueueFactor := 20); > od; #I Group: [grp] to lower exponent-2 central class 7 has order 2^352 #I Group: [grp] to lower exponent-2 central class 8 has order 2^392 #I Group: [grp] to lower exponent-2 central class 9 has order 2^412 #I Group: [grp] to lower exponent-2 central class 10 has order 2^422 #I Group completed. Lower exponent-2 central class = 10, Order = 2^422 #I Group: [grp] to lower exponent-2 central class 10 has order 2^422 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> ##Example: "B4-4-i" . . . based on: examples/B4-4 gap> ##Construction of B(4,4) gap> F := FreeGroup("a", "b", "c", "d"); gap> procId := PqStart(F : Prime := 2, Exponent := 4); 3 gap> PqPcPresentation(procId : ClassBound := 6, > OutputLevel := 1); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^4 #I Group: [grp] to lower exponent-2 central class 2 has order 2^14 #I Group: [grp] to lower exponent-2 central class 3 has order 2^34 #I Group: [grp] to lower exponent-2 central class 4 has order 2^89 #I Group: [grp] to lower exponent-2 central class 5 has order 2^188 #I Group: [grp] to lower exponent-2 central class 6 has order 2^272 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> PqQuitAll(); gap> ##Example: "B5-4.g" . . . by Werner Nickel gap> ##. . . . . . . . . . . . and based on a pq input file by M.F.Newman gap> ##(constructs the Burnside group B(5,4), which is the largest group of gap> ## exponent 4 generated by 5 elements; it has order 2^2728 and p-central gap> ## class 13) gap> ##Note: It is a construction only and makes use of specialised knowledge gap> ##gained by Newman & O'Brien in their investigations of B(5,4). gap> LoadPackage( "anupq" ); true gap> #You might like to try setting: `SetInfoLevel( InfoANUPQ, 3 );' gap> gap> procId := PqStart( FreeGroup(5) : Exponent := 4, Prime := 2 ); 1 gap> Pq( procId : ClassBound := 2 ); gap> PqSupplyAutomorphisms( procId, > [ > [ [ 1, 1, 0, 0, 0], #1st automorphism > [ 0, 1, 0, 0, 0], > [ 0, 0, 1, 0, 0], > [ 0, 0, 0, 1, 0], > [ 0, 0, 0, 0, 1] ], > > [ [ 0, 0, 0, 0, 1], #2nd automorphism > [ 1, 0, 0, 0, 0], > [ 0, 1, 0, 0, 0], > [ 0, 0, 1, 0, 0], > [ 0, 0, 0, 1, 0] ] > ] ); gap> gap> Relations := > [ [], ## class 1 > [], ## class 2 > [], ## class 3 > [], ## class 4 > [], ## class 5 > [], ## class 6 > ## class 7 > [ [ "x2","x1","x1","x3","x4","x4","x4" ] ], > ## class 8 > [ [ "x2","x1","x1","x3","x4","x5","x5","x5" ] ], > ## class 9 > [ [ "x2","x1","x1","x3","x4","x4","x5","x5","x5" ], > [ "x2","x1","x1","x2","x3","x4","x5","x5","x5" ], > [ "x2","x1","x1","x3","x3","x4","x5","x5","x5" ] ], > ## class 10 > [ [ "x2","x1","x1","x2","x3","x3","x4","x5","x5","x5" ], > [ "x2","x1","x1","x3","x3","x4","x4","x5","x5","x5" ] ], > ## class 11 > [ [ "x2","x1","x1","x2","x3","x3","x4","x4","x5","x5","x5" ], > [ "x2","x1","x1","x2","x3","x1","x3","x4","x2","x4","x3" ] ], > ## class 12 > [ [ "x2","x1","x1","x2","x3","x1","x3","x4","x2","x5","x5","x5" ], > [ "x2","x1","x1","x3","x2","x4","x3","x5","x4","x5","x5","x5" ] ], > ## class 13 > [ [ "x2","x1","x1","x2","x3","x1","x3","x4","x2","x4","x5","x5","x5" > ] ] > ]; [ [ ], [ ], [ ], [ ], [ ], [ ], [ [ "x2", "x1", "x1", "x3", "x4", "x4", "x4" ] ], [ [ "x2", "x1", "x1", "x3", "x4", "x5", "x5", "x5" ] ], [ [ "x2", "x1", "x1", "x3", "x4", "x4", "x5", "x5", "x5" ], [ "x2", "x1", "x1", "x2", "x3", "x4", "x5", "x5", "x5" ], [ "x2", "x1", "x1", "x3", "x3", "x4", "x5", "x5", "x5" ] ], [ [ "x2", "x1", "x1", "x2", "x3", "x3", "x4", "x5", "x5", "x5" ], [ "x2", "x1", "x1", "x3", "x3", "x4", "x4", "x5", "x5", "x5" ] ], [ [ "x2", "x1", "x1", "x2", "x3", "x3", "x4", "x4", "x5", "x5", "x5" ], [ "x2", "x1", "x1", "x2", "x3", "x1", "x3", "x4", "x2", "x4", "x3" ] ], [ [ "x2", "x1", "x1", "x2", "x3", "x1", "x3", "x4", "x2", "x5", "x5", "x5" ] , [ "x2", "x1", "x1", "x3", "x2", "x4", "x3", "x5", "x4", "x5", "x5", "x5" ] ], [ [ "x2", "x1", "x1", "x2", "x3", "x1", "x3", "x4", "x2", "x4", "x5", "x5", "x5" ] ] ] gap> gap> for class in [ 3 .. 13 ] do > Print( "Computing class ", class, "\n" ); > PqSetupTablesForNextClass( procId ); > > for w in [ class, class-1 .. 7 ] do > > PqAddTails( procId, w ); > PqDisplayPcPresentation( procId ); > > if Relations[ w ] <> [] then > # recalculate automorphisms > PqExtendAutomorphisms( procId ); > > for r in Relations[ w ] do > Print( "Collecting ", r, "\n" ); > PqCommutator( procId, r, 1 ); > PqEchelonise( procId ); > PqApplyAutomorphisms( procId, 15 ); #queue factor = 15 > od; > > PqEliminateRedundantGenerators( procId ); > fi; > PqComputeTails( procId, w ); > od; > PqDisplayPcPresentation( procId ); > > smallclass := Minimum( class, 6 ); > for w in [ smallclass, smallclass-1 .. 2 ] do > PqTails( procId, w ); > od; > # recalculate automorphisms > PqExtendAutomorphisms( procId ); > PqCollect( procId, "x5^4" ); > PqEchelonise( procId ); > PqApplyAutomorphisms( procId, 15 ); #queue factor = 15 > PqEliminateRedundantGenerators( procId ); > PqDisplayPcPresentation( procId ); > od; Computing class 3 Computing class 4 Computing class 5 Computing class 6 Computing class 7 Collecting [ "x2", "x1", "x1", "x3", "x4", "x4", "x4" ] Computing class 8 Collecting [ "x2", "x1", "x1", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x4", "x4" ] Computing class 9 Collecting [ "x2", "x1", "x1", "x3", "x4", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x4", "x4" ] Computing class 10 Collecting [ "x2", "x1", "x1", "x2", "x3", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x3", "x4", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x4", "x4" ] Computing class 11 Collecting [ "x2", "x1", "x1", "x2", "x3", "x3", "x4", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x1", "x3", "x4", "x2", "x4", "x3" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x3", "x4", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x4", "x4" ] Computing class 12 Collecting [ "x2", "x1", "x1", "x2", "x3", "x1", "x3", "x4", "x2", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x2", "x4", "x3", "x5", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x3", "x4", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x1", "x3", "x4", "x2", "x4", "x3" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x3", "x4", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x4", "x4" ] Computing class 13 Collecting [ "x2", "x1", "x1", "x2", "x3", "x1", "x3", "x4", "x2", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x1", "x3", "x4", "x2", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x2", "x4", "x3", "x5", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x3", "x4", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x1", "x3", "x4", "x2", "x4", "x3" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x3", "x4", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x2", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x5", "x5", "x5" ] Collecting [ "x2", "x1", "x1", "x3", "x4", "x4", "x4" ] gap> gap> PqWritePcPresentation( procId, "/tmp/B54" ); gap> PqQuit( procId ); gap> ##Example: "B5-5-Engel3-Id" . . . Burnside group satisfying 2 identities gap> ##Generates largest Burnside group of exponent 5 that also satisfies gap> ##a 3-Engel identity. Demonstrates the usage of the `Identities' option. gap> F := FreeGroup(2); gap> Burnside5 := x->x^5; function( x ) ... end gap> Engel3 := function( x,y ) return PqLeftNormComm( [x,y,y,y] ); end; function( x, y ) ... end gap> Pq( F : Prime := 5, Identities := [ Burnside5, Engel3 ] ); #I Class 1 with 2 generators. #I Class 2 with 3 generators. #I Class 3 with 5 generators. #I Class 3 with 5 generators. gap> # Executing interactive variant of example: "B5-5-Engel3-Id" gap> ##Example: "B5-5-Engel3-Id" . . . Burnside group satisfying 2 identities gap> ##Generates largest Burnside group of exponent 5 that also satisfies gap> ##a 3-Engel identity. Demonstrates the usage of the `Identities' option. gap> F := FreeGroup(2); gap> Burnside5 := x->x^5; function( x ) ... end gap> Engel3 := function( x,y ) return PqLeftNormComm( [x,y,y,y] ); end; function( x, y ) ... end gap> procId := PqStart( F ); 1 gap> Pq( procId : Prime := 5, Identities := [ Burnside5, Engel3 ] ); #I Class 1 with 2 generators. #I Class 2 with 3 generators. #I Class 3 with 5 generators. #I Class 3 with 5 generators. gap> ##Example: "EpimorphismStandardPresentation" . . . based on manual example gap> ##(demonstrates `EpimorphismStandardPresentation' usage) gap> F := FreeGroup(6, "F"); gap> # For printing GAP uses the symbols F1, ... for the generators of F gap> x := F.1; y := F.2; z := F.3; w := F.4; a := F.5; b := F.6; F1 F2 F3 F4 F5 F6 gap> R := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b, > Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ]; [ F1^3*F4^-1, F2^3*F4^-1*F5^2*F6^2, F4^3*F6^-1, F2^-1*F1^-1*F2*F1*F3^-1, F3^-1*F1^-1*F3*F1, F3^-1*F2^-1*F3*F2*F5^-1, F3^3 ] gap> Q := F / R; gap> # For printing GAP also uses the symbols F1, ... for the generators of Q gap> # (the same as used for F) ... but the gen'rs of Q and F are different: gap> GeneratorsOfGroup(F) = GeneratorsOfGroup(Q); false gap> G := Pq( Q : Prime := 3, ClassBound := 3 ); gap> phi := EpimorphismStandardPresentation( Q : Prime := 3, > ClassBound := 3 ); [ F1, F2, F3, F4, F5, F6 ] -> [ f1*f2^2*f3*f4^2*f5^2, f1*f2*f3*f5, f3^2, f4*f6^2, f5, f6 ] gap> Source(phi); # This is the group Q (GAP uses F1, ... for gen'r symbols) gap> Range(phi); # This is the group G (GAP uses f1, ... for gen'r symbols) gap> AssignGeneratorVariables(G); # so f1, ... are now variables #I Assigned the global variables [ f1, f2, f3, f4, f5, f6 ] gap> # Just to see that the images of [F1, ..., F6] do generate G gap> Group([ f1*f2^2*f3, f1*f2*f3*f4*f5^2*f6^2, f3^2, f4, f5, f6 ]) = G; true gap> Size( Image(phi) ); 729 gap> # Executing interactive variant of example: "EpimorphismStandardPresentation" gap> ##Example: "EpimorphismStandardPresentation" . . . based on manual example gap> ##(demonstrates `EpimorphismStandardPresentation' usage) gap> F := FreeGroup(6, "F"); gap> # For printing GAP uses the symbols F1, ... for the generators of F gap> x := F.1; y := F.2; z := F.3; w := F.4; a := F.5; b := F.6; F1 F2 F3 F4 F5 F6 gap> R := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b, > Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ]; [ F1^3*F4^-1, F2^3*F4^-1*F5^2*F6^2, F4^3*F6^-1, F2^-1*F1^-1*F2*F1*F3^-1, F3^-1*F1^-1*F3*F1, F3^-1*F2^-1*F3*F2*F5^-1, F3^3 ] gap> Q := F / R; gap> # For printing GAP also uses the symbols F1, ... for the generators of Q gap> # (the same as used for F) ... but the gen'rs of Q and F are different: gap> GeneratorsOfGroup(F) = GeneratorsOfGroup(Q); false gap> procId := PqStart( Q ); 2 gap> G := Pq( procId : Prime := 3, ClassBound := 3 ); gap> phi := EpimorphismStandardPresentation( procId : Prime := 3, > ClassBound := 3 ); [ F1, F2, F3, F4, F5, F6 ] -> [ f1*f2^2*f3*f4^2*f5^2, f1*f2*f3*f5, f3^2, f4*f6^2, f5, f6 ] gap> Source(phi); # This is the group Q (GAP uses F1, ... for gen'r symbols) gap> Range(phi); # This is the group G (GAP uses f1, ... for gen'r symbols) gap> AssignGeneratorVariables(G); # so f1, ... are now variables #I Global variable `f1' is already defined and will be overwritten #I Global variable `f2' is already defined and will be overwritten #I Global variable `f3' is already defined and will be overwritten #I Global variable `f4' is already defined and will be overwritten #I Global variable `f5' is already defined and will be overwritten #I Global variable `f6' is already defined and will be overwritten #I Assigned the global variables [ f1, f2, f3, f4, f5, f6 ] gap> # Just to see that the images of [F1, ..., F6] do generate G gap> Group([ f1*f2^2*f3, f1*f2*f3*f4*f5^2*f6^2, f3^2, f4, f5, f6 ]) = G; true gap> Size( Image(phi) ); 729 gap> PqQuitAll(); gap> ##Example: "F2-5-i" . . . based on: examples/F2-5 gap> ##Construction of 5-quotient of a 2-generator free group gap> F := FreeGroup("a", "b"); gap> procId := PqStart(F : Prime := 5); 1 gap> PqPcPresentation(procId : ClassBound := 6, > OutputLevel := 1); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 #I Group: [grp] to lower exponent-5 central class 2 has order 5^5 #I Group: [grp] to lower exponent-5 central class 3 has order 5^10 #I Group: [grp] to lower exponent-5 central class 4 has order 5^18 #I Group: [grp] to lower exponent-5 central class 5 has order 5^32 #I Group: [grp] to lower exponent-5 central class 6 has order 5^55 gap> PqNextClass(procId); #class 7 #I Group: [grp] to lower exponent-5 central class 7 has order 5^96 gap> PqNextClass(procId); #class 8 #I Group: [grp] to lower exponent-5 central class 8 has order 5^167 gap> PqNextClass(procId); #class 9 #I Group: [grp] to lower exponent-5 central class 9 has order 5^294 gap> ##Example: "G2-SP-Rel-i" . . . based on: isom/G_2.com gap> F := FreeGroup("a", "b"); gap> rels := ["b^4", "b^2 * [b, a, a]^-1", "b * (a^2 * b^-1 * a^2)^-1" ]; [ "b^4", "b^2 * [b, a, a]^-1", "b * (a^2 * b^-1 * a^2)^-1" ] gap> procId := PqStart(F : Prime := 2, Relators := rels); 2 gap> PqSPComputePcpAndPCover(procId : ClassBound := 1); gap> PqSPStandardPresentation(procId, [ [[0,1], > [1,1]], > > [[0,1], > [1,0]] ] > > : # options > ClassBound := 12, > PcgsAutomorphisms); gap> ##Example: "G3-SP-Rel-i" . . . based on: isom/G_3.com gap> F := FreeGroup("x", "y"); gap> rels := ["(x * y * x)^3"]; [ "(x * y * x)^3" ] gap> procId := PqStart(F : Prime := 3, Relators := rels); 3 gap> PqSPComputePcpAndPCover(procId : ClassBound := 1); gap> PqSPStandardPresentation(procId, [ [[2,0], > [0,2]], > > [[0,2], > [1,0]], > > [[1,2], > [2,2]], > > [[1,0], > [2,1]], > > [[2,0], > [0,1]] ] > > : # options > ClassBound := 5, > PcgsAutomorphisms); gap> PqQuitAll(); gap> ##Example: "G5-SP-Rel-i" . . . based on: isom/G_5.com gap> F := FreeGroup("a", "b"); gap> rels := ["[a, b, b, b]", "[b, a, b, b, b]", "[a, b, a]", "b^5"]; [ "[a, b, b, b]", "[b, a, b, b, b]", "[a, b, a]", "b^5" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 1 gap> PqSPComputePcpAndPCover(procId : ClassBound := 2); gap> PqSPStandardPresentation(procId, [ [[1,0,0,1], > [0,1,0,0]], > > [[1,0,0,0], > [0,1,0,1]], > > [[1,3,0,0], > [0,1,0,0]], > > [[1,3,0,0], > [0,4,0,0]], > > [[1,2,0,0], > [0,3,0,0]], > > [[4,0,0,0], > [0,1,0,0]], > > [[3,0,0,0], > [0,1,0,0]] ] > > : # options > ClassBound := 10, > PcgsAutomorphisms); gap> ##Example: "G5-SP-a-Rel-i" . . . based on: isom/G_5A.com gap> F := FreeGroup("a", "b"); gap> rels := ["[a, b, b, a]", "[a, b, a]", "b^5"]; [ "[a, b, b, a]", "[a, b, a]", "b^5" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 2 gap> PqSPComputePcpAndPCover(procId : ClassBound := 2); gap> PqSPStandardPresentation(procId, [ [[1,0,0,1], > [0,1,0,0]], > > [[1,0,0,0], > [0,1,0,1]], > > [[1,3,0,0], > [0,1,0,0]], > > [[1,3,0,0], > [0,4,0,0]], > > [[1,2,0,0], > [0,3,0,0]], > > [[4,0,0,0], > [0,1,0,0]], > > [[3,0,0,0], > [0,1,0,0]] ] > > : # options > ClassBound := 10, > PcgsAutomorphisms); gap> ##Example: "IsIsomorphicPGroup-ni" . . . based on manual example gap> ##(demonstrates `IsIsomorphicPGroup' usage) gap> G := Group( (1,2,3,4), (1,3) ); Group([ (1,2,3,4), (1,3) ]) gap> P1 := Image( IsomorphismPcGroup( G ) ); Group([ f1, f2, f3 ]) gap> P2 := SmallGroup( 8, 5 ); gap> IsIsomorphicPGroup( P1, P2 ); false gap> P3 := SmallGroup( 8, 4 ); gap> IsIsomorphicPGroup( P1, P3 ); false gap> P4 := SmallGroup( 8, 3 ); gap> IsIsomorphicPGroup( P1, P4 ); true gap> PqQuitAll(); gap> ##Example: "Nott-APG-Rel-i" . . . based on: examples/pga_interactive gap> ##Start point for Nottingham group gap> ##Interactive construction of 40 5-groups of order 5^7 gap> F := FreeGroup("a", "b"); gap> rels := ["a^5", "b^5", "[b, a, b]"]; [ "a^5", "b^5", "[b, a, b]" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 1 gap> PqPcPresentation(procId : ClassBound := 3, > OutputLevel := 1); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 #I Group: [grp] to lower exponent-5 central class 2 has order 5^3 #I Group: [grp] to lower exponent-5 central class 3 has order 5^4 gap> PqComputePCover(procId); #I Group: [grp] to lower exponent-5 central class 4 has order 5^8 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> PqPGSupplyAutomorphisms(procId, [ [[1,0,0,0], > [0,1,0,1]], > > [[1,1,0,0], > [0,1,0,1]], > > [[1,0,0,0], > [0,4,0,0]], > > [[1,0,0,0], > [0,2,0,0]], > > [[4,0,0,0], > [0,1,0,0]], > > [[2,0,0,0], > [0,1,0,0]] ]); gap> PqPGConstructDescendants(procId : ClassBound := 4, > CapableDescendants, > StepSize := 1, > PcgsAutomorphisms, > RankInitialSegmentSubgroups := 4); #I ************************************************** #I Starting group: [grp] #I Order: 5^4 #I Nuclear rank: 1 #I 5-multiplicator rank: 4 #I # of immediate descendants of order 5^5 is 9 #I # of capable immediate descendants is 2 #I ************************************************** 2 gap> PqPGSetDescendantToPcp(procId, 4, 1); gap> PqAPGDegree(procId, 2, 3); #I Degree of permutation group is 25 25 gap> PqAPGPermutations(procId); gap> PqAPGOrbits(procId : CustomiseOutput := rec(orbit := [1])); #I Orbit Length Representative #I 1 5 1 #I 2 20 2 #I Number of orbits is 2 2 gap> PqAPGOrbitRepresentatives(procId); gap> PqPGSetDescendantToPcp(procId); gap> PqDisplayPcPresentation(procId); #I Group: [grp] #1;1 to lower exponent-5 central class 5 has order 5^9 #I Class 1 #I 1 is defined on image of defining generator 1 #I 2 is defined on image of defining generator 2 #I Class 2 #I 3 is defined on [2, 1] = 2 1 #I Class 3 #I 4 is defined on [3, 1] = 2 1 1 #I Class 4 #I 5 is defined on [4, 1] = 2 1 1 1 #I Class 5 #I 6 is defined on [5, 1] = 2 1 1 1 1 #I 7 is defined on [5, 2] = 2 1 1 1 2 #I 8 is defined on 1^5 = 1 1 #I 9 is defined on 2^5 = 2 2 #I Non-trivial powers: #I .1^5 = .8 #I .2^5 = .9 #I Non-trivial commutators: #I [ .2, .1 ] = .3 #I [ .3, .1 ] = .4 #I [ .4, .1 ] = .5 #I [ .4, .2 ] = .7 #I [ .4, .3 ] = .7^4 #I [ .5, .1 ] = .6 #I [ .5, .2 ] = .7 gap> PqAPGSingleStage(procId : StepSize:=2, BasicAlgorithm, > CustomiseOutput := rec()); #I ************************************************** #I Starting group: [grp] #1;1 #I Order: 5^5 #I Nuclear rank: 2 #I 5-multiplicator rank: 4 #I # of immediate descendants of order 5^7 is 40 #I # of capable immediate descendants is 5 gap> ##Example: "Nott-PG-Rel-i" . . . based on: examples/pga_nott gap> ##Start point for Nottingham group gap> F := FreeGroup("a", "b"); gap> rels := ["a^5", "b^5", "[b, a, b]"]; [ "a^5", "b^5", "[b, a, b]" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 2 gap> PqPcPresentation(procId : ClassBound := 3, > OutputLevel := 1); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 #I Group: [grp] to lower exponent-5 central class 2 has order 5^3 #I Group: [grp] to lower exponent-5 central class 3 has order 5^4 gap> PqComputePCover(procId); #I Group: [grp] to lower exponent-5 central class 4 has order 5^8 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> PqPGSupplyAutomorphisms(procId, [ [[1,0,0,0], > [0,1,0,1]], > > [[1,1,0,0], > [0,1,0,1]], > > [[1,0,0,0], > [0,4,0,0]], > > [[1,0,0,0], > [0,2,0,0]], > > [[4,0,0,0], > [0,1,0,0]], > > [[2,0,0,0], > [0,1,0,0]] ]); gap> PqPGConstructDescendants(procId : ClassBound := 4, > CapableDescendants, > StepSize := 1, > PcgsAutomorphisms, > RankInitialSegmentSubgroups := 4); #I ************************************************** #I Starting group: [grp] #I Order: 5^4 #I Nuclear rank: 1 #I 5-multiplicator rank: 4 #I # of immediate descendants of order 5^5 is 9 #I # of capable immediate descendants is 2 #I ************************************************** 2 gap> ##Example: "Nott-SP-Rel-i" . . . based on: isom/nott.com gap> F := FreeGroup("a", "b"); gap> rels := ["a^5", "b^5", "[b, a, b]"]; [ "a^5", "b^5", "[b, a, b]" ] gap> procId := PqStart(F : Prime := 5, Relators := rels); 3 gap> PqSPComputePcpAndPCover(procId : ClassBound := 3); gap> PqSPStandardPresentation(procId, [ [[1,0,0,0], > [0,1,0,1]], > > [[1,1,0,0], > [0,1,0,0]], > > [[1,0,0,0], > [0,4,0,0]], > > [[1,0,0,0], > [0,2,0,0]], > > [[4,0,0,0], > [0,1,0,0]], > > [[2,0,0,0], > [0,1,0,0]] ] > > : # options > ClassBound := 10, > PcgsAutomorphisms); gap> PqQuitAll(); gap> ##Example: "Pq" . . . based on manual example illustrating `Pq' usage gap> F := FreeGroup("a", "b"); a := F.1; b := F.2; a b gap> Pq( F : Prime := 2, ClassBound := 3 ); gap> gap> # Now let us get a p-quotient of an fp group gap> G := F / [a^4, b^4]; gap> Pq( G : Prime := 2, ClassBound := 3 ); gap> gap> # Now let's get a different p-quotient of the same group gap> Pq( G : Prime := 2, ClassBound := 3, > Exponent := 4 ); gap> gap> # Now we'll get a p-quotient of another fp group gap> # which we will redo using the `Relators' option gap> R := [ a^25, Comm(Comm(b, a), a), b^5 ]; [ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ] gap> H := F / R; gap> Pq( H : Prime := 5, ClassBound := 5, Metabelian ); gap> gap> # Now we redo the previous example using the `Relators' option gap> F := FreeGroup("a", "b"); gap> # `F' was defined for `Relators'. We use the same strings that GAP uses gap> # for printing the free group generators. It is *not* necessary to gap> # predefine: a := F.1; etc. (as it was above). gap> rels := [ "a^25", "[b, a, a]", "b^5" ]; [ "a^25", "[b, a, a]", "b^5" ] gap> R := PqGAPRelators(F, rels); [ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ] gap> H := F / R; gap> Pq( H : Prime := 5, ClassBound := 5, Metabelian, > Relators := rels ); gap> gap> # Above we could have just passed `F' (rather than `H'): gap> F := FreeGroup("a", "b"); gap> rels := [ "a^25", "[b, a, a]", "b^5" ]; [ "a^25", "[b, a, a]", "b^5" ] gap> Pq( F : Prime := 5, ClassBound := 5, Metabelian, > Relators := rels ); gap> # Executing interactive variant of example: "Pq" gap> ##Example: "Pq" . . . based on manual example illustrating `Pq' usage gap> F := FreeGroup("a", "b"); a := F.1; b := F.2; a b gap> procId1 := PqStart( F ); 1 gap> Pq( procId1 : Prime := 2, ClassBound := 3 ); gap> gap> # Now let us get a p-quotient of an fp group gap> G := F / [a^4, b^4]; gap> procId2 := PqStart( G ); 2 gap> Pq( procId2 : Prime := 2, ClassBound := 3 ); gap> gap> # Now let's get a different p-quotient of the same group gap> Pq( procId2 : Prime := 2, ClassBound := 3, > RedoPcp, > Exponent := 4 ); gap> gap> # Now we'll get a p-quotient of another fp group gap> # which we will redo using the `Relators' option gap> R := [ a^25, Comm(Comm(b, a), a), b^5 ]; [ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ] gap> H := F / R; gap> procId3 := PqStart( H ); 3 gap> Pq( procId3 : Prime := 5, ClassBound := 5, Metabelian ); gap> gap> # Now we redo the previous example using the `Relators' option gap> F := FreeGroup("a", "b"); gap> # `F' was defined for `Relators'. We use the same strings that GAP uses gap> # for printing the free group generators. It is *not* necessary to gap> # predefine: a := F.1; etc. (as it was above). gap> rels := [ "a^25", "[b, a, a]", "b^5" ]; [ "a^25", "[b, a, a]", "b^5" ] gap> R := PqGAPRelators(F, rels); [ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ] gap> H := F / R; gap> Pq( procId3 : Prime := 5, ClassBound := 5, Metabelian, > RedoPcp, > Relators := rels ); gap> gap> # Above we could have just passed `F' (rather than `H'): gap> F := FreeGroup("a", "b"); gap> rels := [ "a^25", "[b, a, a]", "b^5" ]; [ "a^25", "[b, a, a]", "b^5" ] gap> procId4 := PqStart( F ); 4 gap> Pq( procId4 : Prime := 5, ClassBound := 5, Metabelian, > Relators := rels ); gap> ##Example: "Pq-ni" . . . based on manual example illustrating `Pq' usage gap> ##(demonstrates the alternative ways of passing options non-interactively) gap> F := FreeGroup("a", "b"); a := F.1; b := F.2; a b gap> rels := [ "a^25", "[b, a, a]", "b^5" ]; [ "a^25", "[b, a, a]", "b^5" ] gap> R := PqGAPRelators(F, rels); [ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ] gap> H := F / R; gap> # This demonstrates how the options may be passed as a record argument gap> Pq( H, rec( Prime := 5, ClassBound := 5, Metabelian := true ) ); gap> # This demonstrates how the options may be passed as additional arguments gap> Pq( H, "Prime", 5, "ClassBound", 5, "Metabelian" ); gap> ##Example: "PqDescendants-1" . . . based on manual example gap> ##(demonstrates `PqDescendants' usage) gap> F := FreeGroup( "a", "b" ); a := F.1; b := F.2; a b gap> G := PcGroupFpGroup( F / [ a^2, b^2, Comm(b, a) ] ); gap> des := PqDescendants( G : OrderBound := 6, ClassBound := 5 ); [ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] gap> Length(des); 83 gap> List(des, Size); [ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 ] gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 ); [ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5 ] gap> # Executing interactive variant of example: "PqDescendants-1" gap> ##Example: "PqDescendants-1" . . . based on manual example gap> ##(demonstrates `PqDescendants' usage) gap> F := FreeGroup( "a", "b" ); a := F.1; b := F.2; a b gap> G := PcGroupFpGroup( F / [ a^2, b^2, Comm(b, a) ] ); gap> procId := PqStart( G ); 5 gap> des := PqDescendants( procId : OrderBound := 6, ClassBound := 5 ); [ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] gap> Length(des); 83 gap> List(des, Size); [ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 ] gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 ); [ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5 ] gap> PqQuitAll(); gap> ##Example: "PqDescendants-1-i" . . . based on manual example gap> ##(demonstrates `PqSetPQuotientToGroup' usage) gap> F := FreeGroup( "a", "b" ); gap> procId := PqStart( F : Prime := 2 ); 1 gap> Pq( procId : ClassBound := 1 ); gap> PqSetPQuotientToGroup( procId ); gap> des := PqDescendants( procId : OrderBound := 6, ClassBound := 5 ); [ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] gap> Length(des); 83 gap> List(des, Size); [ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 ] gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 ); [ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5 ] gap> ##Example: "PqDescendants-2" . . . based on manual example gap> ##(demonstrates `PqDescendants' usage) gap> ##We compute all capable descendants of order 27 gap> ##of an elementary abelian group of order 9. gap> F := FreeGroup( 2, "g" ); gap> G := PcGroupFpGroup( F / [ F.1^3, F.2^3, Comm(F.1, F.2) ] ); gap> des := PqDescendants( G : OrderBound := 3, ClassBound := 2, > CapableDescendants ); [ , ] gap> List(des, d -> Length( PCentralSeries( d, 3 ) ) - 1 ); [ 2, 2 ] gap> # For comparison let us now compute all descendants gap> PqDescendants( G : OrderBound := 3, ClassBound := 2); [ , , ] gap> # Executing interactive variant of example: "PqDescendants-2" gap> ##Example: "PqDescendants-2" . . . based on manual example gap> ##(demonstrates `PqDescendants' usage) gap> ##We compute all capable descendants of order 27 gap> ##of an elementary abelian group of order 9. gap> F := FreeGroup( 2, "g" ); gap> G := PcGroupFpGroup( F / [ F.1^3, F.2^3, Comm(F.1, F.2) ] ); gap> procId := PqStart( G ); 2 gap> des := PqDescendants( procId : OrderBound := 3, ClassBound := 2, > CapableDescendants ); [ , ] gap> List(des, d -> Length( PCentralSeries( d, 3 ) ) - 1 ); [ 2, 2 ] gap> # For comparison let us now compute all descendants gap> PqDescendants( G : OrderBound := 3, ClassBound := 2); [ , , ] gap> ##Example: "PqDescendants-3" . . . based on manual example gap> ##(demonstrates `PqDescendants' usage) gap> ##We compute all capable descendants of order 25 which have gap> ##exponent-5 class at most 3, exponent 5 and are metabelian. gap> F := FreeGroup( 2, "g" ); gap> G := PcGroupFpGroup( F / [ F.1^5, F.2^5, Comm(F.2, F.1) ] ); gap> des := PqDescendants( G : Metabelian, ClassBound := 3, > Exponent := 5, CapableDescendants ); [ , , ] gap> List(des, d -> Length( PCentralSeries( d, 5 ) ) - 1 ); [ 2, 3, 3 ] gap> List(des, d -> Length( DerivedSeries( d ) ) ); [ 3, 3, 3 ] gap> List(des, d -> Maximum( List( d, Order ) ) ); [ 5, 5, 5 ] gap> # Executing interactive variant of example: "PqDescendants-3" gap> ##Example: "PqDescendants-3" . . . based on manual example gap> ##(demonstrates `PqDescendants' usage) gap> ##We compute all capable descendants of order 25 which have gap> ##exponent-5 class at most 3, exponent 5 and are metabelian. gap> F := FreeGroup( 2, "g" ); gap> G := PcGroupFpGroup( F / [ F.1^5, F.2^5, Comm(F.2, F.1) ] ); gap> procId := PqStart( G ); 3 gap> des := PqDescendants( procId : Metabelian, ClassBound := 3, > Exponent := 5, CapableDescendants ); [ , , ] gap> List(des, d -> Length( PCentralSeries( d, 5 ) ) - 1 ); [ 2, 3, 3 ] gap> List(des, d -> Length( DerivedSeries( d ) ) ); [ 3, 3, 3 ] gap> List(des, d -> Maximum( List( d, Order ) ) ); [ 5, 5, 5 ] gap> PqQuitAll(); gap> ##Example: "PqDescendants-treetraverse-i" . . . based on manual example gap> ##(demonstrates how one may use the p-group generation machinery to gap> ## traverse a descendants tree, by exploring the 3-groups of rank 2 gap> ## and 3-coclass 1 up to 3-class 5.) gap> G := ElementaryAbelianGroup( 9 ); gap> procId := PqStart( G ); 1 gap> # gap> # Below, we use the option StepSize in order to construct descendants gap> # of coclass 1. This is equivalent to setting the StepSize to 1 in gap> # each descendant calculation. gap> # gap> # The elementary abelian group of order 9 has 3 descendants of gap> # 3-class 2 and 3-coclass 1, as the result of the next command gap> # shows. gap> # gap> PqDescendants( procId : StepSize := 1 ); [ , , ] gap> # gap> # Now we will compute the descendants of coclass 1 for each of the gap> # groups above. Then we will compute the descendants of coclass 1 gap> # of each descendant and so on. Note that the pq program keeps gap> # one file for each class at a time. For example, the descendants gap> # calculation for the second group of class 2 overwrites the gap> # descendant file obtained from the first group of class 2. gap> # Hence, we have to traverse the descendants tree in depth first gap> # order. gap> # gap> PqPGSetDescendantToPcp( procId, 2, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 2 gap> PqPGSetDescendantToPcp( procId, 3, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 2 gap> PqPGSetDescendantToPcp( procId, 4, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 2 gap> # gap> # At this point we stop traversing the ``left most'' branch of the gap> # descendants tree and move upwards. gap> # gap> PqPGSetDescendantToPcp( procId, 4, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> PqPGSetDescendantToPcp( procId, 3, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> # gap> # The computations above indicate that the descendants subtree under gap> # the first descendant of the elementary abelian group of order 9 gap> # will have only one path of infinite length. gap> # gap> PqPGSetDescendantToPcp( procId, 2, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 4 gap> # gap> # We get four descendants here, three of which will turn out to be gap> # incapable, i.e., they have no descendants and are terminal nodes gap> # in the descendants tree. gap> # gap> PqPGSetDescendantToPcp( procId, 2, 3 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> # gap> # The third descendant of class three is incapable. Let us return gap> # to the second descendant of class 2. gap> # gap> PqPGSetDescendantToPcp( procId, 2, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 4 gap> PqPGSetDescendantToPcp( procId, 3, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> PqPGSetDescendantToPcp( procId, 3, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> # gap> # We skip the third descendant for the moment ... gap> # gap> PqPGSetDescendantToPcp( procId, 3, 4 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> # gap> # ... and look at it now. gap> # gap> PqPGSetDescendantToPcp( procId, 3, 3 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 6 gap> # gap> # In this branch of the descendant tree we get 6 descendants of class gap> # three. Of those 5 will turn out to be incapable and one will have gap> # 7 descendants. gap> # gap> PqPGSetDescendantToPcp( procId, 4, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> PqPGSetDescendantToPcp( procId, 4, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 7 gap> PqPGSetDescendantToPcp( procId, 4, 3 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> ##Example: "PqDescendantsTreeCoclassOne-16-i" . based on manual example gap> ##(demonstrates usage of `PqDescendantsTreeCoclassOne', by generating gap> ## all descendants of the elementary abelian group of order 16 of gap> ## 2-coclass 1 up to 2-class 15. Most effective in XGAP.) gap> G := ElementaryAbelianGroup( 16 ); gap> procId := PqStart( G ); 2 gap> PqDescendantsTreeCoclassOne( procId : TreeDepth := 15, > CapableDescendants ); #I Number of descendants of group #1;1 to class 2: 1 #I Number of descendants of group #1;1 #1;1 to class 3: 1 #I Number of descendants of group #1;1 #1;1 #1;1 to class 4: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 to class 5: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 to class 6: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 7: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 8: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 9: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 10: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 11: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 12: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 13: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 14: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 15: 1 #I Number of descendants of group #2;1 to class 2: 1 #I Number of descendants of group #1;1 #1;1 to class 3: 1 #I Number of descendants of group #1;1 #1;1 #1;1 to class 4: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 to class 5: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 to class 6: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 7: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 8: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 9: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 10: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 11: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 12: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 13: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 14: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 15: 1 gap> ##Example: "PqDescendantsTreeCoclassOne-25-i" . based on manual example gap> ##(demonstrates usage of `PqDescendantsTreeCoclassOne', by generating gap> ## all descendants of the elementary abelian group of order 25 of gap> ## 5-coclass 1 up to 5-class 15. Most effective in XGAP.) gap> G := ElementaryAbelianGroup( 25 ); gap> procId := PqStart( G ); 3 gap> PqDescendantsTreeCoclassOne( procId : TreeDepth := 15 ); #I Number of descendants of group #1;1 to class 2: 2 #I Number of descendants of group #1;1 #1;1 to class 3: 2 #I Number of descendants of group #1;1 #1;1 #1;1 to class 4: 2 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 to class 5: 2 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 to class 6: 2 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 7: 2 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 8: 2 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 9: 2 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 10: 2 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 11: 2 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 12: 2 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 13: 2 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 14: 2 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 to class 15: 2 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #2;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #2;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #2;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #2;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #2;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #1;1 #2;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #1;1 #2;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 #2;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #1;1 #2;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #2;1 to class 4: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #2;1 to class 3: 0 #I Number of descendants of group #2;1 to class 2: 4 #I Number of descendants of group #2;1 #1;1 to class 3: 9 #I Number of descendants of group #2;1 #1;1 #1;1 to class 4: 21 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #1;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #2;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #3;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #4;1 to class 5: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 to class 5: 12 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #1;1 to class 6: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 to class 6: 14 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #1;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #2;1 to class 7: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 to class 7: 12 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #1;1 to class 8: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 to class 8: 18 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #1;1 to class 9: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 to class 9: 12 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #1;1 to class 10: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 to class 10: 14 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #1;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #2;1 to class 11: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 to class 11: 12 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #1;1 to class 12: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 to class 12: 18 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 to class 13: 12 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #1;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 to class 14: 14 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #2;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #3;1 to class 15: 12 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #6;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #7;1 to class 15: 17 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #2;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #3;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #4;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 to class 14: 18 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #4;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #5;1 to class 15: 49 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #11;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #12;1 to class 15: 26 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #5;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #6;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #7;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #8;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #9;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #10;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #11;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #1;1 #12;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #3;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #4;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #5;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #6;1 to class 13: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 to class 13: 17 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #1;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 to class 14: 49 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #20;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #21;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #28;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #30;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #31;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #32;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #33;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #34;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #35;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #36;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #37;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #38;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #39;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #40;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #41;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #42;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #43;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #44;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #45;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #46;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #47;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #48;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #2;1 #49;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #3;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #4;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #5;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #6;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #7;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #8;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #9;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #10;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 to class 14: 37 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #20;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #21;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #27;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #28;1 to class 15: 8 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #30;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #31;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #32;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #33;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #34;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #35;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #36;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #11;1 #37;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #12;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #13;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #14;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #15;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #16;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #7;1 #17;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #8;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #9;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #10;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #11;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #12;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #13;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #14;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #15;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #16;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #17;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #2;1 #18;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #3;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #4;1 to class 12: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 to class 12: 20 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 to class 13: 26 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #1;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #2;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #3;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #4;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #5;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #6;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #7;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #8;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #9;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #10;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #11;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #12;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #13;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #14;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #15;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #16;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #17;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #18;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #19;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #20;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #21;1 to class 14: 9 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #21;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #21;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #21;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #21;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #21;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #21;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #21;1 #7;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #21;1 #8;1 to class 15: 16 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #21;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #22;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #23;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #24;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #25;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #1;1 #26;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #3;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #4;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #5;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #6;1 to class 13: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 to class 13: 49 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #1;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #2;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #3;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #4;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #5;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #6;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #7;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #8;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #9;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #10;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #11;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #12;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #13;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #14;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #15;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #16;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #17;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #18;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #19;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #20;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #21;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #22;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #23;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #24;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #25;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #26;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #27;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #28;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #29;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #30;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #31;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #32;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #33;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #34;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #35;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #36;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 to class 14: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #7;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #8;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #20;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #21;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #28;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #37;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #38;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #39;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #40;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #41;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #42;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #43;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #44;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #45;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #46;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #47;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #48;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #7;1 #49;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #8;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #9;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #10;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #11;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #12;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #13;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #14;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #15;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #16;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #17;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #18;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #19;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #5;1 #20;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #6;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #7;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #8;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #9;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #10;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #11;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #3;1 #12;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #4;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #5;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #6;1 to class 11: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 to class 11: 17 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #1;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #2;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #3;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #4;1 to class 12: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 to class 12: 49 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #1;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #3;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #4;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #5;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #6;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #7;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #8;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #9;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #10;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #11;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #12;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #13;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #14;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #15;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #16;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #17;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #18;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #19;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #20;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #21;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #22;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #23;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #24;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #25;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #26;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #27;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #28;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #29;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #30;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #31;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #32;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #33;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #34;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #35;1 to class 13: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 to class 13: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #1;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #2;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #3;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #4;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #5;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #6;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #7;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #8;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #9;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #10;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #11;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #12;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #13;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #14;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #15;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #16;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #17;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #18;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #19;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 to class 14: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #17;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #18;1 to class 15: 145 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #20;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #21;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #28;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #20;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #21;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #22;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #23;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #24;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #25;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #26;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #27;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #28;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #36;1 #29;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #37;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #38;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #39;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #40;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #41;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #42;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #43;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #44;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #45;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #46;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #47;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #48;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #5;1 #49;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #6;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #7;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #8;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #9;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #10;1 to class 12: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 to class 12: 39 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #1;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #3;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #4;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #5;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #6;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #7;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #8;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #9;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #10;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #11;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #12;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #13;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #14;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #15;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #16;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #17;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #18;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #19;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #20;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #21;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #22;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #23;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #24;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #25;1 to class 13: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 to class 13: 8 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #1;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #2;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #3;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #4;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #5;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #6;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 to class 14: 15 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #11;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #12;1 to class 15: 37 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #7;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #26;1 #8;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #27;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #28;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #29;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #30;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #31;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #32;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #33;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #34;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #35;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #36;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #37;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #38;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #11;1 #39;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #12;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #13;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #14;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #15;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #16;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #7;1 #17;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #8;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #9;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #10;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #11;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #12;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #13;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #2;1 #14;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #3;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #4;1 to class 10: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 to class 10: 18 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #1;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #2;1 to class 11: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 to class 11: 49 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #1;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #2;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #3;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #4;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #5;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #6;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #7;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #8;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #9;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #10;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #11;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #12;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #13;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #14;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #15;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #16;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #17;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #18;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #19;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #20;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #21;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #22;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #23;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #24;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #25;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #26;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #27;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #28;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #29;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #30;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #31;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #32;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #33;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #34;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #35;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #36;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #37;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #38;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #39;1 to class 12: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 to class 12: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #1;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #3;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #4;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #5;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #6;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #7;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #8;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #9;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #10;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #11;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #12;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #13;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #14;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #15;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #16;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #17;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #18;1 to class 13: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 to class 13: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #1;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #2;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #3;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #4;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #5;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #6;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #7;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #8;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #9;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #10;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #11;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #12;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #13;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #14;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #15;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #16;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #17;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #18;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #19;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 to class 14: 145 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #20;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #21;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #28;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #30;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #31;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #32;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #33;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #34;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #35;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #36;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #37;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #38;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #39;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #40;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #41;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #42;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #43;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #44;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #45;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #46;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #47;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #48;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #49;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #50;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #51;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #52;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #53;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #54;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #55;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #56;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #57;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #58;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #59;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #60;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #61;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #62;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #63;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #64;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #65;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #66;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #67;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #68;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #69;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #70;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #71;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #72;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #73;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #74;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #75;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #76;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #77;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #78;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #79;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #80;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #81;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #82;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #83;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #84;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #85;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #86;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #87;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #88;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #89;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #90;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #91;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #92;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #93;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #94;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #95;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #96;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #97;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #98;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #99;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #100;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #101;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #102;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #103;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #104;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #105;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #106;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #107;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #108;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #109;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #110;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #111;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #112;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #113;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #114;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #115;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #116;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #117;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #118;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #119;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #120;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #121;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #122;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #123;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #124;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #125;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #126;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #127;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #128;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #129;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #130;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #131;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #132;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #133;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #134;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #135;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #136;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #137;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #138;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #139;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #140;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #141;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #142;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #143;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #144;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #20;1 #145;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #21;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #22;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #23;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #24;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #25;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #26;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #27;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #28;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #19;1 #29;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #20;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #21;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #22;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #23;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #24;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #25;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #26;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #27;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #28;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #40;1 #29;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #41;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #42;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #43;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #44;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #45;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #46;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #47;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #48;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #3;1 #49;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #4;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #5;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #6;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #7;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #8;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #9;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #10;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #11;1 to class 11: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 to class 11: 26 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #1;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #2;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #3;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #4;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #5;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #6;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #7;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #8;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #9;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #10;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #11;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #12;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #13;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #14;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #15;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #16;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #17;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #18;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #19;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #20;1 to class 12: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 to class 12: 11 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #1;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #3;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #4;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #5;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #6;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #7;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #8;1 to class 13: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 to class 13: 16 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #1;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #2;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #3;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #4;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #5;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #6;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 to class 14: 38 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #1;1 to class 15: 16 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #4;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #5;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #20;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #21;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #28;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #30;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #31;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #32;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #33;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #34;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #35;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #36;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #37;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #7;1 #38;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #8;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #9;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #10;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #11;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #12;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #13;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #14;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #15;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #9;1 #16;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #10;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #21;1 #11;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #22;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #23;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #24;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #25;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #12;1 #26;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #13;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #14;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #15;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #16;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #17;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #5;1 #18;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #6;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #7;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #8;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #9;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #10;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #11;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #2;1 #12;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #3;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #4;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #5;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #6;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #7;1 to class 9: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 to class 9: 17 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #1;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #2;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #3;1 to class 10: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 to class 10: 49 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #1;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #2;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #3;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #4;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #5;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #6;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #7;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #8;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #9;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #10;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #11;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #12;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #13;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #14;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #15;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #16;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #17;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #18;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #19;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #20;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #21;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #22;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #23;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #24;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #25;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #26;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #27;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #28;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #29;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #30;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #31;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #32;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #33;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #34;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #35;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #36;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #37;1 to class 11: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 to class 11: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #1;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #2;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #3;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #4;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #5;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #6;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #7;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #8;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #9;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #10;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #11;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #12;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #13;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #14;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #15;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #16;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #17;1 to class 12: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 to class 12: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #1;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #3;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #4;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #5;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #6;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #7;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #8;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #9;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #10;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #11;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #12;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #13;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #14;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #15;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #16;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #17;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #18;1 to class 13: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 to class 13: 145 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #1;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #2;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #3;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #4;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #5;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #6;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #7;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #8;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #9;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #10;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #11;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #12;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #13;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #14;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #15;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #16;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #17;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #18;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #19;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #20;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #21;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #22;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #23;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #24;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #25;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #26;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #27;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #28;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #29;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #30;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #31;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #32;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #33;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #34;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #35;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #36;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #37;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #38;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #39;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #40;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #41;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #42;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #43;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #44;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #45;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #46;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #47;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #48;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #49;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #50;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #51;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #52;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #53;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #54;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 to class 14: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #20;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #21;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #28;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #55;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #56;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #57;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #58;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #59;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #60;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #61;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #62;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #63;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 to class 14: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #20;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #21;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #28;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #64;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #65;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #66;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #67;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #68;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #69;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #70;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #71;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #72;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 to class 14: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #20;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #21;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #28;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #73;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #74;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #75;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #76;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #77;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #78;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #79;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #80;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #81;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 to class 14: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #20;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #21;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #28;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #82;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #83;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #84;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #85;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #86;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #87;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #88;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #89;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #90;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 to class 14: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #20;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #21;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #28;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #91;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #92;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #93;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #94;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #95;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #96;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #97;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #98;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #99;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #100;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #101;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #102;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #103;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #104;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #105;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #106;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #107;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #108;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #109;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #110;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #111;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #112;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #113;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #114;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #115;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #116;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #117;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #118;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #119;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #120;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #121;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #122;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #123;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #124;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #125;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #126;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #127;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #128;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #129;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #130;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #131;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #132;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #133;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #134;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #135;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #136;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #137;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #138;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #139;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #140;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #141;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #142;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #143;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #144;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #19;1 #145;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #20;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #21;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #22;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #23;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #24;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #25;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #26;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #27;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #28;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #18;1 #29;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #19;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #20;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #21;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #22;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #23;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #24;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #25;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #26;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #27;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #28;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #38;1 #29;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #39;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #40;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #41;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #42;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #43;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #44;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #45;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #46;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #47;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #48;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #4;1 #49;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #5;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #6;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #7;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #8;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #9;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #10;1 to class 10: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 to class 10: 37 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #1;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #2;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #3;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #4;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #5;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #6;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #7;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #8;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #9;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #10;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #11;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #12;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #13;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #14;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #15;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #16;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #17;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #18;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #19;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #20;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #21;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #22;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #23;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #24;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #25;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #26;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #27;1 to class 11: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 to class 11: 8 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #1;1 to class 12: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 to class 12: 17 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 to class 13: 37 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #1;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #2;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #3;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #4;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #5;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #6;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #7;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #8;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #9;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #10;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #11;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #12;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #13;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #14;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #15;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #16;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #17;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #18;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #19;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #20;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #21;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #22;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #23;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #24;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #25;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #26;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 to class 14: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #12;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #13;1 to class 15: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #20;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #21;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #28;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #27;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #28;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #29;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #30;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #31;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #32;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #33;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #34;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #35;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 to class 14: 27 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #12;1 to class 15: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #13;1 to class 15: 8 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #20;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #21;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #36;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #1;1 #37;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #3;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #4;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #5;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #6;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #7;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #8;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #9;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #10;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #11;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #12;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #13;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #14;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #15;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #16;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #2;1 #17;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #3;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #4;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #5;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #6;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #7;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #28;1 #8;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #29;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #30;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #31;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #32;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #33;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #34;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #35;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #36;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #11;1 #37;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #12;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #13;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #14;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #15;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #16;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #8;1 #17;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #9;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #10;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #11;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #12;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #13;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #14;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #15;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #16;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #17;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #2;1 #18;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #3;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #4;1 to class 8: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 to class 8: 20 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #1;1 to class 9: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 to class 9: 49 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #1;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #2;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #3;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #4;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #5;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #6;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #7;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #8;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #9;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #10;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #11;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #12;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #13;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #14;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #15;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #16;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #17;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #18;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #19;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #20;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #21;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #22;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #23;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #24;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #25;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #26;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #27;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #28;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #29;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #30;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #31;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #32;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #33;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #34;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #35;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #36;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #37;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #38;1 to class 10: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 to class 10: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #1;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #2;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #3;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #4;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #5;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #6;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #7;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #8;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #9;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #10;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #11;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #12;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #13;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #14;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #15;1 to class 11: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 to class 11: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #1;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #2;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #3;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #4;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #5;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #6;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #7;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #8;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #9;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #10;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #11;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #12;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #13;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #14;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #15;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #16;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #17;1 to class 12: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 to class 12: 125 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #1;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #3;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #4;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #5;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #6;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #7;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #8;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #9;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #10;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #11;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #12;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #13;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #14;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #15;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #16;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #17;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #18;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #19;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #20;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #21;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #22;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #23;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #24;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #25;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #26;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #27;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #28;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #29;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #30;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #31;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #32;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #33;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #34;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #35;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #36;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #37;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #38;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #39;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #40;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #41;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #42;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #43;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #44;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #45;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #46;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #47;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #48;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #49;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #50;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #51;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #52;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #53;1 to class 13: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 to class 13: 125 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #1;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #2;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #3;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #4;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #5;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #6;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #7;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #8;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #9;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #10;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #11;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #12;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #13;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #14;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #15;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #16;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #17;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #18;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #19;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #20;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #21;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #22;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #23;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #24;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #25;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #26;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #27;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #28;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #29;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #30;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #31;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #32;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #33;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #34;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #35;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #36;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #37;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #38;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #39;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #40;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #41;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #42;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #43;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #44;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #45;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #46;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #47;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #48;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #49;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #50;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #51;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #52;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #53;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #54;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #55;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #56;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #57;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #58;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #59;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #60;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #61;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #62;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #63;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #64;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #65;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #66;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #67;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #68;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #69;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #70;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #71;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #72;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #73;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #74;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #75;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #76;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #77;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #78;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #79;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #80;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #81;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #82;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #83;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #84;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #85;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #86;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #87;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #88;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #89;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #90;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #91;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #92;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #93;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #94;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #95;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #96;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #97;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #98;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #99;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #100;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #101;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #102;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 to class 14: 125 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #20;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #21;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #28;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #30;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #31;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #32;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #33;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #34;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #35;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #36;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #37;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #38;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #39;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #40;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #41;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #42;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #43;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #44;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #45;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #46;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #47;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #48;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #49;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #50;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #51;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #52;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #53;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #54;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #55;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #56;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #57;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #58;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #59;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #60;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #61;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #62;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #63;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #64;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #65;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #66;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #67;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #68;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #69;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #70;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #71;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #72;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #73;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #74;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #75;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #76;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #77;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #78;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #79;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #80;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #81;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #82;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #83;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #84;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #85;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #86;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #87;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #88;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #89;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #90;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #91;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #92;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #93;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #94;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #95;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #96;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #97;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #98;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #99;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #100;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #101;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #102;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #103;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #104;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #105;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #106;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #107;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #108;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #109;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #110;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #111;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #112;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #113;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #114;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #115;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #116;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #117;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #118;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #119;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #120;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #121;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #122;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #123;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #124;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #103;1 #125;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #104;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #105;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #106;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #107;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #108;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #109;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #110;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #111;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #112;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #113;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #114;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #115;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #116;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #117;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #118;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #119;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #120;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #121;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #122;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #123;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #124;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #54;1 #125;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #55;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #56;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #57;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #58;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #59;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #60;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #61;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #62;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #63;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #64;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #65;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #66;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #67;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #68;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #69;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #70;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #71;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #72;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #73;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #74;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #75;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #76;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #77;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #78;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #79;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #80;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #81;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #82;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #83;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #84;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #85;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #86;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #87;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #88;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #89;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #90;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #91;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #92;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #93;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #94;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #95;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #96;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #97;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #98;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #99;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #100;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #101;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #102;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #103;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #104;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #105;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #106;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #107;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #108;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #109;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #110;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #111;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #112;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #113;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #114;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #115;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #116;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #117;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #118;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #119;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #120;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #121;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #122;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #123;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #124;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #18;1 #125;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #19;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #20;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #21;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #22;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #23;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #24;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #25;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #26;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #27;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #28;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #16;1 #29;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #17;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #18;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #19;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #20;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #21;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #22;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #23;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #24;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #25;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #26;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #27;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #28;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #39;1 #29;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #40;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #41;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #42;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #43;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #44;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #45;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #46;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #47;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #48;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #2;1 #49;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #3;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #4;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #5;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #6;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #7;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #8;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #9;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #10;1 to class 9: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 to class 9: 26 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #1;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #2;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #3;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #4;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #5;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #6;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #7;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #8;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #9;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #10;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #11;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #12;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #13;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #14;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #15;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #16;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #17;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #18;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #19;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #20;1 to class 10: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 to class 10: 9 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #1;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #2;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #3;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #4;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #5;1 to class 11: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 to class 11: 16 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #1;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #2;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #3;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #4;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #5;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #6;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #7;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #8;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #9;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #10;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #11;1 to class 12: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 to class 12: 35 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #1;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #3;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #4;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #5;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #6;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #7;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #8;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #9;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #10;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #11;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #12;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #13;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #14;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #15;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #16;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #17;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #18;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #19;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #20;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #21;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #22;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #23;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #24;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #25;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #26;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #27;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #28;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #29;1 to class 13: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 to class 13: 40 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #1;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #2;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #3;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #4;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #5;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #6;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #7;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #8;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #9;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #10;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #11;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #12;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #13;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #14;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #15;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #16;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #17;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #18;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #19;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #20;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #21;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #22;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #23;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #24;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #25;1 to class 14: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 to class 14: 33 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #1;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #2;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #3;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #4;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #5;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #6;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #7;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #8;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #9;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #10;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #11;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #12;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #13;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #14;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #15;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #16;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #17;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #18;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #19;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #20;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #21;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #22;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #23;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #24;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #25;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #26;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #27;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #28;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #29;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #30;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #31;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #32;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #26;1 #33;1 to class 15: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #27;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #28;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #29;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #30;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #31;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #32;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #33;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #34;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #35;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #36;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #37;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #38;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #39;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #30;1 #40;1 to class 14: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #31;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #32;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #33;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #34;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #12;1 #35;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #13;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #14;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #15;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #6;1 #16;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #7;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #8;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #21;1 #9;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #22;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #23;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #24;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #25;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #11;1 #26;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #12;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #13;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #14;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #15;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #16;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #17;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #18;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #19;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #5;1 #20;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #6;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #7;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #8;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #9;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #10;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #11;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #3;1 #12;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #4;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #5;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #6;1 to class 7: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 to class 7: 17 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #1;1 to class 8: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 to class 8: 39 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #1;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #2;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #3;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #4;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #5;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #6;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #7;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #8;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #9;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #10;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #11;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #12;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #13;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #14;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #15;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #16;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #17;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #18;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #19;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #20;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #21;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #22;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #23;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #24;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #25;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #26;1 to class 9: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 to class 9: 8 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #1;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #2;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #3;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #4;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #5;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #6;1 to class 10: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 to class 10: 15 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #1;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #2;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #3;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #4;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #5;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #6;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #7;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #8;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #9;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #10;1 to class 11: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 to class 11: 37 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #1;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #2;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #3;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #4;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #5;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #6;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #7;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #8;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #9;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #10;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #11;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #12;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #13;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #14;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #15;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #16;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #17;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #18;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #19;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #20;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #21;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #22;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #23;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #24;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #25;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #26;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #27;1 to class 12: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 to class 12: 25 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #1;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #3;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #4;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #5;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #6;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #7;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #8;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #9;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #10;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #11;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #12;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #13;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #14;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #15;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #16;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #17;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #18;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #19;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #20;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #21;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #22;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #23;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #24;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #28;1 #25;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #29;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #30;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #31;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #32;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #33;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #34;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #35;1 to class 12: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 to class 12: 25 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #1;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #3;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #4;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #5;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #6;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #7;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #8;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #9;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #10;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #11;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #12;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #13;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #14;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #15;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #16;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #17;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #18;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #19;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #20;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #21;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #22;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #23;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #24;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #36;1 #25;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #11;1 #37;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #12;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #13;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #14;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #7;1 #15;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #27;1 #8;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #28;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #29;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #30;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #31;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #32;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #33;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #34;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #35;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #36;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #37;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #38;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #2;1 #39;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #3;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #4;1 to class 8: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 to class 8: 49 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #1;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #2;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #3;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #4;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #5;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #6;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #7;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #8;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #9;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #10;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #11;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #12;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #13;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #14;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #15;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #16;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #17;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #18;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #19;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #20;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #21;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #22;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #23;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #24;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #25;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #26;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #27;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #28;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #29;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #30;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #31;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #32;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #33;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #34;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #35;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #36;1 to class 9: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 to class 9: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #1;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #2;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #3;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #4;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #5;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #6;1 to class 10: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 to class 10: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #1;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #2;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #3;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #4;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #5;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #6;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #7;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #8;1 to class 11: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 to class 11: 125 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 to class 12: 125 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #1;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #2;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #3;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #4;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #5;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #6;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #7;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #8;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #9;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #10;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #11;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #12;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #13;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #14;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #15;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #16;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #17;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #18;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #19;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #20;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #21;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #22;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #23;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #24;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #25;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #26;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #27;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #28;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #29;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #30;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #31;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #32;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #33;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #34;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #35;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #36;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #37;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #38;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #39;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #40;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #41;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #42;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #43;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #44;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #45;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #46;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #47;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #48;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #49;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #50;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #51;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #52;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #53;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #54;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #55;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #56;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #57;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #58;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #59;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #60;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #61;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #62;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #63;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #64;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #65;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #66;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #67;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #68;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #69;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #70;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #71;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #72;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #73;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #74;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #75;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #76;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #77;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #78;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #79;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #80;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #81;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #82;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #83;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #84;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #85;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #86;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #87;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #88;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #89;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #90;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #91;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #92;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #93;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #94;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #95;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #96;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #97;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #98;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #99;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #100;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #101;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #102;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #103;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #104;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #105;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #106;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #107;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #108;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #109;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #110;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #111;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #112;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #113;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #114;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #115;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #116;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #117;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #118;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #119;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #120;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #121;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #122;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #123;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #124;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #1;1 #125;1 to class 13: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #2;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #3;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #4;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #5;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #6;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #7;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #8;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #9;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #10;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #11;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #12;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #13;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #14;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #15;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #16;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #17;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #18;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #19;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #20;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #21;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #22;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #23;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #24;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #25;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #26;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #27;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #28;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #29;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #30;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #31;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #32;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #33;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #34;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #35;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #36;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #37;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #38;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #39;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #40;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #41;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #42;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #43;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #44;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #45;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #46;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #47;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #48;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #49;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #50;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #51;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #52;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #53;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #54;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #55;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #56;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #57;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #58;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #59;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #60;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #61;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #62;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #63;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #64;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #65;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #66;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #67;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #68;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #69;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #70;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #71;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #72;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #73;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #74;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #75;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #76;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #77;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #78;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #79;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #80;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #81;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #82;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #83;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #84;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #85;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #86;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #87;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #88;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #89;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #90;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #91;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #92;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #93;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #94;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #95;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #96;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #97;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #98;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #99;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #100;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #101;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #102;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #103;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #104;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #105;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #106;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #107;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #108;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #109;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #110;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #111;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #112;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #113;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #114;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #115;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #116;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #117;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #118;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #119;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #120;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #121;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #122;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #123;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #124;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #9;1 #125;1 to class 12: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #10;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #11;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #12;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #13;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #14;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #15;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #16;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #17;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #18;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #19;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #20;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #21;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #22;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #23;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #24;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #25;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #26;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #27;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #28;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #7;1 #29;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #8;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #9;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #10;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #11;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #12;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #13;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #14;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #15;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #16;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #17;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #18;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #19;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #20;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #21;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #22;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #23;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #24;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #25;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #26;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #27;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #28;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #37;1 #29;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #38;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #39;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #40;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #41;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #42;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #43;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #44;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #45;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #46;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #47;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #48;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #5;1 #49;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #6;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #7;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #8;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #9;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #10;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #11;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #12;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #13;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #14;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #15;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #16;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #7;1 #17;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #8;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #9;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #10;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #11;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #12;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #13;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #2;1 #14;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #3;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #4;1 to class 6: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 to class 6: 18 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #1;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #2;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #3;1 to class 7: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 to class 7: 49 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #1;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #2;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #3;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #4;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #5;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #6;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #7;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #8;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #9;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #10;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #11;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #12;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #13;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #14;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #15;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #16;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #17;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #18;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #19;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #20;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #21;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #22;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #23;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #24;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #25;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #26;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #27;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #28;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #29;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #30;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #31;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #32;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #33;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #34;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #35;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #36;1 to class 8: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 to class 8: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #1;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #2;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #3;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #4;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #5;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #6;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #7;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #8;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #9;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #10;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #11;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #12;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #13;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #14;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #15;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #16;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #17;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #18;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #19;1 to class 9: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 to class 9: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #1;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #2;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #3;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #4;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #5;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #6;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #7;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #8;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #9;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #10;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #11;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #12;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #13;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #14;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #15;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #16;1 to class 10: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 to class 10: 125 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #1;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #2;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #3;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #4;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #5;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #6;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #7;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #8;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #9;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #10;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #11;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #12;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #13;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #14;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #15;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #16;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #17;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #18;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #19;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #20;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #21;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #22;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #23;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #24;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #25;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #26;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #27;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #28;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #29;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #30;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #31;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #32;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #33;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #34;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #35;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #36;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #37;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #38;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #39;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #40;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #41;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #42;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #43;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #44;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #45;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #46;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #47;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #48;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #49;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #50;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #51;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #52;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #53;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #54;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #55;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #56;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #57;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #58;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #59;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #60;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #61;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #62;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #63;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #64;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #65;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #66;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #67;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #68;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #69;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #70;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #71;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #72;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #73;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #74;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #75;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #76;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #77;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #78;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #79;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #80;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #81;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #82;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #83;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #84;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #85;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #86;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #87;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #88;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #89;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #90;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #91;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #92;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #93;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #94;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #95;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #96;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #97;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #98;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #99;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #100;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #101;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #102;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #103;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #104;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #105;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #106;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #107;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #108;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #109;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #110;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #111;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #112;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #113;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #114;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #115;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #116;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #117;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #118;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #119;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #120;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #121;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #122;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #123;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #124;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #17;1 #125;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #18;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #19;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #20;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #21;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #22;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #23;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #24;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #25;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #26;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #27;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #28;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #20;1 #29;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #21;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #22;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #23;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #24;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #25;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #26;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #27;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #28;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #37;1 #29;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #38;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #39;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #40;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #41;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #42;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #43;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #44;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #45;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #46;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #47;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #48;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #4;1 #49;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #5;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #6;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #7;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #8;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #9;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #10;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #11;1 to class 7: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 to class 7: 26 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #1;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #2;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #3;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #4;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #5;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #6;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #7;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #8;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #9;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #10;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #11;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #12;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #13;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #14;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #15;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #16;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #17;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #18;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #19;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #20;1 to class 8: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 to class 8: 11 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #1;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #2;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #3;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #4;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #5;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #6;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #7;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #8;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #9;1 to class 9: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 to class 9: 16 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #1;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #2;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #3;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #4;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #5;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #6;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #7;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #8;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #9;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #10;1 to class 10: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 to class 10: 33 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #1;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #2;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #3;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #4;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #5;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #6;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #7;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #8;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #9;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #10;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #11;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #12;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #13;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #14;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #15;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #16;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #17;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #18;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #19;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #20;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #21;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #22;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #23;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #24;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #25;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #26;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #27;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #28;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #29;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #30;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #31;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #32;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #11;1 #33;1 to class 11: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #12;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #13;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #14;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #15;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #10;1 #16;1 to class 10: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #21;1 #11;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #22;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #23;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #24;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #25;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #12;1 #26;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #13;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #14;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #15;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #16;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #17;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #5;1 #18;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #6;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #7;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #8;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #9;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #10;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #11;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #5;1 #12;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #6;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #7;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #8;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #9;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #10;1 to class 5: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 to class 5: 17 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #1;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #2;1 to class 6: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 to class 6: 49 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #1;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #2;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #3;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #4;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #5;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #6;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #7;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #8;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #9;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #10;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #11;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #12;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #13;1 to class 7: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 to class 7: 29 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #1;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #2;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #3;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #4;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #5;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #6;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #7;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #8;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #9;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #10;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #11;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #12;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #13;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #14;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #15;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #16;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #17;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #18;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #19;1 to class 8: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 to class 8: 25 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #1;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #2;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #3;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #4;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #5;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #6;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #7;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #8;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #9;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #10;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #11;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #12;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #13;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #14;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #15;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #16;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #17;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #18;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #19;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #20;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #21;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #22;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #23;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #24;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #20;1 #25;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #21;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #22;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #23;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #24;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #25;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #26;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #27;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #28;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #14;1 #29;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #15;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #16;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #17;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #18;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #19;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #20;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #21;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #22;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #23;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #24;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #25;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #26;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #27;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #28;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #29;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #30;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #31;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #32;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #33;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #34;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #35;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #36;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #37;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #38;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #39;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #40;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #41;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #42;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #43;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #44;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #45;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #46;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #47;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #48;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #3;1 #49;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #4;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #5;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #6;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #7;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #8;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #9;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #10;1 to class 6: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 to class 6: 37 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #1;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #2;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #3;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #4;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #5;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #6;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #7;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #8;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #9;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #10;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #11;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #12;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #13;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #14;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #15;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #16;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #17;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #18;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #19;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #20;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #21;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #22;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #23;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #24;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #25;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #26;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #27;1 to class 7: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 to class 7: 8 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #1;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #2;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #3;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #4;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #5;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #6;1 to class 8: 0 #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 to class 8: 15 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #1;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #2;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #3;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #4;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #5;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #6;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #7;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #8;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #9;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #10;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #11;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #12;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #13;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #14;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #7;1 #15;1 to class 9: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #28;1 #8;1 to class 8: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #29;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #30;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #31;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #32;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #33;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #34;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #35;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #36;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #11;1 #37;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #12;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #13;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #14;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #15;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #16;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #11;1 #17;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #12;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #13;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #14;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #15;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #16;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #17;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #18;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #19;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #20;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #1;1 #21;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #2;1 to class 4: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #3;1 to class 4: 0 #I Number of descendants of group #2;1 #1;1 #4;1 to class 4: 18 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #1;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #2;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #3;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #4;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #5;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #6;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #7;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #8;1 to class 5: 0 #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 to class 5: 70 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #1;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #2;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #3;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #4;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #5;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #6;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #7;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #8;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #9;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #10;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #11;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #12;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #13;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #14;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #15;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #16;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #17;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #18;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #19;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #20;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #21;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #22;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #23;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #24;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #25;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #26;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #27;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #28;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #29;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #30;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #31;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #32;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #33;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #34;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #35;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #36;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #37;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #38;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #39;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #40;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #41;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #42;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #43;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #44;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #45;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #46;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #47;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #48;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #49;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #50;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #51;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #52;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #53;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #54;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #55;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #56;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #57;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #58;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #59;1 to class 6: 0 #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 to class 6: 33 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #1;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #2;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #3;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #4;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #5;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #6;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #7;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #8;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #9;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #10;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #11;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #12;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #13;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #14;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #15;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #16;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #17;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #18;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #19;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #20;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #21;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #22;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #23;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #24;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #25;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #26;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #27;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #28;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #29;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #30;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #31;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #32;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #60;1 #33;1 to class 7: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #61;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #62;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #63;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #64;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #65;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #66;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #67;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #68;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #69;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #9;1 #70;1 to class 6: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #10;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #11;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #12;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #13;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #14;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #15;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #16;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #17;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #4;1 #18;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #5;1 to class 4: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #6;1 to class 4: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #7;1 to class 4: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #8;1 to class 4: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 #9;1 to class 4: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #2;1 to class 3: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #3;1 to class 3: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #4;1 to class 3: 0 #I group restored from file is incapable #I Number of descendants of group #3;1 to class 2: 0 gap> PqQuitAll(); gap> ##Example: "PqDescendantsTreeCoclassOne-9-i" . based on manual example gap> ##(demonstrates how one may use `PqDescendantsTreeCoclassOne' to gap> ## develop a descendants tree, by generating the 3-groups of rank 2 gap> ## and 3-coclass 1 up to 3-class 5. Most effective in XGAP.) gap> G := ElementaryAbelianGroup( 9 ); gap> procId := PqStart( G ); 1 gap> PqDescendantsTreeCoclassOne( procId : TreeDepth := 5 ); #I Number of descendants of group #1;1 to class 2: 2 #I Number of descendants of group #1;1 #1;1 to class 3: 2 #I Number of descendants of group #1;1 #1;1 #1;1 to class 4: 2 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 to class 5: 2 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #1;1 #2;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #1;1 #2;1 to class 4: 0 #I group restored from file is incapable #I Number of descendants of group #1;1 #2;1 to class 3: 0 #I Number of descendants of group #2;1 to class 2: 4 #I group restored from file is incapable #I Number of descendants of group #2;1 #1;1 to class 3: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #2;1 to class 3: 0 #I Number of descendants of group #2;1 #3;1 to class 3: 6 #I group restored from file is incapable #I Number of descendants of group #2;1 #3;1 #1;1 to class 4: 0 #I Number of descendants of group #2;1 #3;1 #2;1 to class 4: 7 #I Number of descendants of group #2;1 #3;1 #2;1 #1;1 to class 5: 6 #I group restored from file is incapable #I Number of descendants of group #2;1 #3;1 #2;1 #2;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #3;1 #2;1 #3;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #3;1 #2;1 #4;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #3;1 #2;1 #5;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #3;1 #2;1 #6;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #3;1 #2;1 #7;1 to class 5: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #3;1 #3;1 to class 4: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #3;1 #4;1 to class 4: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #3;1 #5;1 to class 4: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #3;1 #6;1 to class 4: 0 #I group restored from file is incapable #I Number of descendants of group #2;1 #4;1 to class 3: 0 #I group restored from file is incapable #I Number of descendants of group #3;1 to class 2: 0 gap> ##Example: "PqEpimorphism" . . . based on `PqEpimorphism' manual example gap> F := FreeGroup (2, "F"); gap> phi := PqEpimorphism( F : Prime := 5, ClassBound := 2 ); [ F1, F2 ] -> [ f1, f2 ] gap> Image( phi ); gap> # Executing interactive variant of example: "PqEpimorphism" gap> ##Example: "PqEpimorphism" . . . based on `PqEpimorphism' manual example gap> F := FreeGroup (2, "F"); gap> procId := PqStart( F ); 2 gap> phi := PqEpimorphism( procId : Prime := 5, ClassBound := 2 ); [ F1, F2 ] -> [ f1, f2 ] gap> Image( phi ); gap> ##Example: "PqPCover" . . . based on `PqPCover' manual example gap> F := FreeGroup("a", "b"); a := F.1; b := F.2; a b gap> PqPCover( F : Prime := 2, ClassBound := 3 ); gap> gap> # Now let's get a p-cover of a p-quotient of an fp group gap> G := F / [a^4, b^4]; gap> PqPCover( G : Prime := 2, ClassBound := 3 ); gap> gap> # Now let's get a p-cover of a different p-quotient of the same group gap> PqPCover( G : Prime := 2, ClassBound := 3, > Exponent := 4 ); gap> gap> # Now we'll get a p-cover of a p-quotient of another fp group gap> # which we will redo using the `Relators' option gap> R := [ a^25, Comm(Comm(b, a), a), b^5 ]; [ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ] gap> H := F / R; gap> PqPCover( H : Prime := 5, ClassBound := 5, Metabelian ); gap> gap> # Now we redo the previous example using the `Relators' option gap> F := FreeGroup("a", "b"); gap> rels := [ "a^25", "[b, a, a]", "b^5" ]; [ "a^25", "[b, a, a]", "b^5" ] gap> PqPCover( F : Prime := 5, ClassBound := 5, Metabelian, > Relators := rels ); gap> # Executing interactive variant of example: "PqPCover" gap> ##Example: "PqPCover" . . . based on `PqPCover' manual example gap> F := FreeGroup("a", "b"); a := F.1; b := F.2; a b gap> procId1 := PqStart( F ); 3 gap> PqPCover( procId1 : Prime := 2, ClassBound := 3 ); gap> gap> # Now let's get a p-cover of a p-quotient of an fp group gap> G := F / [a^4, b^4]; gap> procId2 := PqStart( G ); 4 gap> PqPCover( procId2 : Prime := 2, ClassBound := 3 ); gap> gap> # Now let's get a p-cover of a different p-quotient of the same group gap> PqPCover( procId2 : Prime := 2, ClassBound := 3, > RedoPcp, > Exponent := 4 ); gap> gap> # Now we'll get a p-cover of a p-quotient of another fp group gap> # which we will redo using the `Relators' option gap> R := [ a^25, Comm(Comm(b, a), a), b^5 ]; [ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ] gap> H := F / R; gap> procId3 := PqStart( H ); 5 gap> PqPCover( procId3 : Prime := 5, ClassBound := 5, Metabelian ); gap> gap> # Now we redo the previous example using the `Relators' option gap> F := FreeGroup("a", "b"); gap> rels := [ "a^25", "[b, a, a]", "b^5" ]; [ "a^25", "[b, a, a]", "b^5" ] gap> procId4 := PqStart( F ); 6 gap> PqPCover( procId4 : Prime := 5, ClassBound := 5, Metabelian, > Relators := rels ); gap> PqQuitAll(); gap> ##Example: "PqSupplementInnerAutomorphisms" . . . based on manual example gap> ##Illustrates `PqSupplementInnerAutomorphisms' usage gap> Q := Pq( FreeGroup(2) : Prime := 3, ClassBound := 1 ); gap> des := PqDescendants( Q : StepSize := 1 ); [ , , ] gap> S := PqSupplementInnerAutomorphisms( des[3] ); rec( agAutos := [ ], agOrder := [ 3, 2, 2, 2 ], glAutos := [ Pcgs([ f1, f2, f3 ]) -> [ f1*f2^2, f2, f3 ], Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ], Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ] ] ) gap> A := AutomorphismGroupPGroup( des[3] ); rec( agAutos := [ Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ], Pcgs([ f1, f2, f3 ]) -> [ f1*f2^2, f2, f3 ], Pcgs([ f1, f2, f3 ]) -> [ f1*f3, f2, f3 ], Pcgs([ f1, f2, f3 ]) -> [ f1, f2*f3, f3 ] ], agOrder := [ 2, 3, 3, 3 ], glAutos := [ ], glOper := [ ], glOrder := 1, group := , one := IdentityMapping( ), size := 54 ) gap> # Executing interactive variant of example: "PqSupplementInnerAutomorphisms" gap> ##Example: "PqSupplementInnerAutomorphisms" . . . based on manual example gap> ##Illustrates `PqSupplementInnerAutomorphisms' usage gap> procId := PqStart( FreeGroup(2) ); 1 gap> Q := Pq( procId : Prime := 3, ClassBound := 1 ); gap> PqSetPQuotientToGroup( procId ); gap> des := PqDescendants( procId : StepSize := 1 ); [ , , ] gap> S := PqSupplementInnerAutomorphisms( des[3] ); rec( agAutos := [ ], agOrder := [ 3, 2, 2, 2 ], glAutos := [ Pcgs([ f1, f2, f3 ]) -> [ f1*f2^2, f2, f3 ], Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ], Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ] ] ) gap> A := AutomorphismGroupPGroup( des[3] ); rec( agAutos := [ Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ], Pcgs([ f1, f2, f3 ]) -> [ f1*f2^2, f2, f3 ], Pcgs([ f1, f2, f3 ]) -> [ f1*f3, f2, f3 ], Pcgs([ f1, f2, f3 ]) -> [ f1, f2*f3, f3 ] ], agOrder := [ 2, 3, 3, 3 ], glAutos := [ ], glOper := [ ], glOrder := 1, group := , one := IdentityMapping( ), size := 54 ) gap> ##Example: "R2-5-i" . . . based on: examples/R2-5 gap> ##Construction of R(2,5) gap> F := FreeGroup("a", "b"); gap> procId := PqStart(F : Prime := 5, Exponent := 5); 2 gap> PqPcPresentation(procId : ClassBound := 1, > OutputLevel := 1); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 gap> PqSupplyAutomorphisms(procId, [ [[2,0], > [0,1]], > > [[4,1], > [4,0]] ]); gap> for class in [2 .. 13] do > PqNextClass(procId : QueueFactor := 20); > od; #I Group: [grp] to lower exponent-5 central class 2 has order 5^3 #I Group: [grp] to lower exponent-5 central class 3 has order 5^5 #I Group: [grp] to lower exponent-5 central class 4 has order 5^8 #I Group: [grp] to lower exponent-5 central class 5 has order 5^10 #I Group: [grp] to lower exponent-5 central class 6 has order 5^14 #I Group: [grp] to lower exponent-5 central class 7 has order 5^18 #I Group: [grp] to lower exponent-5 central class 8 has order 5^22 #I Group: [grp] to lower exponent-5 central class 9 has order 5^28 #I Group: [grp] to lower exponent-5 central class 10 has order 5^31 #I Group: [grp] to lower exponent-5 central class 11 has order 5^33 #I Group: [grp] to lower exponent-5 central class 12 has order 5^34 #I Group completed. Lower exponent-5 central class = 12, Order = 5^34 #I Group: [grp] to lower exponent-5 central class 12 has order 5^34 gap> PqSavePcPresentation(procId, ANUPQData.outfile); gap> ##Example: "R2-5-x-i" . . . based on: GrpFP_2_pQuotient7 gap> ##Construction of R(2,5) extended to see how many gap> ##words starting with the first pc generator squared gap> ##need to be considered when doing the exponent law checks gap> F := FreeGroup("a", "b"); gap> procId := PqStart(F : Prime := 5, Exponent := 5); 3 gap> PqPcPresentation(procId : ClassBound := 6, > OutputLevel := 1); #I Lower exponent-5 central series for [grp] #I Group: [grp] to lower exponent-5 central class 1 has order 5^2 #I Group: [grp] to lower exponent-5 central class 2 has order 5^3 #I Group: [grp] to lower exponent-5 central class 3 has order 5^5 #I Group: [grp] to lower exponent-5 central class 4 has order 5^8 #I Group: [grp] to lower exponent-5 central class 5 has order 5^10 #I Group: [grp] to lower exponent-5 central class 6 has order 5^14 gap> PqSetupTablesForNextClass(procId); #I Setup performed for class 7 gap> PqTails(procId, 0); gap> PqDoConsistencyChecks(procId, 0, 0); gap> PqSetOutputLevel(procId, 3); gap> PqDoExponentChecks(procId); #I The quotient relation is .28 #I Generator 28 is trivial #I Collected power 5 of the following word: 1^1 #I The quotient relation is .29 #I Generator 29 is trivial #I Collected power 5 of the following word: 2^1 #I 2 relations of class 1 collected #I The quotient relation is .15 .16 .17^2 .18^3 .19^4 .20^3 .21^3 .22 .23 .24^4 .26^4 .27^2 .28 .29 #I Generator 26 is redundant #I Collected power 5 of the following word: 1^1 2^1 #I 1 relation of class 2 collected #I The quotient relation is .15^3 .16^2 .17 .18^3 .22^4 .23^2 .24 .25^3 .26^4 .27^3 .28 .29^2 #I Generator 25 is redundant #I Collected power 5 of the following word: 1^1 2^2 #I 1 relation of class 3 collected #I The quotient relation is .15 .17 .18^4 .22^4 .23^3 .24 .25 .26^4 .27^3 .28 .29^3 #I Generator 24 is redundant #I Collected power 5 of the following word: 1^1 2^3 #I The quotient relation is .15^2 .28 #I Generator 15 is trivial #I Collected power 5 of the following word: 1^1 5^1 #I The quotient relation is .22 .29 #I Generator 22 is trivial #I Collected power 5 of the following word: 2^1 4^1 #I 3 relations of class 4 collected #I The quotient relation is .16^2 .17 .19 .20^3 .21^3 .23^4 .24^4 .25 .26^4 .27^2 .28 .29^4 #I Generator 23 is redundant #I Collected power 5 of the following word: 1^1 2^4 #I The quotient relation is .15^4 .16^4 .18 .20^4 .21^4 .22^2 .23 .24^4 .26^4 .27^2 .28 .29 #I Generator 21 is redundant #I Collected power 5 of the following word: 1^1 2^1 4^1 #I 2 relations of class 5 collected #I The quotient relation is .15^4 .16^4 .17^3 .18^2 .19^4 .20^3 .21^3 .23^2 .24 .25^3 .26^4 .27^3 .28 .29^2 #I Generator 19 is redundant #I Collected power 5 of the following word: 1^1 2^2 4^1 #I 1 relation of class 6 collected #I The quotient relation is .16^2 .17^3 .19^4 .20^2 .21^2 .23^3 .24 .25 .26^4 .27^3 .28 .29^3 #I Collected power 5 of the following word: 1^1 2^3 4^1 #I 1 relation of class 7 collected gap> PqQuitAll(); gap> ##Example: "StandardPresentation" . . . based on manual example gap> ##(demonstrates `StandardPresentation' usage) gap> F := FreeGroup( "a", "b" ); a := F.1; b := F.2; a b gap> G := F / [a^25, Comm(Comm(b, a), a), b^5]; gap> S := StandardPresentation( G : Prime := 5, ClassBound := 10 ); gap> IsPcGroup( S ); false gap> # if we need to compute with S we should convert it to a pc group gap> Spc := PcGroupFpGroup( S ); gap> gap> H := F / [ a^625, Comm(Comm(Comm(Comm(b, a), a), a), a)/Comm(b, a)^5, > Comm(Comm(b, a), b), b^625 ]; gap> StandardPresentation( H : Prime := 5, ClassBound := 15, > Metabelian ); gap> gap> F4 := FreeGroup( "a", "b", "c", "d" ); gap> a := F4.1; b := F4.2; c := F4.3; d := F4.4; a b c d gap> G4 := F4 / [ b^4, b^2 / Comm(Comm (b, a), a), d^16, > a^16 / (c * d), b^8 / (d * c^4) ]; gap> K := Pq( G4 : Prime := 2, ClassBound := 1 ); gap> StandardPresentation( G4 : pQuotient := K, ClassBound := 14 ); gap> # Executing interactive variant of example: "StandardPresentation" gap> ##Example: "StandardPresentation" . . . based on manual example gap> ##(demonstrates `StandardPresentation' usage) gap> F := FreeGroup( "a", "b" ); a := F.1; b := F.2; a b gap> G := F / [a^25, Comm(Comm(b, a), a), b^5]; gap> procId1 := PqStart( G ); 1 gap> S := StandardPresentation( procId1 : Prime := 5, ClassBound := 10 ); gap> IsPcGroup( S ); false gap> # if we need to compute with S we should convert it to a pc group gap> Spc := PcGroupFpGroup( S ); gap> gap> H := F / [ a^625, Comm(Comm(Comm(Comm(b, a), a), a), a)/Comm(b, a)^5, > Comm(Comm(b, a), b), b^625 ]; gap> procId2 := PqStart( H ); 2 gap> StandardPresentation( procId2 : Prime := 5, ClassBound := 15, > Metabelian ); gap> gap> F4 := FreeGroup( "a", "b", "c", "d" ); gap> a := F4.1; b := F4.2; c := F4.3; d := F4.4; a b c d gap> G4 := F4 / [ b^4, b^2 / Comm(Comm (b, a), a), d^16, > a^16 / (c * d), b^8 / (d * c^4) ]; gap> procId3 := PqStart( G4 ); 3 gap> K := Pq( procId3 : Prime := 2, ClassBound := 1 ); gap> StandardPresentation( procId3 : pQuotient := K, ClassBound := 14 ); gap> ##Example: "StandardPresentation-i" . . . based on manual example gap> ##(demonstrates `StandardPresentation' interactive usage) gap> F4 := FreeGroup( "a", "b", "c", "d" ); gap> a := F4.1; b := F4.2; c := F4.3; d := F4.4; a b c d gap> G4 := F4 / [ b^4, b^2 / Comm(Comm (b, a), a), d^16, > a^16 / (c * d), b^8 / (d * c^4) ]; gap> procId := PqStart( G4 ); 4 gap> Pq( procId : Prime := 2, ClassBound := 1 ); gap> # the computed p-quotient is ``remembered'' and supplies the gap> # `pQuotient' option to `StandardPresentation' ... gap> StandardPresentation( procId : ClassBound := 14 ); gap> # `StandardPresentation' and `EpimorphismStandardPresentation' gap> # behave like attributes, so no computation is done when gap> # either is called again for the same process ... gap> lev := InfoLevel(InfoANUPQ); 1 gap> SetInfoLevel(InfoANUPQ, 2); # To see computation time gap> EpimorphismStandardPresentation( procId : ClassBound := 14 ); [ a, b, c, d ] -> [ f1, f2, f13*f20*f28, f20*f24*f33 ] gap> # No timing data was Info-ed since no computation was done gap> SetInfoLevel(InfoANUPQ, lev); # Restore previous InfoANUPQ level gap> gap> ##Example: "gp-256-SP-Rel-i" . . . based on: isom/gp_256 gap> F := FreeGroup("a", "b"); gap> rels := ["a^4 * [b, a, a, a, a, a]^-1", > "b * a^2 * b^-1 * a^-2 * [b, a, a, a, a, a]^-1", > "b^2 * [b, a, a, a, a, a]^-1" ]; [ "a^4 * [b, a, a, a, a, a]^-1", "b * a^2 * b^-1 * a^-2 * [b, a, a, a, a, a]^-1", "b^2 * [b, a, a, a, a, a]^-1" ] gap> procId := PqStart(F : Prime := 2, Relators := rels); 5 gap> PqSPComputePcpAndPCover(procId : ClassBound := 1); gap> PqSPStandardPresentation(procId, [ [[0,1], > [1,1]], > > [[0,1], > [1,0]] ] > > : # options > ClassBound := 8, > PcgsAutomorphisms); gap> PqQuitAll(); gap> STOP_TEST( "anupqeg.tst", 1000000 ); anupq-3.3.0/tst/bugfix.tst000644 000766 000024 00000003273 14355420571 015775 0ustar00mhornstaff000000 000000 gap> START_TEST( "bugfix.tst" ); gap> SetInfoLevel(InfoANUPQ, 1); # gap> Gpc := PcGroupCode(68146375694269006194915807389502420706068560698170186858702642616271311983852576935888031169808724212486427842287695095990141448242086615015179035279810566253194821421235130797478228790709823744504959547811690291508815054696836089975338898421240232146485972558278354047942767460757806879902001011672205506677433540854819814334041631681046533290684225262516467449392593429627898,3^16); gap> epi := PqEpimorphism(Gpc:Prime:=3);; gap> Gpq := Image(epi); gap> IsBijective(epi); true gap> gen := GeneratorsOfGroup(Gpc);; gap> im := List(gen, x-> Image(epi,x));; gap> hom := GroupHomomorphismByImages(Gpc,Gpq, gen, im); [ f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16 ] -> [ f1, f2, f4, f3, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16 ] # Fix crash in PqDescendantsTreeCoclassOne #54 gap> G := ElementaryAbelianGroup( 16 ); gap> PqDescendantsTreeCoclassOne( PqStart( G ) : TreeDepth := 5, CapableDescendants ); #I Number of descendants of group #1;1 to class 2: 1 #I Number of descendants of group #1;1 #1;1 to class 3: 1 #I Number of descendants of group #1;1 #1;1 #1;1 to class 4: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 to class 5: 1 #I Number of descendants of group #2;1 to class 2: 1 #I Number of descendants of group #1;1 #1;1 to class 3: 1 #I Number of descendants of group #1;1 #1;1 #1;1 to class 4: 1 #I Number of descendants of group #1;1 #1;1 #1;1 #1;1 to class 5: 1 # gap> PqQuitAll(); gap> STOP_TEST( "bugfix.tst", 1 ); anupq-3.3.0/tst/anusp.tst000644 000766 000024 00000044353 14355420571 015643 0ustar00mhornstaff000000 000000 ############################################################################# ## #A anusp.tst ANUPQ package Greg Gamble #A Werner Nickel ## ## Tests `StandardPresentation'. ## This has been derived by conversion of the GAP 3 file of the same name to ## GAP 4. ## The number of GAPstones returned at the end do not mean much as they do ## not measure the time spent by the `pq' binary. ## gap> START_TEST( "Testing ANUPQ `StandardPresentation'" ); gap> SetInfoLevel(InfoANUPQ, 1); gap> D8 := SmallGroup(8, 3); gap> Q8 := SmallGroup(8, 4); gap> S := StandardPresentation( Q8 ); gap> RelatorsOfFpGroup(S); [ f1^2*f3^-1, f2^2*f3^-1, f3^2, f2^-1*f1^-1*f2*f1*f3^-1 ] gap> S := StandardPresentation( D8 ); gap> RelatorsOfFpGroup(S); [ f1^2, f2^2, f3^2, f2^-1*f1^-1*f2*f1*f3^-1 ] gap> IsIsomorphicPGroup( D8, D8 ); true gap> IsIsomorphicPGroup( D8, Q8 ); false gap> F := FreeGroup( "a", "b" );; a := F.1;; b := F.2;; gap> G := F / [ a^625, > Comm(Comm(Comm(Comm(b,a), a), a), a) / Comm(b, a)^5, > Comm(Comm(b,a), b), b^625 ];; gap> H := StandardPresentation( G : Prime := 5, ClassBound := 20, Metabelian ); gap> F := FreeGroup( "a", "b", "c", "d" );; gap> a := F.1;; b := F.2;; c := F.3;; d := F.4;; gap> G := F / [ b^4, b^2 / Comm(Comm (b, a), a), d^16, > a^16 / (c * d), b^8 / (d * c^4) ]; gap> H := Pq( G : Prime := 2, ClassBound := 1 ); gap> hom := GroupHomomorphismByImages( H, H, [H.1, H.2], [H.2, H.1 * H.2] ); [ f1, f2 ] -> [ f2, f1*f2 ] gap> SetIsBijective( hom, true ); gap> A := GroupByGenerators( [hom] );; gap> Order( A ); 3 gap> SetAutomorphismGroup( H, A ); gap> S := StandardPresentation( G : pQuotient := H, ClassBound := 14 ); gap> RelatorsOfFpGroup(S); [ f1^2*f4^-1, f2^2*f5^-1, f3^2*f53^-1*f52^-1*f49^-1*f46^-1*f42^-1*f41^-1*f40^-1*f36^-1*f31^-1*f29^-1*f\ 26^-1*f22^-1*f18^-1*f11^-1*f9^-1*f8^-1*f6^-1, f4^2*f7^-1, f5^2, f6^2*f51^-1*f40^-1*f39^-1*f31^-1*f21^-1*f17^-1*f14^-1*f12^-1*f11^-1*f9^-1, f7^2*f10^-1, f8^2*f53^-1*f52^-1*f50^-1*f48^-1*f46^-1*f44^-1*f43^-1*f42^-1*f41^-1*f36^-1*f\ 35^-1*f34^-1*f31^-1*f30^-1*f29^-1*f25^-1*f22^-1*f21^-1*f17^-1, f9^2*f53^-1*f51^-1*f48^-1*f47^-1*f46^-1*f45^-1*f44^-1*f43^-1*f37^-1*f35^-1*f\ 34^-1*f29^-1*f25^-1*f22^-1*f21^-1*f18^-1*f17^-1*f15^-1*f12^-1, f10^2*f13^-1, f11^2*f52^-1*f50^-1*f49^-1*f48^-1*f46^-1*f45^-1*f44^-1*f43^-1*f41^-1*f40^-1*\ f37^-1*f35^-1*f34^-1*f30^-1*f29^-1*f26^-1*f21^-1, f12^2*f51^-1*f50^-1*f49^-1*f47^-1*f46^-1*f44^-1*f43^-1*f42^-1*f41^-1*f39^-1*\ f37^-1*f36^-1*f35^-1*f31^-1*f29^-1*f26^-1*f25^-1*f21^-1*f19^-1*f15^-1, f13^2*f16^-1, f14^2*f52^-1*f51^-1*f49^-1*f48^-1*f47^-1*f45^-1*f43^-1*f42^-1*f40^-1*f39^-1*\ f36^-1*f34^-1*f31^-1*f25^-1, f15^2*f52^-1*f49^-1*f46^-1*f43^-1*f42^-1*f41^-1*f40^-1*f39^-1*f37^-1*f36^-1*\ f35^-1*f30^-1*f29^-1*f23^-1*f19^-1, f16^2*f20^-1, f17^2*f52^-1*f50^-1*f49^-1*f48^-1*f45^-1*f43^-1*f39^-1*f36^-1*f29^-1, f18^2*f51^-1*f50^-1*f49^-1*f47^-1*f44^-1*f43^-1*f41^-1*f37^-1*f30^-1, f19^2*f53^-1*f51^-1*f49^-1*f47^-1*f46^-1*f45^-1*f41^-1*f40^-1*f39^-1*f34^-1*\ f27^-1*f23^-1, f20^2*f24^-1, f21^2*f51^-1*f48^-1*f44^-1*f41^-1*f34^-1, f22^2*f53^-1*f49^-1*f46^-1*f42^-1*f35^-1, f23^2*f52^-1*f51^-1*f49^-1*f48^-1*f44^-1*f43^-1*f32^-1*f27^-1, f24^2*f28^-1, f25^2*f49^-1*f46^-1*f39^-1, f26^2*f52^-1*f47^-1*f40^-1, f27^2*f48^-1*f38^-1*f32^-1, f28^2*f33^-1, f29^2*f50^-1*f43^-1, f30^2*f52^-1*f44^-1, f31^2*f53^-1*f45^-1, f32^2*f38^-1, f33^2, f34^2*f48^-1, f35^2*f49^-1, f36^2*f50^-1, f37^2*f51^-1, f38^2, f39^2, f40^2, f41^2, f42^2, f43^2, f44^2, f45^2, f46^2, f47^2, f48^2, f49^2, f50^2, f51^2, f52^2, f53^2, f2^-1*f1^-1*f2*f1*f3^-1, f3^-1*f1^-1*f3*f1*f5^-1, f3^-1*f2^-1*f3*f2*f6^-1, f4^-1*f2^-1*f4*f2*f53^-1*f52^-1*f51^-1*f50^-1*f49^-1*f46^-1*f44^-1*f42^-1*f4\ 0^-1*f39^-1*f37^-1*f36^-1*f35^-1*f29^-1*f17^-1*f14^-1*f8^-1*f6^-1*f5^-1, f4^-1*f3^-1*f4*f3*f53^-1*f52^-1*f51^-1*f46^-1*f44^-1*f43^-1*f31^-1*f30^-1*f2\ 5^-1*f22^-1*f21^-1*f17^-1*f8^-1, f5^-1*f1^-1*f5*f1*f8^-1, f5^-1*f3^-1*f5*f3*f53^-1*f52^-1*f50^-1*f48^-1*f47^-1*f46^-1*f45^-1*f40^-1*f3\ 7^-1*f36^-1*f34^-1*f31^-1*f30^-1*f29^-1*f25^-1*f22^-1*f18^-1*f14^-1*f11^-1, f5^-1*f4^-1*f5*f4*f52^-1*f46^-1*f43^-1*f42^-1*f41^-1*f39^-1*f36^-1*f31^-1*f3\ 0^-1*f25^-1*f22^-1*f18^-1*f17^-1*f14^-1, f6^-1*f1^-1*f6*f1*f53^-1*f49^-1*f46^-1*f45^-1*f41^-1*f40^-1*f36^-1*f34^-1*f3\ 1^-1*f29^-1*f26^-1*f22^-1*f21^-1*f17^-1*f11^-1, f6^-1*f2^-1*f6*f2*f9^-1, f6^-1*f3^-1*f6*f3*f52^-1*f50^-1*f47^-1*f46^-1*f44^-1*f43^-1*f40^-1*f37^-1*f3\ 5^-1*f31^-1*f30^-1*f29^-1*f25^-1*f22^-1*f21^-1*f14^-1, f6^-1*f4^-1*f6*f4*f53^-1*f51^-1*f49^-1*f47^-1*f45^-1*f44^-1*f43^-1*f41^-1*f3\ 9^-1*f35^-1*f29^-1*f26^-1*f25^-1*f21^-1*f14^-1, f6^-1*f5^-1*f6*f5*f50^-1*f48^-1*f47^-1*f46^-1*f43^-1*f37^-1*f35^-1*f34^-1*f3\ 1^-1*f30^-1*f29^-1*f26^-1*f22^-1*f18^-1*f17^-1, f7^-1*f2^-1*f7*f2*f53^-1*f51^-1*f48^-1*f44^-1*f43^-1*f42^-1*f40^-1*f39^-1*f3\ 7^-1*f26^-1*f21^-1*f14^-1*f12^-1*f11^-1*f9^-1, f7^-1*f3^-1*f7*f3*f53^-1*f50^-1*f49^-1*f48^-1*f46^-1*f43^-1*f42^-1*f40^-1*f3\ 7^-1*f36^-1*f25^-1*f21^-1, f7^-1*f5^-1*f7*f5*f53^-1*f52^-1*f50^-1*f49^-1*f46^-1*f45^-1*f44^-1*f43^-1*f4\ 2^-1*f40^-1*f39^-1*f34^-1*f29^-1*f25^-1, f7^-1*f6^-1*f7*f6*f53^-1*f52^-1*f51^-1*f50^-1*f49^-1*f48^-1*f47^-1*f44^-1*f4\ 3^-1*f41^-1*f40^-1*f39^-1*f34^-1*f30^-1*f29^-1, f8^-1*f1^-1*f8*f1*f53^-1*f51^-1*f50^-1*f43^-1*f41^-1*f39^-1*f35^-1*f29^-1*f2\ 1^-1*f18^-1*f14^-1, f8^-1*f2^-1*f8*f2*f11^-1, f8^-1*f3^-1*f8*f3*f52^-1*f51^-1*f50^-1*f49^-1*f48^-1*f45^-1*f41^-1*f37^-1*f3\ 6^-1*f35^-1*f34^-1*f31^-1*f30^-1*f26^-1*f14^-1, f8^-1*f4^-1*f8*f4*f52^-1*f49^-1*f48^-1*f44^-1*f42^-1*f40^-1*f37^-1*f36^-1*f3\ 1^-1*f30^-1*f22^-1*f17^-1, f8^-1*f5^-1*f8*f5*f53^-1*f52^-1*f51^-1*f46^-1*f44^-1*f43^-1*f31^-1*f30^-1*f2\ 5^-1*f22^-1*f21^-1*f17^-1, f8^-1*f6^-1*f8*f6*f52^-1*f51^-1*f47^-1*f45^-1*f44^-1*f43^-1*f36^-1*f29^-1*f2\ 6^-1*f22^-1*f21^-1, f8^-1*f7^-1*f8*f7*f49^-1*f46^-1*f44^-1*f29^-1, f9^-1*f1^-1*f9*f1*f53^-1*f50^-1*f49^-1*f48^-1*f47^-1*f44^-1*f39^-1*f34^-1*f3\ 1^-1*f30^-1*f29^-1*f22^-1*f21^-1*f17^-1*f14^-1, f9^-1*f2^-1*f9*f2*f12^-1, f9^-1*f3^-1*f9*f3*f53^-1*f51^-1*f50^-1*f48^-1*f47^-1*f45^-1*f44^-1*f43^-1*f4\ 2^-1*f41^-1*f40^-1*f39^-1*f37^-1*f36^-1*f35^-1*f30^-1*f18^-1, f9^-1*f4^-1*f9*f4*f53^-1*f51^-1*f48^-1*f47^-1*f46^-1*f45^-1*f42^-1*f40^-1*f3\ 9^-1*f37^-1*f36^-1*f35^-1*f30^-1*f17^-1, f9^-1*f5^-1*f9*f5*f53^-1*f50^-1*f49^-1*f46^-1*f45^-1*f41^-1*f39^-1*f34^-1*f3\ 1^-1*f30^-1*f26^-1*f25^-1*f21^-1, f9^-1*f6^-1*f9*f6*f51^-1*f50^-1*f49^-1*f48^-1*f47^-1*f46^-1*f45^-1*f43^-1*f4\ 0^-1*f39^-1*f37^-1*f35^-1*f31^-1*f29^-1*f26^-1, f9^-1*f7^-1*f9*f7*f53^-1*f52^-1*f51^-1*f50^-1*f48^-1*f46^-1*f45^-1*f44^-1*f4\ 3^-1*f39^-1*f35^-1, f9^-1*f8^-1*f9*f8*f53^-1*f48^-1*f45^-1*f44^-1*f41^-1*f35^-1*f34^-1, f10^-1*f2^-1*f10*f2*f53^-1*f52^-1*f51^-1*f49^-1*f47^-1*f46^-1*f45^-1*f44^-1*\ f43^-1*f42^-1*f41^-1*f40^-1*f39^-1*f35^-1*f34^-1*f25^-1*f22^-1*f21^-1*f18^-1*f\ 17^-1*f12^-1, f10^-1*f3^-1*f10*f3*f50^-1*f48^-1*f46^-1*f44^-1*f41^-1*f39^-1*f34^-1, f10^-1*f5^-1*f10*f5*f50^-1*f49^-1*f48^-1*f46^-1*f43^-1*f39^-1, f10^-1*f6^-1*f10*f6*f52^-1*f50^-1*f48^-1*f44^-1*f43^-1, f10^-1*f8^-1*f10*f8*f50^-1*f43^-1, f10^-1*f9^-1*f10*f9*f49^-1, f11^-1*f1^-1*f11*f1*f14^-1, f11^-1*f2^-1*f11*f2*f53^-1*f52^-1*f47^-1*f45^-1*f43^-1*f41^-1*f37^-1*f35^-1*\ f34^-1*f31^-1*f29^-1*f26^-1*f25^-1*f22^-1*f17^-1, f11^-1*f3^-1*f11*f3*f51^-1*f50^-1*f44^-1*f36^-1*f35^-1*f34^-1*f31^-1*f22^-1*\ f21^-1*f18^-1, f11^-1*f4^-1*f11*f4*f52^-1*f51^-1*f49^-1*f48^-1*f47^-1*f45^-1*f43^-1*f42^-1*\ f40^-1*f39^-1*f36^-1*f34^-1*f31^-1*f25^-1*f17^-1, f11^-1*f5^-1*f11*f5*f52^-1*f48^-1*f47^-1*f46^-1*f45^-1*f44^-1*f37^-1*f35^-1*\ f30^-1*f29^-1*f26^-1*f21^-1, f11^-1*f6^-1*f11*f6*f52^-1*f51^-1*f49^-1*f45^-1*f44^-1*f42^-1*f41^-1*f40^-1*\ f39^-1*f35^-1*f29^-1*f26^-1, f11^-1*f7^-1*f11*f7*f53^-1*f52^-1*f51^-1*f45^-1*f44^-1*f35^-1, f11^-1*f9^-1*f11*f9*f49^-1*f47^-1*f46^-1*f45^-1*f44^-1*f43^-1*f41^-1*f40^-1*\ f36^-1*f35^-1*f34^-1, f11^-1*f10^-1*f11*f10*f49^-1, f12^-1*f1^-1*f12*f1*f52^-1*f49^-1*f48^-1*f46^-1*f45^-1*f44^-1*f43^-1*f37^-1*\ f34^-1*f31^-1*f30^-1*f25^-1*f22^-1, f12^-1*f2^-1*f12*f2*f15^-1, f12^-1*f3^-1*f12*f3*f52^-1*f49^-1*f48^-1*f47^-1*f45^-1*f44^-1*f36^-1*f30^-1*\ f29^-1*f26^-1*f25^-1, f12^-1*f4^-1*f12*f4*f52^-1*f51^-1*f49^-1*f47^-1*f46^-1*f41^-1*f40^-1*f37^-1*\ f35^-1*f34^-1*f29^-1*f25^-1, f12^-1*f5^-1*f12*f5*f53^-1*f49^-1*f47^-1*f45^-1*f44^-1*f42^-1*f37^-1*f36^-1*\ f35^-1*f34^-1*f30^-1*f29^-1, f12^-1*f6^-1*f12*f6*f49^-1*f48^-1*f46^-1*f45^-1*f42^-1*f41^-1*f37^-1*f36^-1, f12^-1*f7^-1*f12*f7*f51^-1*f50^-1*f45^-1*f44^-1*f43^-1, f12^-1*f8^-1*f12*f8*f52^-1*f50^-1*f48^-1*f47^-1*f46^-1*f45^-1*f44^-1*f43^-1*\ f40^-1*f36^-1*f35^-1*f34^-1, f12^-1*f9^-1*f12*f9*f52^-1*f50^-1*f48^-1*f43^-1*f41^-1*f40^-1, f12^-1*f11^-1*f12*f11*f52^-1*f51^-1*f48^-1*f43^-1*f41^-1*f40^-1, f13^-1*f2^-1*f13*f2*f53^-1*f52^-1*f46^-1*f45^-1*f44^-1*f41^-1*f39^-1*f34^-1*\ f31^-1*f30^-1*f26^-1*f25^-1*f21^-1*f19^-1*f15^-1, f13^-1*f3^-1*f13*f3*f48^-1, f14^-1*f1^-1*f14*f1*f17^-1, f14^-1*f2^-1*f14*f2*f18^-1, f14^-1*f3^-1*f14*f3*f53^-1*f52^-1*f51^-1*f46^-1*f45^-1*f42^-1*f41^-1*f39^-1*\ f37^-1*f36^-1*f34^-1*f31^-1*f29^-1*f26^-1*f25^-1*f22^-1*f21^-1, f14^-1*f4^-1*f14*f4*f53^-1*f52^-1*f50^-1*f47^-1*f45^-1*f43^-1*f42^-1*f40^-1*\ f34^-1*f31^-1*f30^-1*f25^-1, f14^-1*f5^-1*f14*f5*f53^-1*f52^-1*f51^-1*f50^-1*f48^-1*f47^-1*f46^-1*f42^-1*\ f41^-1*f36^-1*f34^-1*f31^-1*f25^-1, f14^-1*f6^-1*f14*f6*f49^-1*f47^-1*f40^-1*f36^-1*f35^-1*f34^-1*f31^-1, f14^-1*f7^-1*f14*f7*f52^-1*f46^-1*f45^-1*f39^-1, f14^-1*f8^-1*f14*f8*f52^-1*f47^-1*f46^-1*f45^-1*f44^-1*f41^-1*f36^-1*f35^-1*\ f34^-1, f14^-1*f9^-1*f14*f9*f51^-1*f48^-1*f47^-1*f46^-1*f44^-1*f43^-1*f40^-1*f36^-1*\ f35^-1*f34^-1, f14^-1*f11^-1*f14*f11*f52^-1*f50^-1*f49^-1*f47^-1*f46^-1*f45^-1*f44^-1*f43^-\ 1*f40^-1*f36^-1*f35^-1*f34^-1, f14^-1*f12^-1*f14*f12*f50^-1*f49^-1*f48^-1, f15^-1*f1^-1*f15*f1*f52^-1*f51^-1*f48^-1*f46^-1*f45^-1*f44^-1*f43^-1*f42^-1*\ f36^-1*f31^-1*f29^-1*f25^-1, f15^-1*f2^-1*f15*f2*f19^-1, f15^-1*f3^-1*f15*f3*f51^-1*f48^-1*f40^-1*f39^-1*f37^-1*f30^-1, f15^-1*f4^-1*f15*f4*f51^-1*f45^-1*f44^-1*f43^-1*f36^-1*f29^-1, f15^-1*f5^-1*f15*f5*f53^-1*f52^-1*f47^-1*f46^-1*f45^-1*f44^-1*f43^-1*f41^-1*\ f40^-1*f39^-1*f34^-1, f15^-1*f6^-1*f15*f6*f53^-1*f50^-1*f49^-1*f47^-1*f45^-1*f43^-1*f40^-1, f15^-1*f7^-1*f15*f7*f49^-1, f15^-1*f11^-1*f15*f11*f50^-1*f49^-1*f48^-1, f15^-1*f14^-1*f15*f14*f50^-1*f49^-1*f48^-1, f16^-1*f2^-1*f16*f2*f51^-1*f48^-1*f46^-1*f44^-1*f42^-1*f41^-1*f40^-1*f39^-1*\ f37^-1*f36^-1*f35^-1*f30^-1*f29^-1*f19^-1, f17^-1*f1^-1*f17*f1*f53^-1*f49^-1*f48^-1*f47^-1*f43^-1*f42^-1*f40^-1*f39^-1*\ f36^-1*f34^-1*f31^-1*f30^-1*f29^-1*f25^-1, f17^-1*f2^-1*f17*f2*f21^-1, f17^-1*f3^-1*f17*f3*f52^-1*f51^-1*f49^-1*f47^-1*f46^-1*f45^-1*f44^-1*f43^-1*\ f42^-1*f40^-1*f39^-1*f37^-1*f34^-1*f25^-1, f17^-1*f4^-1*f17*f4*f53^-1*f52^-1*f51^-1*f49^-1*f48^-1*f39^-1*f36^-1*f35^-1*\ f29^-1, f17^-1*f5^-1*f17*f5*f52^-1*f51^-1*f50^-1*f47^-1*f45^-1*f44^-1*f41^-1*f39^-1*\ f35^-1*f34^-1*f29^-1, f17^-1*f6^-1*f17*f6*f52^-1*f50^-1*f49^-1*f48^-1*f47^-1*f46^-1*f45^-1*f44^-1*\ f43^-1*f40^-1*f35^-1*f34^-1, f17^-1*f7^-1*f17*f7*f43^-1, f17^-1*f8^-1*f17*f8*f52^-1*f51^-1, f17^-1*f9^-1*f17*f9*f52^-1*f51^-1*f49^-1*f48^-1*f46^-1*f45^-1, f17^-1*f11^-1*f17*f11*f52^-1*f51^-1*f46^-1*f45^-1, f17^-1*f12^-1*f17*f12*f50^-1*f49^-1*f48^-1, f17^-1*f14^-1*f17*f14*f50^-1*f49^-1*f48^-1, f18^-1*f1^-1*f18*f1*f22^-1, f18^-1*f2^-1*f18*f2*f53^-1*f51^-1*f49^-1*f48^-1*f46^-1*f43^-1*f42^-1*f37^-1*\ f36^-1*f34^-1*f31^-1*f30^-1*f25^-1, f18^-1*f3^-1*f18*f3*f53^-1*f51^-1*f49^-1*f48^-1*f46^-1*f45^-1*f44^-1*f43^-1*\ f39^-1*f36^-1*f35^-1*f31^-1*f30^-1*f29^-1*f26^-1, f18^-1*f4^-1*f18*f4*f53^-1*f50^-1*f49^-1*f48^-1*f47^-1*f45^-1*f44^-1*f42^-1*\ f41^-1*f40^-1*f37^-1*f36^-1*f34^-1*f25^-1, f18^-1*f5^-1*f18*f5*f52^-1*f50^-1*f49^-1*f47^-1*f43^-1*f41^-1*f37^-1*f30^-1, f18^-1*f6^-1*f18*f6*f52^-1*f51^-1*f50^-1*f49^-1*f48^-1*f47^-1*f46^-1*f44^-1*\ f43^-1*f40^-1*f37^-1*f36^-1*f35^-1*f34^-1, f18^-1*f7^-1*f18*f7*f51^-1*f45^-1*f44^-1, f18^-1*f8^-1*f18*f8*f52^-1*f50^-1*f49^-1*f47^-1*f46^-1*f45^-1*f44^-1*f43^-1*\ f40^-1*f36^-1*f35^-1*f34^-1, f18^-1*f9^-1*f18*f9*f52^-1*f50^-1*f49^-1*f43^-1*f41^-1*f40^-1, f18^-1*f11^-1*f18*f11*f52^-1*f51^-1*f48^-1*f43^-1*f41^-1*f40^-1, f18^-1*f12^-1*f18*f12*f50^-1*f49^-1*f48^-1, f18^-1*f17^-1*f18*f17*f50^-1*f49^-1*f48^-1, f19^-1*f1^-1*f19*f1*f53^-1*f52^-1*f51^-1*f49^-1*f46^-1*f44^-1*f43^-1*f42^-1*\ f35^-1, f19^-1*f2^-1*f19*f2*f23^-1, f19^-1*f3^-1*f19*f3*f52^-1*f51^-1*f49^-1*f47^-1*f46^-1*f43^-1*f40^-1*f39^-1, f19^-1*f4^-1*f19*f4*f51^-1*f50^-1*f48^-1*f46^-1*f39^-1, f19^-1*f5^-1*f19*f5*f52^-1*f51^-1*f49^-1*f44^-1*f43^-1, f19^-1*f6^-1*f19*f6*f51^-1*f50^-1, f19^-1*f8^-1*f19*f8*f50^-1*f49^-1*f48^-1, f20^-1*f2^-1*f20*f2*f53^-1*f52^-1*f47^-1*f46^-1*f45^-1*f44^-1*f43^-1*f41^-1*\ f40^-1*f39^-1*f34^-1*f27^-1*f23^-1, f21^-1*f1^-1*f21*f1*f25^-1, f21^-1*f2^-1*f21*f2*f52^-1*f50^-1*f48^-1*f47^-1*f45^-1*f39^-1*f35^-1*f29^-1, f21^-1*f3^-1*f21*f3*f53^-1*f51^-1*f50^-1*f49^-1*f48^-1*f43^-1*f35^-1*f34^-1*\ f30^-1, f21^-1*f4^-1*f21*f4*f49^-1*f46^-1*f39^-1*f29^-1, f21^-1*f5^-1*f21*f5*f51^-1*f50^-1*f49^-1*f44^-1*f43^-1*f40^-1*f34^-1, f21^-1*f6^-1*f21*f6*f52^-1*f51^-1*f49^-1*f46^-1*f45^-1*f43^-1*f40^-1, f21^-1*f7^-1*f21*f7*f49^-1, f21^-1*f8^-1*f21*f8*f46^-1*f45^-1, f21^-1*f9^-1*f21*f9*f52^-1*f51^-1*f50^-1*f49^-1*f48^-1, f21^-1*f11^-1*f21*f11*f52^-1*f51^-1, f21^-1*f14^-1*f21*f14*f50^-1*f49^-1*f48^-1, f22^-1*f1^-1*f22*f1*f50^-1*f49^-1*f48^-1*f47^-1*f46^-1*f45^-1*f44^-1*f41^-1*\ f40^-1*f37^-1*f36^-1*f35^-1*f34^-1*f25^-1, f22^-1*f2^-1*f22*f2*f26^-1, f22^-1*f3^-1*f22*f3*f52^-1*f51^-1*f47^-1*f46^-1*f44^-1*f43^-1*f42^-1*f40^-1*\ f37^-1*f35^-1*f34^-1*f31^-1*f30^-1, f22^-1*f4^-1*f22*f4*f52^-1*f49^-1*f46^-1*f45^-1*f42^-1*f39^-1*f29^-1, f22^-1*f5^-1*f22*f5*f53^-1*f51^-1*f50^-1*f47^-1*f46^-1*f44^-1*f43^-1*f42^-1*\ f40^-1*f36^-1*f34^-1, f22^-1*f6^-1*f22*f6*f49^-1*f43^-1*f42^-1*f41^-1*f40^-1, f22^-1*f7^-1*f22*f7*f50^-1*f49^-1, f22^-1*f8^-1*f22*f8*f52^-1*f51^-1*f46^-1*f45^-1, f22^-1*f9^-1*f22*f9*f46^-1*f45^-1, f22^-1*f11^-1*f22*f11*f50^-1*f49^-1*f48^-1*f46^-1*f45^-1, f22^-1*f14^-1*f22*f14*f50^-1*f49^-1*f48^-1, f23^-1*f1^-1*f23*f1*f53^-1*f46^-1*f45^-1*f43^-1*f39^-1, f23^-1*f2^-1*f23*f2*f27^-1, f23^-1*f3^-1*f23*f3*f52^-1*f51^-1*f44^-1, f23^-1*f4^-1*f23*f4*f43^-1, f23^-1*f5^-1*f23*f5*f48^-1, f24^-1*f2^-1*f24*f2*f52^-1*f51^-1*f49^-1*f48^-1*f44^-1*f43^-1*f27^-1, f25^-1*f1^-1*f25*f1*f29^-1, f25^-1*f2^-1*f25*f2*f30^-1, f25^-1*f3^-1*f25*f3*f51^-1*f50^-1*f45^-1*f43^-1*f40^-1*f39^-1*f35^-1*f34^-1, f25^-1*f4^-1*f25*f4*f52^-1*f51^-1*f46^-1*f44^-1*f43^-1*f39^-1, f25^-1*f5^-1*f25*f5*f50^-1*f48^-1*f46^-1*f39^-1, f25^-1*f6^-1*f25*f6*f52^-1*f51^-1*f50^-1*f49^-1*f48^-1*f45^-1, f25^-1*f8^-1*f25*f8*f50^-1*f49^-1*f48^-1, f25^-1*f9^-1*f25*f9*f50^-1*f49^-1*f48^-1, f25^-1*f11^-1*f25*f11*f50^-1*f49^-1*f48^-1, f26^-1*f1^-1*f26*f1*f31^-1, f26^-1*f2^-1*f26*f2*f53^-1*f52^-1*f51^-1*f50^-1*f46^-1*f44^-1*f43^-1*f42^-1*\ f36^-1*f34^-1, f26^-1*f3^-1*f26*f3*f48^-1*f44^-1*f42^-1*f41^-1*f39^-1*f37^-1, f26^-1*f4^-1*f26*f4*f53^-1*f45^-1*f36^-1, f26^-1*f5^-1*f26*f5*f52^-1*f50^-1*f49^-1*f47^-1*f43^-1*f41^-1, f26^-1*f6^-1*f26*f6*f52^-1*f51^-1*f47^-1*f46^-1*f45^-1, f26^-1*f8^-1*f26*f8*f50^-1*f49^-1*f48^-1*f46^-1*f45^-1, f26^-1*f9^-1*f26*f9*f52^-1*f51^-1, f26^-1*f11^-1*f26*f11*f52^-1*f51^-1, f27^-1*f1^-1*f27*f1*f49^-1, f27^-1*f2^-1*f27*f2*f32^-1, f28^-1*f2^-1*f28*f2*f48^-1*f38^-1*f32^-1, f29^-1*f1^-1*f29*f1*f52^-1*f51^-1*f50^-1*f46^-1*f44^-1*f39^-1, f29^-1*f2^-1*f29*f2*f34^-1, f29^-1*f3^-1*f29*f3*f52^-1*f39^-1, f29^-1*f4^-1*f29*f4*f50^-1*f49^-1*f43^-1, f29^-1*f5^-1*f29*f5*f49^-1*f48^-1*f43^-1, f29^-1*f6^-1*f29*f6*f49^-1*f48^-1, f30^-1*f1^-1*f30*f1*f35^-1, f30^-1*f2^-1*f30*f2*f52^-1*f50^-1*f48^-1*f46^-1*f44^-1*f39^-1, f30^-1*f3^-1*f30*f3*f52^-1*f51^-1*f50^-1*f49^-1*f45^-1*f44^-1*f43^-1*f40^-1, f30^-1*f4^-1*f30*f4*f52^-1*f50^-1*f46^-1*f45^-1*f39^-1, f30^-1*f5^-1*f30*f5*f52^-1*f44^-1, f30^-1*f6^-1*f30*f6*f51^-1*f50^-1*f49^-1*f48^-1, f30^-1*f8^-1*f30*f8*f50^-1*f49^-1*f48^-1, f31^-1*f1^-1*f31*f1*f36^-1, f31^-1*f2^-1*f31*f2*f37^-1, f31^-1*f3^-1*f31*f3*f53^-1*f50^-1*f47^-1*f46^-1*f42^-1*f41^-1, f31^-1*f4^-1*f31*f4*f53^-1*f51^-1*f50^-1*f49^-1*f48^-1*f45^-1, f31^-1*f5^-1*f31*f5*f53^-1*f50^-1*f49^-1*f48^-1*f45^-1, f31^-1*f6^-1*f31*f6*f53^-1*f52^-1*f51^-1, f32^-1*f2^-1*f32*f2*f38^-1, f33^-1*f2^-1*f33*f2*f38^-1, f34^-1*f1^-1*f34*f1*f39^-1, f34^-1*f2^-1*f34*f2*f49^-1*f43^-1, f34^-1*f3^-1*f34*f3*f49^-1*f48^-1*f44^-1, f34^-1*f4^-1*f34*f4*f43^-1, f34^-1*f5^-1*f34*f5*f48^-1, f35^-1*f1^-1*f35*f1*f52^-1*f50^-1*f49^-1*f46^-1*f45^-1*f39^-1, f35^-1*f2^-1*f35*f2*f40^-1, f35^-1*f3^-1*f35*f3*f52^-1*f49^-1*f48^-1*f45^-1*f44^-1, f35^-1*f4^-1*f35*f4*f43^-1, f35^-1*f5^-1*f35*f5*f50^-1*f48^-1, f36^-1*f1^-1*f36*f1*f53^-1*f51^-1*f49^-1*f48^-1*f45^-1, f36^-1*f2^-1*f36*f2*f41^-1, f36^-1*f3^-1*f36*f3*f52^-1*f51^-1*f46^-1, f36^-1*f4^-1*f36*f4*f50^-1, f36^-1*f5^-1*f36*f5*f50^-1, f37^-1*f1^-1*f37*f1*f42^-1, f37^-1*f2^-1*f37*f2*f53^-1*f51^-1*f50^-1*f49^-1*f48^-1*f45^-1, f37^-1*f3^-1*f37*f3*f53^-1*f51^-1*f50^-1*f47^-1, f37^-1*f4^-1*f37*f4*f52^-1*f51^-1*f50^-1*f49^-1*f48^-1*f45^-1, f37^-1*f5^-1*f37*f5*f51^-1, f39^-1*f1^-1*f39*f1*f43^-1, f39^-1*f2^-1*f39*f2*f44^-1, f39^-1*f3^-1*f39*f3*f49^-1*f48^-1, f40^-1*f1^-1*f40*f1*f45^-1, f40^-1*f2^-1*f40*f2*f50^-1*f48^-1, f40^-1*f3^-1*f40*f3*f51^-1, f40^-1*f4^-1*f40*f4*f50^-1, f41^-1*f1^-1*f41*f1*f46^-1, f41^-1*f2^-1*f41*f2*f50^-1, f41^-1*f3^-1*f41*f3*f52^-1, f41^-1*f4^-1*f41*f4*f50^-1, f42^-1*f1^-1*f42*f1*f52^-1*f51^-1*f50^-1*f49^-1*f48^-1*f45^-1, f42^-1*f2^-1*f42*f2*f47^-1, f42^-1*f3^-1*f42*f3*f53^-1*f51^-1, f42^-1*f4^-1*f42*f4*f50^-1, f43^-1*f2^-1*f43*f2*f48^-1, f44^-1*f1^-1*f44*f1*f49^-1, f45^-1*f1^-1*f45*f1*f50^-1, f45^-1*f2^-1*f45*f2*f51^-1, f46^-1*f1^-1*f46*f1*f50^-1, f46^-1*f2^-1*f46*f2*f52^-1, f47^-1*f1^-1*f47*f1*f53^-1 ] gap> STOP_TEST( "anusp.tst", 1000000 ); anupq-3.3.0/tst/test4.sp000644 000766 000024 00000000306 14355420571 015356 0ustar00mhornstaff000000 000000 #Standard Presentation input file 1 prime 5 class 1 metabelian generators {g1, g2, } relations {g1^25, g1^-1*g2^-1*g1*g2*g1^-1*g2^-1*g1^-1*g2*g1^2, g2^5, } ; 2 SPRES 5 2 2 0 0 1 4 1 4 0 0 0 anupq-3.3.0/tst/test1.pga000644 000766 000024 00000001115 14355420571 015477 0ustar00mhornstaff000000 000000 #all groups with lower exponent-3 series of shape 2-2-3-1 1 #set up group presentation c3c3 3 1 1 {a, b} {} 0 7 #compute its 3-covering group 9 #enter p-group generation 1 #supply automorphisms 5 #number of automorphisms 2 0 0 2 0 2 1 0 1 2 2 2 1 0 2 1 2 0 0 1 0 #number of soluble automorphisms 5 #iteration option 4 #class bound 0 #all descendants? 0 #constant step size 2 3 1 1 #PAG-generating sequence 1 #default algorithm? 1 #default output 0 #exit 0 #exit anupq-3.3.0/tst/test2.pga000644 000766 000024 00000001065 14355420571 015504 0ustar00mhornstaff000000 000000 #all descendants of c2 x c2 having order at most 2^5 1 #set up group presentation c2c2 2 1 1 {a, b} {} 0 7 #compute its 2-covering group 9 #enter p-group generation 1 #supply automorphisms 2 #number of automorphisms 0 1 1 1 0 1 1 0 0 #number of soluble automorphisms 5 #iteration option 7 #class bound 1 #all descendants? 1 #set order bound? 5 #order bound 1 #PAG-generating sequence 1 #default algorithm? 1 #default output 0 #exit 0 #exit anupq-3.3.0/tst/test3.pga000644 000766 000024 00000001240 14355420571 015500 0ustar00mhornstaff000000 000000 #2-generator exponent 5 groups 1 #set up group presentation c5c5 5 1 1 {a, b} {} 0 7 #compute its 5-covering group 9 #enter p-group generation 1 #supply automorphisms 2 #number of automorphisms 2 0 0 1 4 1 4 0 0 #number of soluble automorphisms 5 #iteration option 5 #class bound 1 #all descendants? 0 #order bound? 0 #PAG-generating sequence 0 #default algorithm? 0 #rank of initial segment 0 #process terminal descendants completely 5 #exponent law to enforce 0 #metabelian law to enforce 1 #default output 0 #exit 0 #exit anupq-3.3.0/tst/make_anupqeg000755 000766 000024 00000002131 14355420571 016330 0ustar00mhornstaff000000 000000 #!/usr/bin/perl -w $gap = "../../../bin/gap.sh"; print "Building GAP pre-script file\n"; system("$gap -A -x 80 < anupqeg.tsk > /dev/null"); print "GAP pre-script in anupqeg.tst-new\n"; open(IN, "anupqeg.tst-new0"); $logto = 0; print "Building GAP script file\n"; print OUT "LoadPackage( \"anupq\" );"; print OUT "LogTo(\"anupqeg.tst-new\");\n"; while () { if (!$logto) { if (/LogTo/) { $logto = 1; next; } elsif (s/^gap> //) { print OUT $_; } } else { s/^#I /#/; print OUT $_; } } print OUT "LogTo();\nquit;\n"; close OUT; close IN; print "GAP script in anupqeg.tst-new0\n"; print "Creating new anupqeg.tst file\n"; system("$gap -N -A -x 80 < anupqeg.tst-new0 > /dev/null"); open(IN, "anupqeg.tst-new0"); $start = 0; while () { if (!$start) { if (/START/) { $start = 1; } else { s/^gap> //; } print OUT $_; } else { print OUT $_; last if (/STOP/); } } close OUT; close IN; print "Pre-result in anupqeg.tst-new\n"; print "Result in anupqeg.tst-new0\n"; anupq-3.3.0/tst/anupqsmgp.tst000644 000766 000024 00000011333 14355420571 016520 0ustar00mhornstaff000000 000000 ############################################################################# ## #A anupqsmgp.tst ANUPQ package Greg Gamble ## ## Tests the ANUPQ with some groups from the SmallGroups library. ## Execute this file with `Test( "anupqsmgp.tst" );'. ## The number of GAPstones returned at the end do not mean much as they do ## not measure the time spent by the `pq' binary. ## The tests made are based on some examples provided by Bettina Eick. ## gap> START_TEST( "Testing ANUPQ with some SmallGroup groups" ); gap> SetInfoLevel(InfoANUPQ, 1); gap> G := SmallGroup(8, 3); gap> PqDescendants( G : OrderBound := 16 ); [ , , ] gap> H := StandardPresentation(G : Prime := 2); gap> MultiplicatorRank(H); 3 gap> NuclearRank(H); 1 gap> G := SmallGroup(4, 2); gap> PqDescendants( G ); [ , , , , , , ] gap> G := SmallGroup(8, 4); gap> PqDescendants(G); [ ] gap> G := SmallGroup(64, 8); gap> PqPCover(G); gap> PqDescendants(G); [ , , , , , , , , , , , , , , , , , , , , , , , , , , , ] gap> id := PqStart(G);; gap> PqPCover(id); gap> PqDescendants(id); [ , , , , , , , , , , , , , , , , , , , , , , , , , , , ] gap> MultiplicatorRank(G); 4 gap> NuclearRank(G); 2 gap> G := SmallGroup(4, 2); gap> d := PqDescendants( G ){[1..3]}; [ , , ] gap> List(d, MultiplicatorRank); [ 3, 3, 2 ] gap> List(d, NuclearRank); [ 1, 1, 0 ] gap> G := SmallGroup(8, 4); gap> H := StandardPresentation( G ); gap> PqQuitAll(); gap> STOP_TEST( "anupqsmgp.tst", 1000000 ); anupq-3.3.0/tst/anupga.tst000644 000766 000024 00000006714 14355420571 015767 0ustar00mhornstaff000000 000000 ############################################################################# ## #A anupga.tst ANUPQ package Werner Nickel ## ## A test file for the GAP 4 interface to the ANUPQ p-group generation ## algorithm. ## Execute this file with `Test( "anupga.tst" );'. ## The number of GAPstones returned at the end do not mean much as they do ## not measure the time spent by the `pq' binary. ## *Note:* `PqDescendants' now computes *all* descendants by default, not ## just the capable ones. ## gap> START_TEST( "Testing ANUPQ p-group generation" ); gap> SetInfoLevel(InfoANUPQ, 1); gap> F := FreeGroup(2); gap> G := PcGroupFpGroup( F / [ F.1^2, F.2^2, Comm(F.1,F.2) ] ); gap> a1 := GroupHomomorphismByImages( G, G, [G.1, G.2], [G.2, G.1 * G.2] ); [ f1, f2 ] -> [ f2, f1*f2 ] gap> a2 := GroupHomomorphismByImages( G, G, [G.1, G.2], [G.2, G.1] ); [ f1, f2 ] -> [ f2, f1 ] gap> SetAutomorphismGroup( G, Group( a1, a2 ) ); gap> L := PqDescendants( G, "OrderBound", 4, "ClassBound", 4 ); [ , , , , , , , , , , ] gap> List( L, P->Rules(ElementsFamily(FamilyObj(P))!.rewritingSystem) ); [ [ f1^2*f3^-1, f2^2, f3^2, f1^-1*f2*f1*f2^-1, f1^-1*f3*f1*f3^-1, f2^-1*f3*f2*f3^-1 ], [ f1^2, f2^2, f3^2, f1^-1*f2*f1*f3^-1*f2^-1, f1^-1*f3*f1*f3^-1, f2^-1*f3*f2*f3^-1 ], [ f1^2*f3^-1, f2^2*f3^-1, f3^2, f1^-1*f2*f1*f3^-1*f2^-1, f1^-1*f3*f1*f3^-1, f2^-1*f3*f2*f3^-1 ], [ f1^2*f3^-1, f2^2*f4^-1, f3^2, f4^2, f1^-1*f2*f1*f2^-1, f1^-1*f3*f1*f3^-1, f2^-1*f3*f2*f3^-1, f1^-1*f4*f1*f4^-1, f2^-1*f4*f2*f4^-1, f3^-1*f4*f3*f4^-1 ], [ f1^2*f4^-1, f2^2, f3^2, f4^2, f1^-1*f2*f1*f3^-1*f2^-1, f1^-1*f3*f1*f3^-1, f2^-1*f3*f2*f3^-1, f1^-1*f4*f1*f4^-1, f2^-1*f4*f2*f4^-1, f3^-1*f4*f3*f4^-1 ], [ f1^2*f4^-1, f2^2*f3^-1, f3^2, f4^2, f1^-1*f2*f1*f3^-1*f2^-1, f1^-1*f3*f1*f3^-1, f2^-1*f3*f2*f3^-1, f1^-1*f4*f1*f4^-1, f2^-1*f4*f2*f4^-1, f3^-1*f4*f3*f4^-1 ], [ f1^2*f3^-1, f2^2, f3^2*f4^-1, f4^2, f1^-1*f2*f1*f2^-1, f1^-1*f3*f1*f3^-1, f2^-1*f3*f2*f3^-1, f1^-1*f4*f1*f4^-1, f2^-1*f4*f2*f4^-1, f3^-1*f4*f3*f4^-1 ], [ f1^2*f3^-1, f2^2, f3^2*f4^-1, f4^2, f1^-1*f2*f1*f4^-1*f2^-1, f1^-1*f3*f1*f3^-1, f2^-1*f3*f2*f3^-1, f1^-1*f4*f1*f4^-1, f2^-1*f4*f2*f4^-1, f3^-1*f4*f3*f4^-1 ], [ f1^2, f2^2, f3^2*f4^-1, f4^2, f1^-1*f2*f1*f3^-1*f2^-1, f1^-1*f3*f1*f4^-1*f3^-1, f2^-1*f3*f2*f4^-1*f3^-1, f1^-1*f4*f1*f4^-1, f2^-1*f4*f2*f4^-1, f3^-1*f4*f3*f4^-1 ], [ f1^2*f4^-1, f2^2, f3^2*f4^-1, f4^2, f1^-1*f2*f1*f3^-1*f2^-1, f1^-1*f3*f1*f4^-1*f3^-1, f2^-1*f3*f2*f4^-1*f3^-1, f1^-1*f4*f1*f4^-1, f2^-1*f4*f2*f4^-1, f3^-1*f4*f3*f4^-1 ], [ f1^2*f4^-1, f2^2*f4^-1, f3^2*f4^-1, f4^2, f1^-1*f2*f1*f3^-1*f2^-1, f1^-1*f3*f1*f4^-1*f3^-1, f2^-1*f3*f2*f4^-1*f3^-1, f1^-1*f4*f1*f4^-1, f2^-1*f4*f2*f4^-1, f3^-1*f4*f3*f4^-1 ] ] gap> List( L, P->Size(AutomorphismGroup(P)) ); [ 8, 8, 24, 96, 32, 32, 16, 16, 32, 16, 32 ] gap> STOP_TEST( "anupga.tst", 1000000 ); anupq-3.3.0/tst/anupqeg.tsk000644 000766 000024 00000003165 14355420571 016140 0ustar00mhornstaff000000 000000 ## anupqeg.tst skeleton ## To create new `anupqeg.tst' do: ## make_anupqeg LoadPackage("anupq"); LogTo("anupqeg.tst-new0"); ############################################################################# ## #A anupqeg.tst ANUPQ package Greg Gamble ## ## Tests all but one of the ANUPQ examples. ## Execute this file with `Test( "anupqeg.tst" );'. ## This is a *big* test, taking some 40 minutes on a *fast* (1GHz) machine. ## The number of GAPstones returned at the end do not mean much as they do ## not measure the time spent by the `pq' binary. ## START_TEST( "Testing ANUPQ examples" ); SetInfoLevel(InfoANUPQ, 1); examples := AllPqExamples(); RemoveSet(examples, "EpimorphismStandardPresentation-i"); nexamples := Length( examples ); LogTo(); Exec("grep -e \"^gap> \" anupqeg.tst-new0 > anupqeg.tst-new"); for i in [1..nexamples] do example := examples[i]; PqExample( example, "anupqeg.tst-new0" ); ResetOptionsStack(); Exec( "grep -v -e \"^#I [^#]\" anupqeg.tst-new0 >> anupqeg.tst-new" ); len := Length(example); if not( example{[len - 1 .. len]} in ["-i", ".g", "ni"] ) then AppendTo("anupqeg.tst-new", "# Executing interactive variant of example: \"", example, "\"\n"); PqExample( example, PqStart, "anupqeg.tst-new0" ); ResetOptionsStack(); Exec( "grep -v -e \"^#I [^#]\" anupqeg.tst-new0 >> anupqeg.tst-new" ); fi; if i mod 3 = 0 then AppendTo("anupqeg.tst-new", "PqQuitAll();\n"); fi; od; AppendTo("anupqeg.tst-new", "STOP_TEST( \"anupqeg.tst\", 1000000 );\n"); quit; anupq-3.3.0/tst/testinstall.g000644 000766 000024 00000000463 14355420571 016471 0ustar00mhornstaff000000 000000 LoadPackage( "anupq" ); dirs := DirectoriesPackageLibrary( "anupq", "tst" ); tests := [ "anupga.tst", "anupq1eg.tst", "anupqsmgp.tst", "anusp.tst", "bugfix.tst", #"anupqeg.tst", # VERY slow ]; tests := List(tests, f -> Filename(dirs,f)); TestDirectory(tests, rec(exitGAP := true)); anupq-3.3.0/tst/testall.g000644 000766 000024 00000000170 14355420571 015566 0ustar00mhornstaff000000 000000 LoadPackage( "anupq" ); dirs := DirectoriesPackageLibrary( "anupq", "tst" ); TestDirectory(dirs, rec(exitGAP := true)); anupq-3.3.0/tst/out/test4.out000644 000766 000024 00000004617 14355420571 016363 0ustar00mhornstaff000000 000000 Standard Presentation Menu ----------------------------- 1. Supply start information 2. Compute standard presentation to supplied class 3. Save presentation to file 4. Display presentation 5. Set print level for construction 6. Compare two presentations stored in files 7. Call basic menu for p-Quotient program 8. Compute the isomorphism 9. Exit from program Select option: 1 Lower exponent-5 central series for G Group: G to lower exponent-5 central class 1 has order 5^2 Select option: 2 Enter output file name for group information: SPRES Standardise presentation to what class? 5 Input the number of automorphisms: 2 Now enter the data for automorphism 1 Input 2 exponents for image of pcp generator 1: 2 0 Input 2 exponents for image of pcp generator 2: 0 1 Now enter the data for automorphism 2 Input 2 exponents for image of pcp generator 1: 4 1 Input 2 exponents for image of pcp generator 2: 4 0 PAG-generating sequence for automorphism group? 0 Starting group has order 5^2; its automorphism group order is 480 true #I Order of GL subgroup is 480 #I No. of soluble autos is 0 #I dim U = 1 dim N = 3 dim M = 3 #I nice stabilizer with perm rep The standard presentation for the class 2 5-quotient is Group: G #1;2 to lower exponent-5 central class 2 has order 5^4 Non-trivial powers: .1^5 = .4 Non-trivial commutators: [ .2, .1 ] = .3 Subset of automorphism group to check has order bound 2000 The standard presentation for the class 3 5-quotient is Group: G #1;1 to lower exponent-5 central class 3 has order 5^5 Non-trivial powers: .1^5 = .4 Non-trivial commutators: [ .2, .1 ] = .3 [ .3, .1 ] = .5 [ .3, .2 ] = .5 Subset of automorphism group to check has order bound 2000 The standard presentation for the class 4 5-quotient is Group: G #1;1 to lower exponent-5 central class 4 has order 5^6 Non-trivial powers: .1^5 = .4 Non-trivial commutators: [ .2, .1 ] = .3 [ .3, .1 ] = .5 [ .3, .2 ] = .5 [ .5, .1 ] = .6 [ .5, .2 ] = .6 Subset of automorphism group to check has order bound 10000 The standard presentation for the class 5 5-quotient is Group: G #1;1 to lower exponent-5 central class 5 has order 5^7 Non-trivial powers: .1^5 = .4 Non-trivial commutators: [ .2, .1 ] = .3 [ .3, .1 ] = .5 [ .3, .2 ] = .5 [ .5, .1 ] = .6 [ .5, .2 ] = .6 [ .6, .1 ] = .7 [ .6, .2 ] = .7 Subset of automorphism group to check has order bound 50000 Select option: 0 Exiting from ANU p-Quotient Program anupq-3.3.0/tst/out/test1.out000644 000766 000024 00000007426 14355420571 016361 0ustar00mhornstaff000000 000000 Select option: 1 Input group identifier: c3c3 Input prime: 3 Input maximum class: 1 Input print level (0-3): 1 Input generating set (in { }): Input defining set of relations (in { }): Input exponent law (0 if none): 0 Lower exponent-3 central series for c3c3 Group: c3c3 to lower exponent-3 central class 1 has order 3^2 Select option: 7 Group: c3c3 to lower exponent-3 central class 2 has order 3^5 Select option: 9 Menu for p-Group Generation ----------------------------- 1. Read automorphism information for starting group 2. Extend and display automorphisms 3. Specify input file and group number 4. List group presentation 5. Construct descendants 6. Advanced p-group generation menu 7. Exit to basic menu Select option: 1 Input the number of automorphisms: 5 Now enter the data for automorphism 1 Input 2 exponents for image of pcp generator 1: 2 0 Input 2 exponents for image of pcp generator 2: 0 2 Now enter the data for automorphism 2 Input 2 exponents for image of pcp generator 1: 0 2 Input 2 exponents for image of pcp generator 2: 1 0 Now enter the data for automorphism 3 Input 2 exponents for image of pcp generator 1: 1 2 Input 2 exponents for image of pcp generator 2: 2 2 Now enter the data for automorphism 4 Input 2 exponents for image of pcp generator 1: 1 0 Input 2 exponents for image of pcp generator 2: 2 1 Now enter the data for automorphism 5 Input 2 exponents for image of pcp generator 1: 2 0 Input 2 exponents for image of pcp generator 2: 0 1 Input number of soluble generators for automorphism group: 0 Select option: 5 Input class bound on descendants: 4 Construct all descendants? 0 Constant step size? 0 Input 3 step sizes: 2 3 1 PAG-generating sequence for automorphism group? 1 Do you want default algorithm? 1 Do you want default output? 1 ************************************************** Starting group: c3c3 Order: 3^2 Nuclear rank: 3 3-multiplicator rank: 3 # of immediate descendants of order 3^4 is 3 # of capable immediate descendants is 3 ************************************************** 3 capable groups saved on file c3c3_class2 ************************************************** Starting group: c3c3 #1;2 Order: 3^4 Nuclear rank: 2 3-multiplicator rank: 3 Group c3c3 #1;2 is an invalid starting group ************************************************** Starting group: c3c3 #2;2 Order: 3^4 Nuclear rank: 3 3-multiplicator rank: 4 # of immediate descendants of order 3^7 is 4 # of capable immediate descendants is 4 ************************************************** Starting group: c3c3 #3;2 Order: 3^4 Nuclear rank: 2 3-multiplicator rank: 3 Group c3c3 #3;2 is an invalid starting group ************************************************** 4 capable groups saved on file c3c3_class3 ************************************************** Starting group: c3c3 #2;2 #1;3 Order: 3^7 Nuclear rank: 4 3-multiplicator rank: 5 # of immediate descendants of order 3^8 is 16 # of capable immediate descendants is 11 ************************************************** Starting group: c3c3 #2;2 #2;3 Order: 3^7 Nuclear rank: 3 3-multiplicator rank: 4 # of immediate descendants of order 3^8 is 13 # of capable immediate descendants is 9 ************************************************** Starting group: c3c3 #2;2 #3;3 Order: 3^7 Nuclear rank: 3 3-multiplicator rank: 4 # of immediate descendants of order 3^8 is 13 # of capable immediate descendants is 9 ************************************************** Starting group: c3c3 #2;2 #4;3 Order: 3^7 Nuclear rank: 3 3-multiplicator rank: 4 # of immediate descendants of order 3^8 is 7 # of capable immediate descendants is 5 ************************************************** 34 capable groups saved on file c3c3_class4 Select option: 0 Exiting from p-group generation Select option: 0 Exiting from ANU p-Quotient Program anupq-3.3.0/tst/out/test3.out000644 000766 000024 00000007644 14355420571 016365 0ustar00mhornstaff000000 000000 Select option: 1 Input group identifier: c5c5 Input prime: 5 Input maximum class: 1 Input print level (0-3): 1 Input generating set (in { }): Input defining set of relations (in { }): Input exponent law (0 if none): 0 Lower exponent-5 central series for c5c5 Group: c5c5 to lower exponent-5 central class 1 has order 5^2 Select option: 7 Group: c5c5 to lower exponent-5 central class 2 has order 5^5 Select option: 9 Menu for p-Group Generation ----------------------------- 1. Read automorphism information for starting group 2. Extend and display automorphisms 3. Specify input file and group number 4. List group presentation 5. Construct descendants 6. Advanced p-group generation menu 7. Exit to basic menu Select option: 1 Input the number of automorphisms: 2 Now enter the data for automorphism 1 Input 2 exponents for image of pcp generator 1: 2 0 Input 2 exponents for image of pcp generator 2: 0 1 Now enter the data for automorphism 2 Input 2 exponents for image of pcp generator 1: 4 1 Input 2 exponents for image of pcp generator 2: 4 0 Input number of soluble generators for automorphism group: 0 Select option: 5 Input class bound on descendants: 5 Construct all descendants? 1 Set an order bound on the descendants? 0 PAG-generating sequence for automorphism group? 0 Do you want default algorithm? 0 Rank of the initial segment subgroup? 0 Completely process terminal descendants? 0 Input exponent law (0 if none): 5 Enforce metabelian law? 0 Do you want default output? 1 ************************************************** Starting group: c5c5 Order: 5^2 Nuclear rank: 1 5-multiplicator rank: 1 # of immediate descendants of order 5^3 is 1 # of capable immediate descendants is 1 ************************************************** 1 capable group saved on file c5c5_class2 ************************************************** Starting group: c5c5 #1;1 Order: 5^3 Nuclear rank: 2 5-multiplicator rank: 2 true #I Order of GL subgroup is 480 #I No. of soluble autos is 0 #I dim U = 1 dim N = 2 dim M = 2 #I nice stabilizer with perm rep # of immediate descendants of order 5^4 is 1 # of capable immediate descendants is 1 # of immediate descendants of order 5^5 is 1 # of capable immediate descendants is 1 ************************************************** 2 capable groups saved on file c5c5_class3 ************************************************** Starting group: c5c5 #1;1 #1;1 Order: 5^4 Nuclear rank: 1 5-multiplicator rank: 2 # of immediate descendants of order 5^5 is 2 ************************************************** Starting group: c5c5 #1;1 #2;2 Order: 5^5 Nuclear rank: 3 5-multiplicator rank: 3 # of immediate descendants of order 5^6 is 3 true #I Order of GL subgroup is 480 #I No. of soluble autos is 3 #I dim U = 1 dim N = 3 dim M = 3 #I nice stabilizer with perm rep # of immediate descendants of order 5^7 is 3 # of capable immediate descendants is 1 # of immediate descendants of order 5^8 is 1 # of capable immediate descendants is 1 ************************************************** 2 capable groups saved on file c5c5_class4 ************************************************** Starting group: c5c5 #1;1 #2;2 #4;2 Order: 5^7 Nuclear rank: 1 5-multiplicator rank: 2 # of immediate descendants of order 5^8 is 2 # of capable immediate descendants is 2 ************************************************** Starting group: c5c5 #1;1 #2;2 #7;3 Order: 5^8 Nuclear rank: 2 5-multiplicator rank: 2 true #I Order of GL subgroup is 480 #I No. of soluble autos is 7 #I dim U = 1 dim N = 2 dim M = 2 #I nice stabilizer with perm rep # of immediate descendants of order 5^9 is 1 # of capable immediate descendants is 1 # of immediate descendants of order 5^10 is 1 # of capable immediate descendants is 1 ************************************************** 4 capable groups saved on file c5c5_class5 Select option: 0 Exiting from p-group generation Select option: 0 Exiting from ANU p-Quotient Program anupq-3.3.0/tst/out/test2.out000644 000766 000024 00000013141 14355420571 016351 0ustar00mhornstaff000000 000000 Select option: 1 Input group identifier: c2c2 Input prime: 2 Input maximum class: 1 Input print level (0-3): 1 Input generating set (in { }): Input defining set of relations (in { }): Input exponent law (0 if none): 0 Lower exponent-2 central series for c2c2 Group: c2c2 to lower exponent-2 central class 1 has order 2^2 Select option: 7 Group: c2c2 to lower exponent-2 central class 2 has order 2^5 Select option: 9 Menu for p-Group Generation ----------------------------- 1. Read automorphism information for starting group 2. Extend and display automorphisms 3. Specify input file and group number 4. List group presentation 5. Construct descendants 6. Advanced p-group generation menu 7. Exit to basic menu Select option: 1 Input the number of automorphisms: 2 Now enter the data for automorphism 1 Input 2 exponents for image of pcp generator 1: 0 1 Input 2 exponents for image of pcp generator 2: 1 1 Now enter the data for automorphism 2 Input 2 exponents for image of pcp generator 1: 0 1 Input 2 exponents for image of pcp generator 2: 1 0 Input number of soluble generators for automorphism group: 0 Select option: 5 Input class bound on descendants: 7 Construct all descendants? 1 Set an order bound on the descendants? 1 Input order bound on descendants: 5 PAG-generating sequence for automorphism group? 1 Do you want default algorithm? 1 Do you want default output? 1 ************************************************** Starting group: c2c2 Order: 2^2 Nuclear rank: 3 2-multiplicator rank: 3 # of immediate descendants of order 2^3 is 3 # of capable immediate descendants is 2 # of immediate descendants of order 2^4 is 3 # of capable immediate descendants is 3 # of immediate descendants of order 2^5 is 1 # of capable immediate descendants is 1 ************************************************** 6 capable groups saved on file c2c2_class2 ************************************************** Starting group: c2c2 #1;1 Order: 2^3 Nuclear rank: 1 2-multiplicator rank: 3 # of immediate descendants of order 2^4 is 2 # of capable immediate descendants is 1 ************************************************** Starting group: c2c2 #2;1 Order: 2^3 Nuclear rank: 1 2-multiplicator rank: 3 # of immediate descendants of order 2^4 is 3 # of capable immediate descendants is 1 ************************************************** Starting group: c2c2 #4;2 Order: 2^4 Nuclear rank: 2 2-multiplicator rank: 3 # of immediate descendants of order 2^5 is 2 # of capable immediate descendants is 2 ************************************************** Starting group: c2c2 #5;2 Order: 2^4 Nuclear rank: 3 2-multiplicator rank: 4 # of immediate descendants of order 2^5 is 7 # of capable immediate descendants is 3 ************************************************** Starting group: c2c2 #6;2 Order: 2^4 Nuclear rank: 2 2-multiplicator rank: 3 # of immediate descendants of order 2^5 is 4 # of capable immediate descendants is 3 ************************************************** Starting group: c2c2 #7;3 Order: 2^5 Nuclear rank: 5 2-multiplicator rank: 5 Group c2c2 #7;3 is an invalid starting group ************************************************** 10 capable groups saved on file c2c2_class3 ************************************************** Starting group: c2c2 #1;1 #1;1 Order: 2^4 Nuclear rank: 1 2-multiplicator rank: 3 # of immediate descendants of order 2^5 is 2 # of capable immediate descendants is 1 ************************************************** Starting group: c2c2 #2;1 #1;1 Order: 2^4 Nuclear rank: 1 2-multiplicator rank: 3 # of immediate descendants of order 2^5 is 3 # of capable immediate descendants is 1 ************************************************** Starting group: c2c2 #4;2 #1;1 Order: 2^5 Nuclear rank: 1 2-multiplicator rank: 3 Group c2c2 #4;2 #1;1 is an invalid starting group ************************************************** Starting group: c2c2 #4;2 #2;1 Order: 2^5 Nuclear rank: 1 2-multiplicator rank: 3 Group c2c2 #4;2 #2;1 is an invalid starting group ************************************************** Starting group: c2c2 #5;2 #1;1 Order: 2^5 Nuclear rank: 1 2-multiplicator rank: 4 Group c2c2 #5;2 #1;1 is an invalid starting group ************************************************** Starting group: c2c2 #5;2 #2;1 Order: 2^5 Nuclear rank: 1 2-multiplicator rank: 4 Group c2c2 #5;2 #2;1 is an invalid starting group ************************************************** Starting group: c2c2 #5;2 #5;1 Order: 2^5 Nuclear rank: 1 2-multiplicator rank: 4 Group c2c2 #5;2 #5;1 is an invalid starting group ************************************************** Starting group: c2c2 #6;2 #1;1 Order: 2^5 Nuclear rank: 1 2-multiplicator rank: 3 Group c2c2 #6;2 #1;1 is an invalid starting group ************************************************** Starting group: c2c2 #6;2 #2;1 Order: 2^5 Nuclear rank: 1 2-multiplicator rank: 3 Group c2c2 #6;2 #2;1 is an invalid starting group ************************************************** Starting group: c2c2 #6;2 #3;1 Order: 2^5 Nuclear rank: 1 2-multiplicator rank: 3 Group c2c2 #6;2 #3;1 is an invalid starting group ************************************************** 2 capable groups saved on file c2c2_class4 ************************************************** Starting group: c2c2 #1;1 #1;1 #1;1 Order: 2^5 Nuclear rank: 1 2-multiplicator rank: 3 Group c2c2 #1;1 #1;1 #1;1 is an invalid starting group ************************************************** Starting group: c2c2 #2;1 #1;1 #1;1 Order: 2^5 Nuclear rank: 1 2-multiplicator rank: 3 Group c2c2 #2;1 #1;1 #1;1 is an invalid starting group Select option: 0 Exiting from p-group generation Select option: 0 Exiting from ANU p-Quotient Program anupq-3.3.0/doc/manual.six000644 000766 000024 00000152627 14355420744 015724 0ustar00mhornstaff000000 000000 #SIXFORMAT GapDocGAP HELPBOOKINFOSIXTMP := rec( encoding := "UTF-8", bookname := "ANUPQ", entries := [ [ "Title page", ".", [ 0, 0, 0 ], 1, 1, "title page", "X7D2C85EC87DD46E5" ], [ "Copyright", ".-1", [ 0, 0, 1 ], 47, 2, "copyright", "X81488B807F2A1CF1" ] , [ "Table of Contents", ".-2", [ 0, 0, 2 ], 59, 3, "table of contents", "X8537FEB07AF2BEC8" ], [ "\033[1X\033[33X\033[0;-2YIntroduction\033[133X\033[101X", "1", [ 1, 0, 0 ], 1, 5, "introduction", "X7DFB63A97E67C0A1" ], [ "\033[1X\033[33X\033[0;-2YOverview\033[133X\033[101X", "1.1", [ 1, 1, 0 ], 4, 5, "overview", "X8389AD927B74BA4A" ], [ "\033[1X\033[33X\033[0;-2YHow to read this manual\033[133X\033[101X", "1.2", [ 1, 2, 0 ], 40, 5, "how to read this manual", "X8416D2657E7831A1" ], [ "\033[1X\033[33X\033[0;-2YAuthors and Acknowledgements\033[133X\033[101X", "1.3", [ 1, 3, 0 ], 90, 6, "authors and acknowledgements", "X79D2480A7810A7CC" ], [ "\033[1X\033[33X\033[0;-2YMathematical Background and Terminology\033[133X\\ 033[101X", "2", [ 2, 0, 0 ], 1, 7, "mathematical background and terminology", "X7E7F3B617F42EF03" ], [ "\033[1X\033[33X\033[0;-2YBasic notions\033[133X\033[101X", "2.1", [ 2, 1, 0 ], 16, 7, "basic notions", "X79A052C47C92AF09" ], [ "\033[1X\033[33X\033[0;-2Ypc Presentations and Consistency\033[133X\033[101\ X", "2.1-1", [ 2, 1, 1 ], 19, 7, "pc presentations and consistency", "X7BD675838609D547" ], [ "\033[1X\033[33X\033[0;-2YExponent-\033[22Xp\033[122X\033[101X\027\033[1X\\ 027 Central Series and Weighted pc Presentations\033[133X\033[101X", "2.1-2", [ 2, 1, 2 ], 72, 8, "exponent-p central series and weighted pc presentations", "X7944DB037F2277A6" ], [ "\033[1X\033[33X\033[0;-2Y\033[22Xp\033[122X\033[101X\027\033[1X\027-Cover,\ \033[22Xp\033[122X\033[101X\027\033[1X\027-Multiplicator\033[133X\033[101X", "2.1-3", [ 2, 1, 3 ], 105, 8, "p-cover p-multiplicator", "X7C43ACA37D391EBD" ], [ "\033[1X\033[33X\033[0;-2YDescendants, Capable, Terminal, Nucleus\033[133X\\ 033[101X", "2.1-4", [ 2, 1, 4 ], 118, 8, "descendants capable terminal nucleus", "X801A27A08462AFAB" ], [ "\033[1X\033[33X\033[0;-2YLaws\033[133X\033[101X", "2.1-5", [ 2, 1, 5 ], 152, 9, "laws", "X81FBE7ED79EFF5EF" ], [ "\033[1X\033[33X\033[0;-2YThe p-quotient Algorithm\033[133X\033[101X", "2.2", [ 2, 2, 0 ], 162, 9, "the p-quotient algorithm", "X7C8CE96D80FC3614" ], [ "\033[1X\033[33X\033[0;-2YFinding the \033[22Xp\033[122X\033[101X\027\033[1\ X\027-cover\033[133X\033[101X", "2.2-1", [ 2, 2, 1 ], 184, 9, "finding the p-cover", "X791EB6F77899CB3D" ], [ "\033[1X\033[33X\033[0;-2YImposing the Relations of the fp Group\033[133X\\ 033[101X", "2.2-2", [ 2, 2, 2 ], 224, 10, "imposing the relations of the fp group", "X804CF5C97F7BB880" ], [ "\033[1X\033[33X\033[0;-2YImposing Laws\033[133X\033[101X", "2.2-3", [ 2, 2, 3 ], 232, 10, "imposing laws", "X7F1A8CCD84462775" ], [ "\033[1X\033[33X\033[0;-2YThe p-group generation Algorithm, Standard Presen\ tation, Isomorphism Testing\033[133X\033[101X", "2.3", [ 2, 3, 0 ], 254, 10, "the p-group generation algorithm standard presentation isomorphism test\ ing", "X807FB2EC85E6648D" ], [ "\033[1X\033[33X\033[0;-2YInfrastructure\033[133X\033[101X", "3", [ 3, 0, 0 ], 1, 12, "infrastructure", "X7917EFDF7AC06F04" ], [ "\033[1X\033[33X\033[0;-2YLoading the ANUPQ Package\033[133X\033[101X", "3.1", [ 3, 1, 0 ], 35, 12, "loading the anupq package", "X833D58248067E13B" ], [ "\033[1X\033[33X\033[0;-2YThe ANUPQData Record\033[133X\033[101X", "3.2", [ 3, 2, 0 ], 79, 13, "the anupqdata record", "X83DE155A79C38DBE" ], [ "\033[1X\033[33X\033[0;-2YSetting the Verbosity of ANUPQ via Info and InfoA\ NUPQ\033[133X\033[101X", "3.3", [ 3, 3, 0 ], 257, 16, "setting the verbosity of anupq via info and infoanupq", "X83E5C7CF7D8739DF" ], [ "\033[1X\033[33X\033[0;-2YUtility Functions\033[133X\033[101X", "3.4", [ 3, 4, 0 ], 328, 17, "utility functions", "X810FFB1C8035C8BE" ], [ "\033[1X\033[33X\033[0;-2YAttributes and a Property for fp and pc p-groups\\ 033[133X\033[101X", "3.5", [ 3, 5, 0 ], 446, 19, "attributes and a property for fp and pc p-groups", "X818175EF85CAA807" ], [ "\033[1X\033[33X\033[0;-2YHints and Warnings regarding the use of Options\\ 033[133X\033[101X", "3.6", [ 3, 6, 0 ], 492, 20, "hints and warnings regarding the use of options", "X7BA20FA07B166B37" ] , [ "\033[1X\033[33X\033[0;-2YNon-interactive ANUPQ functions\033[133X\033[101X\ ", "4", [ 4, 0, 0 ], 1, 24, "non-interactive anupq functions", "X7C51F26D839279FF" ], [ "\033[1X\033[33X\033[0;-2YComputing p-Quotients\033[133X\033[101X", "4.1", [ 4, 1, 0 ], 37, 24, "computing p-quotients", "X80406BD47EB186E9" ], [ "\033[1X\033[33X\033[0;-2YComputing Standard Presentations\033[133X\033[101\ X", "4.2", [ 4, 2, 0 ], 297, 29, "computing standard presentations", "X7F05F8DC79733A8E" ], [ "\033[1X\033[33X\033[0;-2YTesting p-Groups for Isomorphism\033[133X\033[101\ X", "4.3", [ 4, 3, 0 ], 454, 31, "testing p-groups for isomorphism", "X8030FAE586423615" ], [ "\033[1X\033[33X\033[0;-2YComputing Descendants of a p-Group\033[133X\033[1\ 01X", "4.4", [ 4, 4, 0 ], 489, 32, "computing descendants of a p-group", "X8450C72580D91245" ], [ "\033[1X\033[33X\033[0;-2YInteractive ANUPQ functions\033[133X\033[101X", "5", [ 5, 0, 0 ], 1, 36, "interactive anupq functions", "X842C13C27B941744" ], [ "\033[1X\033[33X\033[0;-2YStarting and Stopping Interactive ANUPQ Processes\ \033[133X\033[101X", "5.1", [ 5, 1, 0 ], 42, 36, "starting and stopping interactive anupq processes", "X7935CDAD7936CA0A" ], [ "\033[1X\033[33X\033[0;-2YInteractive ANUPQ Process Utility Functions\033[1\ 33X\033[101X", "5.2", [ 5, 2, 0 ], 93, 37, "interactive anupq process utility functions", "X7EE8000A800CEE2D" ], [ "\033[1X\033[33X\033[0;-2YInteractive Versions of Non-interactive ANUPQ Fun\ ctions\033[133X\033[101X", "5.3", [ 5, 3, 0 ], 141, 38, "interactive versions of non-interactive anupq functions", "X823D2BBF7C4515D4" ], [ "\033[1X\033[33X\033[0;-2YLow-level Interactive ANUPQ functions based on me\ nu items of the pq program\033[133X\033[101X", "5.4", [ 5, 4, 0 ], 641, 47, "low-level interactive anupq functions based on menu items of the pq pro\ gram", "X857F050C832A1FE4" ], [ "\033[1X\033[33X\033[0;-2YGeneral commands\033[133X\033[101X", "5.5", [ 5, 5, 0 ], 661, 47, "general commands", "X868B10557D470CF6" ], [ "\033[1X\033[33X\033[0;-2YCommands from the Main \033[22Xp\033[122X\033[101\ X\027\033[1X\027-Quotient menu\033[133X\033[101X", "5.6", [ 5, 6, 0 ], 776, 49, "commands from the main p-quotient menu", "X7BDD5B278719C630" ], [ "\033[1X\033[33X\033[0;-2YCommands from the Advanced \033[22Xp\033[122X\\ 033[101X\027\033[1X\027-Quotient menu\033[133X\033[101X", "5.7", [ 5, 7, 0 ], 907, 51, "commands from the advanced p-quotient menu", "X7D27BE937B1DE16E" ], [ "\033[1X\033[33X\033[0;-2YCommands from the Standard Presentation menu\033[\ 133X\033[101X", "5.8", [ 5, 8, 0 ], 1421, 60, "commands from the standard presentation menu", "X7B94EDA385FDD904" ], [ "\033[1X\033[33X\033[0;-2YCommands from the Main \033[22Xp\033[122X\033[10\ 1X\027\033[1X\027-Group Generation menu\033[133X\033[101X", "5.9", [ 5, 9, 0 ], 1533, 62, "commands from the main p-group generation menu", "X8490031B7AA7F237" ], [ "\033[1X\033[33X\033[0;-2YCommands from the Advanced \033[22Xp\033[122X\\ 033[101X\027\033[1X\027-Group Generation menu\033[133X\033[101X", "5.10", [ 5, 10, 0 ], 1627, 63, "commands from the advanced p-group generation menu", "X7E8FBC2D83C43481" ], [ "\033[1X\033[33X\033[0;-2YPrimitive Interactive ANUPQ Process Read/Write Fu\ nctions\033[133X\033[101X", "5.11", [ 5, 11, 0 ], 1704, 65, "primitive interactive anupq process read/write functions", "X84A92E8087762DEE" ], [ "\033[1X\033[33X\033[0;-2YANUPQ Options\033[133X\033[101X", "6", [ 6, 0, 0 ], 1, 67, "anupq options", "X7B0946E97E7EB359" ], [ "\033[1X\033[33X\033[0;-2YOverview\033[133X\033[101X", "6.1", [ 6, 1, 0 ], 4, 67, "overview", "X8389AD927B74BA4A" ], [ "\033[1X\033[33X\033[0;-2YDetailed descriptions of ANUPQ Options\033[133X\\ 033[101X", "6.2", [ 6, 2, 0 ], 73, 68, "detailed descriptions of anupq options", "X87EE6DD67C9996A3" ], [ "\033[1X\033[33X\033[0;-2YInstalling the ANUPQ Package\033[133X\033[101X", "7", [ 7, 0, 0 ], 1, 75, "installing the anupq package", "X7FB487238298CF42" ], [ "\033[1X\033[33X\033[0;-2YTesting your ANUPQ installation\033[133X\033[101X\ ", "7.1", [ 7, 1, 0 ], 105, 76, "testing your anupq installation", "X854577C8800DC7C2" ], [ "\033[1X\033[33X\033[0;-2YRunning the pq program as a standalone\033[133X\\ 033[101X", "7.2", [ 7, 2, 0 ], 155, 77, "running the pq program as a standalone", "X82906B5184C61063" ], [ "\033[1X\033[33X\033[0;-2YExamples\033[133X\033[101X", "a", [ "A", 0, 0 ], 1, 79, "examples", "X7A489A5D79DA9E5C" ], [ "\033[1X\033[33X\033[0;-2YThe Relators Option\033[133X\033[101X", "a.1", [ "A", 1, 0 ], 137, 81, "the relators option", "X80676E317BF4DF13" ], [ "\033[1X\033[33X\033[0;-2YThe Identities Option and PqEvaluateIdentities Fu\ nction\033[133X\033[101X", "a.2", [ "A", 2, 0 ], 214, 83, "the identities option and pqevaluateidentities function", "X80B2AA7084C57F5D" ], [ "\033[1X\033[33X\033[0;-2YA Large Example\033[133X\033[101X", "a.3", [ "A", 3, 0 ], 366, 85, "a large example", "X7A997D1A8532A84B" ], [ "\033[1X\033[33X\033[0;-2YDeveloping descendants trees\033[133X\033[101X", "a.4", [ "A", 4, 0 ], 473, 87, "developing descendants trees", "X7FB6DA8D7BB90D8C" ], [ "Bibliography", "bib", [ "Bib", 0, 0 ], 1, 92, "bibliography", "X7A6F98FD85F02BFE" ], [ "References", "bib", [ "Bib", 0, 0 ], 1, 92, "references", "X7A6F98FD85F02BFE" ], [ "Index", "ind", [ "Ind", 0, 0 ], 1, 93, "index", "X83A0356F839C696F" ], [ "ANUPQ", "1.1", [ 1, 1, 0 ], 4, 5, "anupq", "X8389AD927B74BA4A" ], [ "bug reports", "1.3", [ 1, 3, 0 ], 90, 6, "bug reports", "X79D2480A7810A7CC" ], [ "power-commutator presentation", "2.1-1", [ 2, 1, 1 ], 19, 7, "power-commutator presentation", "X7BD675838609D547" ], [ "pc presentation", "2.1-1", [ 2, 1, 1 ], 19, 7, "pc presentation", "X7BD675838609D547" ], [ "pcp", "2.1-1", [ 2, 1, 1 ], 19, 7, "pcp", "X7BD675838609D547" ], [ "pc generators", "2.1-1", [ 2, 1, 1 ], 19, 7, "pc generators", "X7BD675838609D547" ], [ "collection", "2.1-1", [ 2, 1, 1 ], 19, 7, "collection", "X7BD675838609D547" ], [ "consistent", "2.1-1", [ 2, 1, 1 ], 19, 7, "consistent", "X7BD675838609D547" ], [ "confluent rewriting system", "2.1-1", [ 2, 1, 1 ], 19, 7, "confluent rewriting system", "X7BD675838609D547" ], [ "confluent", "2.1-1", [ 2, 1, 1 ], 19, 7, "confluent", "X7BD675838609D547" ], [ "consistency conditions", "2.1-1", [ 2, 1, 1 ], 19, 7, "consistency conditions", "X7BD675838609D547" ], [ "exponent-p central series", "2.1-2", [ 2, 1, 2 ], 72, 8, "exponent-p central series", "X7944DB037F2277A6" ], [ "class", "2.1-2", [ 2, 1, 2 ], 72, 8, "class", "X7944DB037F2277A6" ], [ "p-class", "2.1-2", [ 2, 1, 2 ], 72, 8, "p-class", "X7944DB037F2277A6" ], [ "weight function", "2.1-2", [ 2, 1, 2 ], 72, 8, "weight function", "X7944DB037F2277A6" ], [ "weighted pcp", "2.1-2", [ 2, 1, 2 ], 72, 8, "weighted pcp", "X7944DB037F2277A6" ], [ "p-covering group", "2.1-3", [ 2, 1, 3 ], 105, 8, "p-covering group", "X7C43ACA37D391EBD" ], [ "p-cover", "2.1-3", [ 2, 1, 3 ], 105, 8, "p-cover", "X7C43ACA37D391EBD" ], [ "p-multiplicator", "2.1-3", [ 2, 1, 3 ], 105, 8, "p-multiplicator", "X7C43ACA37D391EBD" ], [ "p-multiplicator rank", "2.1-3", [ 2, 1, 3 ], 105, 8, "p-multiplicator rank", "X7C43ACA37D391EBD" ], [ "multiplicator rank", "2.1-3", [ 2, 1, 3 ], 105, 8, "multiplicator rank", "X7C43ACA37D391EBD" ], [ "descendant", "2.1-4", [ 2, 1, 4 ], 118, 8, "descendant", "X801A27A08462AFAB" ], [ "immediate descendant", "2.1-4", [ 2, 1, 4 ], 118, 8, "immediate descendant", "X801A27A08462AFAB" ], [ "nucleus", "2.1-4", [ 2, 1, 4 ], 118, 8, "nucleus", "X801A27A08462AFAB" ], [ "capable", "2.1-4", [ 2, 1, 4 ], 118, 8, "capable", "X801A27A08462AFAB" ], [ "terminal", "2.1-4", [ 2, 1, 4 ], 118, 8, "terminal", "X801A27A08462AFAB" ], [ "nucleus", "2.1-4", [ 2, 1, 4 ], 118, 8, "nucleus", "X801A27A08462AFAB" ], [ "allowable subgroup", "2.1-4", [ 2, 1, 4 ], 118, 8, "allowable subgroup", "X801A27A08462AFAB" ], [ "extended automorphism", "2.1-4", [ 2, 1, 4 ], 118, 8, "extended automorphism", "X801A27A08462AFAB" ], [ "permutations", "2.1-4", [ 2, 1, 4 ], 118, 8, "permutations", "X801A27A08462AFAB" ], [ "law", "2.1-5", [ 2, 1, 5 ], 152, 9, "law", "X81FBE7ED79EFF5EF" ], [ "identical relation", "2.1-5", [ 2, 1, 5 ], 152, 9, "identical relation", "X81FBE7ED79EFF5EF" ], [ "exponent law", "2.1-5", [ 2, 1, 5 ], 152, 9, "exponent law", "X81FBE7ED79EFF5EF" ], [ "metabelian law", "2.1-5", [ 2, 1, 5 ], 152, 9, "metabelian law", "X81FBE7ED79EFF5EF" ], [ "Engel identity", "2.1-5", [ 2, 1, 5 ], 152, 9, "engel identity", "X81FBE7ED79EFF5EF" ], [ "labelled pcp", "2.2-1", [ 2, 2, 1 ], 184, 9, "labelled pcp", "X791EB6F77899CB3D" ], [ "definition of generator", "2.2-1", [ 2, 2, 1 ], 184, 9, "definition of generator", "X791EB6F77899CB3D" ], [ "tails", "2.2-1", [ 2, 2, 1 ], 184, 9, "tails", "X791EB6F77899CB3D" ], [ "exponent check", "2.2-3", [ 2, 2, 3 ], 232, 10, "exponent check", "X7F1A8CCD84462775" ], [ "p-group generation", "2.3", [ 2, 3, 0 ], 254, 10, "p-group generation", "X807FB2EC85E6648D" ], [ "orbits", "2.3", [ 2, 3, 0 ], 254, 10, "orbits", "X807FB2EC85E6648D" ], [ "standard presentation", "2.3", [ 2, 3, 0 ], 254, 10, "standard presentation", "X807FB2EC85E6648D" ], [ "echelonised matrix", "2.3", [ 2, 3, 0 ], 254, 10, "echelonised matrix", "X807FB2EC85E6648D" ], [ "label of standard matrix", "2.3", [ 2, 3, 0 ], 254, 10, "label of standard matrix", "X807FB2EC85E6648D" ], [ "isomorphism testing", "2.3", [ 2, 3, 0 ], 254, 10, "isomorphism testing", "X807FB2EC85E6648D" ], [ "compaction", "2.3", [ 2, 3, 0 ], 254, 10, "compaction", "X807FB2EC85E6648D" ], [ "banner", "3.1", [ 3, 1, 0 ], 35, 12, "banner", "X833D58248067E13B" ], [ "\033[2XANUPQData\033[102X", "3.2-1", [ 3, 2, 1 ], 85, 13, "anupqdata", "X7B90E89782BDA6D7" ], [ "\033[2XANUPQDirectoryTemporary\033[102X", "3.2-2", [ 3, 2, 2 ], 244, 16, "anupqdirectorytemporary", "X7FBB2F457E4BD6AB" ], [ "\033[2XInfoANUPQ\033[102X", "3.3-1", [ 3, 3, 1 ], 260, 16, "infoanupq", "X7CBC9B458497BFF1" ], [ "\033[2XPqLeftNormComm\033[102X", "3.4-1", [ 3, 4, 1 ], 331, 17, "pqleftnormcomm", "X8771393B7F53F534" ], [ "\033[2XPqGAPRelators\033[102X", "3.4-2", [ 3, 4, 2 ], 342, 17, "pqgaprelators", "X7A567432879510A6" ], [ "\033[2XPqParseWord\033[102X", "3.4-3", [ 3, 4, 3 ], 367, 18, "pqparseword", "X7F3C5D1C7EC36EAE" ], [ "\033[2XPqExample\033[102X no arguments", "3.4-4", [ 3, 4, 4 ], 382, 18, "pqexample no arguments", "X7BB0EB607F337265" ], [ "\033[2XPqExample\033[102X", "3.4-4", [ 3, 4, 4 ], 382, 18, "pqexample", "X7BB0EB607F337265" ], [ "\033[2XPqExample\033[102X with filename", "3.4-4", [ 3, 4, 4 ], 382, 18, "pqexample with filename", "X7BB0EB607F337265" ], [ "\033[2XAllPqExamples\033[102X", "3.4-5", [ 3, 4, 5 ], 420, 19, "allpqexamples", "X823C93FC7B87F5BC" ], [ "\033[2XGrepPqExamples\033[102X", "3.4-6", [ 3, 4, 6 ], 427, 19, "greppqexamples", "X7E3E4B047DC2E323" ], [ "\033[2XToPQLog\033[102X", "3.4-7", [ 3, 4, 7 ], 435, 19, "topqlog", "X8104B2BA872EFCCB" ], [ "\033[2XNuclearRank\033[102X", "3.5-1", [ 3, 5, 1 ], 449, 19, "nuclearrank", "X87DC922A78EB0DD6" ], [ "\033[2XMultiplicatorRank\033[102X", "3.5-1", [ 3, 5, 1 ], 449, 19, "multiplicatorrank", "X87DC922A78EB0DD6" ], [ "\033[2XIsCapable\033[102X", "3.5-1", [ 3, 5, 1 ], 449, 19, "iscapable", "X87DC922A78EB0DD6" ], [ "menu item of pq program", "3.6", [ 3, 6, 0 ], 492, 20, "menu item of pq program", "X7BA20FA07B166B37" ], [ "option of pq program is a menu item", "3.6", [ 3, 6, 0 ], 492, 20, "option of pq program is a menu item", "X7BA20FA07B166B37" ], [ "troubleshooting tips", "3.6", [ 3, 6, 0 ], 492, 20, "troubleshooting tips", "X7BA20FA07B166B37" ], [ "\033[2XANUPQWarnOfOtherOptions\033[102X", "3.6-1", [ 3, 6, 1 ], 556, 21, "anupqwarnofotheroptions", "X81F4AAE084C34B4B" ], [ "\033[2XPq\033[102X", "4.1-1", [ 4, 1, 1 ], 40, 24, "pq", "X86DD32D5803CF2C8" ], [ "option Prime", "4.1-1", [ 4, 1, 1 ], 40, 24, "option prime", "X86DD32D5803CF2C8" ], [ "option ClassBound", "4.1-1", [ 4, 1, 1 ], 40, 24, "option classbound", "X86DD32D5803CF2C8" ], [ "option Exponent", "4.1-1", [ 4, 1, 1 ], 40, 24, "option exponent", "X86DD32D5803CF2C8" ], [ "option Relators", "4.1-1", [ 4, 1, 1 ], 40, 24, "option relators", "X86DD32D5803CF2C8" ], [ "option Metabelian", "4.1-1", [ 4, 1, 1 ], 40, 24, "option metabelian", "X86DD32D5803CF2C8" ], [ "option Identities", "4.1-1", [ 4, 1, 1 ], 40, 24, "option identities", "X86DD32D5803CF2C8" ], [ "option GroupName", "4.1-1", [ 4, 1, 1 ], 40, 24, "option groupname", "X86DD32D5803CF2C8" ], [ "option OutputLevel", "4.1-1", [ 4, 1, 1 ], 40, 24, "option outputlevel", "X86DD32D5803CF2C8" ], [ "option SetupFile", "4.1-1", [ 4, 1, 1 ], 40, 24, "option setupfile", "X86DD32D5803CF2C8" ], [ "option PqWorkspace", "4.1-1", [ 4, 1, 1 ], 40, 24, "option pqworkspace", "X86DD32D5803CF2C8" ], [ "option Relators example of usage", "4.1-1", [ 4, 1, 1 ], 40, 24, "option relators example of usage", "X86DD32D5803CF2C8" ], [ "option Identities example of usage", "4.1-1", [ 4, 1, 1 ], 40, 24, "option identities example of usage", "X86DD32D5803CF2C8" ], [ "\033[2XPqEpimorphism\033[102X", "4.1-2", [ 4, 1, 2 ], 200, 27, "pqepimorphism", "X7ADE5DDB87B99CC0" ], [ "\033[2XPqPCover\033[102X", "4.1-3", [ 4, 1, 3 ], 234, 27, "pqpcover", "X81C3CE1E850DA252" ], [ "automorphisms of \033[22Xp\033[122X-groups", "4.2", [ 4, 2, 0 ], 297, 29, "automorphisms of p-groups", "X7F05F8DC79733A8E" ], [ "\033[2XPqStandardPresentation\033[102X", "4.2-1", [ 4, 2, 1 ], 300, 29, "pqstandardpresentation", "X86C9575D7CB65FBB" ], [ "\033[2XStandardPresentation\033[102X", "4.2-1", [ 4, 2, 1 ], 300, 29, "standardpresentation", "X86C9575D7CB65FBB" ], [ "option Prime", "4.2-1", [ 4, 2, 1 ], 300, 29, "option prime", "X86C9575D7CB65FBB" ], [ "option pQuotient", "4.2-1", [ 4, 2, 1 ], 300, 29, "option pquotient", "X86C9575D7CB65FBB" ], [ "option ClassBound", "4.2-1", [ 4, 2, 1 ], 300, 29, "option classbound", "X86C9575D7CB65FBB" ], [ "option Exponent", "4.2-1", [ 4, 2, 1 ], 300, 29, "option exponent", "X86C9575D7CB65FBB" ], [ "option Metabelian", "4.2-1", [ 4, 2, 1 ], 300, 29, "option metabelian", "X86C9575D7CB65FBB" ], [ "option GroupName", "4.2-1", [ 4, 2, 1 ], 300, 29, "option groupname", "X86C9575D7CB65FBB" ], [ "option OutputLevel", "4.2-1", [ 4, 2, 1 ], 300, 29, "option outputlevel", "X86C9575D7CB65FBB" ], [ "option StandardPresentationFile", "4.2-1", [ 4, 2, 1 ], 300, 29, "option standardpresentationfile", "X86C9575D7CB65FBB" ], [ "option SetupFile", "4.2-1", [ 4, 2, 1 ], 300, 29, "option setupfile", "X86C9575D7CB65FBB" ], [ "option PqWorkspace", "4.2-1", [ 4, 2, 1 ], 300, 29, "option pqworkspace", "X86C9575D7CB65FBB" ], [ "\033[2XEpimorphismPqStandardPresentation\033[102X", "4.2-2", [ 4, 2, 2 ], 397, 30, "epimorphismpqstandardpresentation", "X828C06D083C0D089" ], [ "\033[2XEpimorphismStandardPresentation\033[102X", "4.2-2", [ 4, 2, 2 ], 397, 30, "epimorphismstandardpresentation", "X828C06D083C0D089" ], [ "\033[2XIsPqIsomorphicPGroup\033[102X", "4.3-1", [ 4, 3, 1 ], 457, 31, "ispqisomorphicpgroup", "X854389FC780BB178" ], [ "\033[2XIsIsomorphicPGroup\033[102X", "4.3-1", [ 4, 3, 1 ], 457, 31, "isisomorphicpgroup", "X854389FC780BB178" ], [ "\033[2XPqDescendants\033[102X", "4.4-1", [ 4, 4, 1 ], 492, 32, "pqdescendants", "X80985CC479CD9FA3" ], [ "option ClassBound", "4.4-1", [ 4, 4, 1 ], 492, 32, "option classbound", "X80985CC479CD9FA3" ], [ "option Relators", "4.4-1", [ 4, 4, 1 ], 492, 32, "option relators", "X80985CC479CD9FA3" ], [ "option OrderBound", "4.4-1", [ 4, 4, 1 ], 492, 32, "option orderbound", "X80985CC479CD9FA3" ], [ "option StepSize", "4.4-1", [ 4, 4, 1 ], 492, 32, "option stepsize", "X80985CC479CD9FA3" ], [ "option RankInitialSegmentSubgroups", "4.4-1", [ 4, 4, 1 ], 492, 32, "option rankinitialsegmentsubgroups", "X80985CC479CD9FA3" ], [ "option SpaceEfficient", "4.4-1", [ 4, 4, 1 ], 492, 32, "option spaceefficient", "X80985CC479CD9FA3" ], [ "option CapableDescendants", "4.4-1", [ 4, 4, 1 ], 492, 32, "option capabledescendants", "X80985CC479CD9FA3" ], [ "option AllDescendants", "4.4-1", [ 4, 4, 1 ], 492, 32, "option alldescendants", "X80985CC479CD9FA3" ], [ "option Exponent", "4.4-1", [ 4, 4, 1 ], 492, 32, "option exponent", "X80985CC479CD9FA3" ], [ "option Metabelian", "4.4-1", [ 4, 4, 1 ], 492, 32, "option metabelian", "X80985CC479CD9FA3" ], [ "option GroupName", "4.4-1", [ 4, 4, 1 ], 492, 32, "option groupname", "X80985CC479CD9FA3" ], [ "option SubList", "4.4-1", [ 4, 4, 1 ], 492, 32, "option sublist", "X80985CC479CD9FA3" ], [ "option BasicAlgorithm", "4.4-1", [ 4, 4, 1 ], 492, 32, "option basicalgorithm", "X80985CC479CD9FA3" ], [ "option CustomiseOutput", "4.4-1", [ 4, 4, 1 ], 492, 32, "option customiseoutput", "X80985CC479CD9FA3" ], [ "option SetupFile", "4.4-1", [ 4, 4, 1 ], 492, 32, "option setupfile", "X80985CC479CD9FA3" ], [ "option PqWorkspace", "4.4-1", [ 4, 4, 1 ], 492, 32, "option pqworkspace", "X80985CC479CD9FA3" ], [ "\033[2XPqSupplementInnerAutomorphisms\033[102X", "4.4-2", [ 4, 4, 2 ], 627, 34, "pqsupplementinnerautomorphisms", "X8364566A80A8C24B" ], [ "\033[2XPqList\033[102X", "4.4-3", [ 4, 4, 3 ], 673, 35, "pqlist", "X79AD54E987FCACBA" ], [ "\033[2XSavePqList\033[102X", "4.4-4", [ 4, 4, 4 ], 687, 35, "savepqlist", "X85ADB9E6870EC3D1" ], [ "\033[2XPqStart\033[102X with group and workspace size", "5.1-1", [ 5, 1, 1 ], 45, 36, "pqstart with group and workspace size", "X83B2EC237F37623C" ], [ "\033[2XPqStart\033[102X with group", "5.1-1", [ 5, 1, 1 ], 45, 36, "pqstart with group", "X83B2EC237F37623C" ], [ "\033[2XPqStart\033[102X with workspace size", "5.1-1", [ 5, 1, 1 ], 45, 36, "pqstart with workspace size", "X83B2EC237F37623C" ], [ "\033[2XPqStart\033[102X", "5.1-1", [ 5, 1, 1 ], 45, 36, "pqstart", "X83B2EC237F37623C" ], [ "\033[2XPqQuit\033[102X", "5.1-2", [ 5, 1, 2 ], 71, 37, "pqquit", "X79DB761185BAB9C8" ], [ "\033[2XPqQuit\033[102X for default process", "5.1-2", [ 5, 1, 2 ], 71, 37, "pqquit for default process", "X79DB761185BAB9C8" ], [ "\033[2XPqQuitAll\033[102X", "5.1-3", [ 5, 1, 3 ], 85, 37, "pqquitall", "X7FF8F2657B1B008E" ], [ "\033[2XPqProcessIndex\033[102X", "5.2-1", [ 5, 2, 1 ], 96, 37, "pqprocessindex", "X8558B20A80B999AE" ], [ "\033[2XPqProcessIndex\033[102X for default process", "5.2-1", [ 5, 2, 1 ], 96, 37, "pqprocessindex for default process", "X8558B20A80B999AE" ], [ "\033[2XPqProcessIndices\033[102X", "5.2-2", [ 5, 2, 2 ], 111, 38, "pqprocessindices", "X7E4A56D67C865291" ], [ "\033[2XIsPqProcessAlive\033[102X", "5.2-3", [ 5, 2, 3 ], 118, 38, "ispqprocessalive", "X7C103DF78435AEC7" ], [ "\033[2XIsPqProcessAlive\033[102X for default process", "5.2-3", [ 5, 2, 3 ], 118, 38, "ispqprocessalive for default process", "X7C103DF78435AEC7" ], [ "interruption", "5.2-3", [ 5, 2, 3 ], 118, 38, "interruption", "X7C103DF78435AEC7" ], [ "\033[2XPq\033[102X interactive", "5.3-1", [ 5, 3, 1 ], 144, 38, "pq interactive", "X85408C4C790439E7" ], [ "\033[2XPq\033[102X interactive, for default process", "5.3-1", [ 5, 3, 1 ], 144, 38, "pq interactive for default process", "X85408C4C790439E7" ], [ "option Prime", "5.3-1", [ 5, 3, 1 ], 144, 38, "option prime", "X85408C4C790439E7" ], [ "option ClassBound", "5.3-1", [ 5, 3, 1 ], 144, 38, "option classbound", "X85408C4C790439E7" ], [ "option Exponent", "5.3-1", [ 5, 3, 1 ], 144, 38, "option exponent", "X85408C4C790439E7" ], [ "option Relators", "5.3-1", [ 5, 3, 1 ], 144, 38, "option relators", "X85408C4C790439E7" ], [ "option Metabelian", "5.3-1", [ 5, 3, 1 ], 144, 38, "option metabelian", "X85408C4C790439E7" ], [ "option Identities", "5.3-1", [ 5, 3, 1 ], 144, 38, "option identities", "X85408C4C790439E7" ], [ "option GroupName", "5.3-1", [ 5, 3, 1 ], 144, 38, "option groupname", "X85408C4C790439E7" ], [ "option OutputLevel", "5.3-1", [ 5, 3, 1 ], 144, 38, "option outputlevel", "X85408C4C790439E7" ], [ "option RedoPcp", "5.3-1", [ 5, 3, 1 ], 144, 38, "option redopcp", "X85408C4C790439E7" ], [ "\033[2XPqEpimorphism\033[102X interactive", "5.3-2", [ 5, 3, 2 ], 236, 40, "pqepimorphism interactive", "X839E6F578227A8EA" ], [ "\033[2XPqEpimorphism\033[102X interactive, for default process", "5.3-2", [ 5, 3, 2 ], 236, 40, "pqepimorphism interactive for default process", "X839E6F578227A8EA" ], [ "\033[2XPqPCover\033[102X interactive", "5.3-3", [ 5, 3, 3 ], 256, 40, "pqpcover interactive", "X7AA64A2F8509A39A" ], [ "\033[2XPqPCover\033[102X interactive, for default process", "5.3-3", [ 5, 3, 3 ], 256, 40, "pqpcover interactive for default process", "X7AA64A2F8509A39A" ], [ "automorphisms of \033[22Xp\033[122X-groups", "5.3-3", [ 5, 3, 3 ], 256, 40, "automorphisms of p-groups", "X7AA64A2F8509A39A" ], [ "\033[2XPqStandardPresentation\033[102X interactive", "5.3-4", [ 5, 3, 4 ], 291, 41, "pqstandardpresentation interactive", "X805F32618005C087" ], [ "\033[2XStandardPresentation\033[102X interactive", "5.3-4", [ 5, 3, 4 ], 291, 41, "standardpresentation interactive", "X805F32618005C087" ], [ "option Prime", "5.3-4", [ 5, 3, 4 ], 291, 41, "option prime", "X805F32618005C087" ], [ "option pQuotient", "5.3-4", [ 5, 3, 4 ], 291, 41, "option pquotient", "X805F32618005C087" ], [ "option ClassBound", "5.3-4", [ 5, 3, 4 ], 291, 41, "option classbound", "X805F32618005C087" ], [ "option Exponent", "5.3-4", [ 5, 3, 4 ], 291, 41, "option exponent", "X805F32618005C087" ], [ "option Metabelian", "5.3-4", [ 5, 3, 4 ], 291, 41, "option metabelian", "X805F32618005C087" ], [ "option GroupName", "5.3-4", [ 5, 3, 4 ], 291, 41, "option groupname", "X805F32618005C087" ], [ "option OutputLevel", "5.3-4", [ 5, 3, 4 ], 291, 41, "option outputlevel", "X805F32618005C087" ], [ "option StandardPresentationFile", "5.3-4", [ 5, 3, 4 ], 291, 41, "option standardpresentationfile", "X805F32618005C087" ], [ "\033[2XEpimorphismPqStandardPresentation\033[102X interactive", "5.3-5", [ 5, 3, 5 ], 382, 42, "epimorphismpqstandardpresentation interactive", "X791392977B2D692D" ], [ "\033[2XEpimorphismStandardPresentation\033[102X interactive", "5.3-5", [ 5, 3, 5 ], 382, 42, "epimorphismstandardpresentation interactive", "X791392977B2D692D" ], [ "\033[2XPqDescendants\033[102X interactive", "5.3-6", [ 5, 3, 6 ], 459, 43, "pqdescendants interactive", "X795817217C53AB89" ], [ "\033[2XPqDescendants\033[102X interactive, for default process", "5.3-6", [ 5, 3, 6 ], 459, 43, "pqdescendants interactive for default process", "X795817217C53AB89" ], [ "option ClassBound", "5.3-6", [ 5, 3, 6 ], 459, 43, "option classbound", "X795817217C53AB89" ], [ "option Relators", "5.3-6", [ 5, 3, 6 ], 459, 43, "option relators", "X795817217C53AB89" ], [ "option OrderBound", "5.3-6", [ 5, 3, 6 ], 459, 43, "option orderbound", "X795817217C53AB89" ], [ "option StepSize", "5.3-6", [ 5, 3, 6 ], 459, 43, "option stepsize", "X795817217C53AB89" ], [ "option RankInitialSegmentSubgroups", "5.3-6", [ 5, 3, 6 ], 459, 43, "option rankinitialsegmentsubgroups", "X795817217C53AB89" ], [ "option SpaceEfficient", "5.3-6", [ 5, 3, 6 ], 459, 43, "option spaceefficient", "X795817217C53AB89" ], [ "option CapableDescendants", "5.3-6", [ 5, 3, 6 ], 459, 43, "option capabledescendants", "X795817217C53AB89" ], [ "option AllDescendants", "5.3-6", [ 5, 3, 6 ], 459, 43, "option alldescendants", "X795817217C53AB89" ], [ "option Exponent", "5.3-6", [ 5, 3, 6 ], 459, 43, "option exponent", "X795817217C53AB89" ], [ "option Metabelian", "5.3-6", [ 5, 3, 6 ], 459, 43, "option metabelian", "X795817217C53AB89" ], [ "option GroupName", "5.3-6", [ 5, 3, 6 ], 459, 43, "option groupname", "X795817217C53AB89" ], [ "option SubList", "5.3-6", [ 5, 3, 6 ], 459, 43, "option sublist", "X795817217C53AB89" ], [ "option BasicAlgorithm", "5.3-6", [ 5, 3, 6 ], 459, 43, "option basicalgorithm", "X795817217C53AB89" ], [ "option CustomiseOutput", "5.3-6", [ 5, 3, 6 ], 459, 43, "option customiseoutput", "X795817217C53AB89" ], [ "\033[2XPqSetPQuotientToGroup\033[102X", "5.3-7", [ 5, 3, 7 ], 595, 46, "pqsetpquotienttogroup", "X80CCF6D379E5A3B4" ], [ "\033[2XPqSetPQuotientToGroup\033[102X for default process", "5.3-7", [ 5, 3, 7 ], 595, 46, "pqsetpquotienttogroup for default process", "X80CCF6D379E5A3B4" ], [ "\033[2XPqNrPcGenerators\033[102X", "5.5-1", [ 5, 5, 1 ], 668, 47, "pqnrpcgenerators", "X7DE2F6C686C672DD" ], [ "\033[2XPqNrPcGenerators\033[102X for default process", "5.5-1", [ 5, 5, 1 ], 668, 47, "pqnrpcgenerators for default process", "X7DE2F6C686C672DD" ], [ "\033[2XPqFactoredOrder\033[102X", "5.5-2", [ 5, 5, 2 ], 678, 47, "pqfactoredorder", "X87FF98867E8FFB3C" ], [ "\033[2XPqFactoredOrder\033[102X for default process", "5.5-2", [ 5, 5, 2 ], 678, 47, "pqfactoredorder for default process", "X87FF98867E8FFB3C" ], [ "\033[2XPqOrder\033[102X", "5.5-3", [ 5, 5, 3 ], 692, 47, "pqorder", "X7B4FC9E380001A71" ], [ "\033[2XPqOrder\033[102X for default process", "5.5-3", [ 5, 5, 3 ], 692, 47, "pqorder for default process", "X7B4FC9E380001A71" ], [ "\033[2XPqPClass\033[102X", "5.5-4", [ 5, 5, 4 ], 700, 48, "pqpclass", "X87C7F7EB7C10DC4B" ], [ "\033[2XPqPClass\033[102X for default process", "5.5-4", [ 5, 5, 4 ], 700, 48, "pqpclass for default process", "X87C7F7EB7C10DC4B" ], [ "\033[2XPqWeight\033[102X", "5.5-5", [ 5, 5, 5 ], 708, 48, "pqweight", "X7EA3B6917908C20A" ], [ "\033[2XPqWeight\033[102X for default process", "5.5-5", [ 5, 5, 5 ], 708, 48, "pqweight for default process", "X7EA3B6917908C20A" ], [ "\033[2XPqCurrentGroup\033[102X", "5.5-6", [ 5, 5, 6 ], 718, 48, "pqcurrentgroup", "X79862B83817E20E1" ], [ "\033[2XPqCurrentGroup\033[102X for default process", "5.5-6", [ 5, 5, 6 ], 718, 48, "pqcurrentgroup for default process", "X79862B83817E20E1" ], [ "\033[2XPqDisplayPcPresentation\033[102X", "5.5-7", [ 5, 5, 7 ], 732, 48, "pqdisplaypcpresentation", "X805A50687D82B9EC" ], [ "\033[2XPqDisplayPcPresentation\033[102X for default process", "5.5-7", [ 5, 5, 7 ], 732, 48, "pqdisplaypcpresentation for default process", "X805A50687D82B9EC" ], [ "\033[2XPqSetOutputLevel\033[102X", "5.5-8", [ 5, 5, 8 ], 750, 48, "pqsetoutputlevel", "X80410979854280E1" ], [ "\033[2XPqSetOutputLevel\033[102X for default process", "5.5-8", [ 5, 5, 8 ], 750, 48, "pqsetoutputlevel for default process", "X80410979854280E1" ], [ "\033[2XPqEvaluateIdentities\033[102X", "5.5-9", [ 5, 5, 9 ], 762, 49, "pqevaluateidentities", "X7B8C72B37AE667F7" ], [ "\033[2XPqEvaluateIdentities\033[102X for default process", "5.5-9", [ 5, 5, 9 ], 762, 49, "pqevaluateidentities for default process", "X7B8C72B37AE667F7" ], [ "\033[2XPqPcPresentation\033[102X", "5.6-1", [ 5, 6, 1 ], 779, 49, "pqpcpresentation", "X7BF135DD84A781EB" ], [ "\033[2XPqPcPresentation\033[102X for default process", "5.6-1", [ 5, 6, 1 ], 779, 49, "pqpcpresentation for default process", "X7BF135DD84A781EB" ], [ "\033[2XPqSavePcPresentation\033[102X", "5.6-2", [ 5, 6, 2 ], 822, 50, "pqsavepcpresentation", "X7D947CEA82C44898" ], [ "\033[2XPqSavePcPresentation\033[102X for default process", "5.6-2", [ 5, 6, 2 ], 822, 50, "pqsavepcpresentation for default process", "X7D947CEA82C44898" ], [ "\033[2XPqRestorePcPresentation\033[102X", "5.6-3", [ 5, 6, 3 ], 838, 50, "pqrestorepcpresentation", "X7FD001C0798EF219" ], [ "\033[2XPqRestorePcPresentation\033[102X for default process", "5.6-3", [ 5, 6, 3 ], 838, 50, "pqrestorepcpresentation for default process", "X7FD001C0798EF219" ], [ "\033[2XPqNextClass\033[102X", "5.6-4", [ 5, 6, 4 ], 852, 50, "pqnextclass", "X832F69597C095A27" ], [ "\033[2XPqNextClass\033[102X for default process", "5.6-4", [ 5, 6, 4 ], 852, 50, "pqnextclass for default process", "X832F69597C095A27" ], [ "option QueueFactor", "5.6-4", [ 5, 6, 4 ], 852, 50, "option queuefactor", "X832F69597C095A27" ], [ "\033[2XPqComputePCover\033[102X", "5.6-5", [ 5, 6, 5 ], 883, 51, "pqcomputepcover", "X7CF9DF7A84D387CB" ], [ "\033[2XPqComputePCover\033[102X for default process", "5.6-5", [ 5, 6, 5 ], 883, 51, "pqcomputepcover for default process", "X7CF9DF7A84D387CB" ], [ "\033[2XPqCollect\033[102X", "5.7-1", [ 5, 7, 1 ], 910, 51, "pqcollect", "X8633356078CA4115" ], [ "\033[2XPqCollect\033[102X for default process", "5.7-1", [ 5, 7, 1 ], 910, 51, "pqcollect for default process", "X8633356078CA4115" ], [ "\033[2XPqSolveEquation\033[102X", "5.7-2", [ 5, 7, 2 ], 937, 52, "pqsolveequation", "X86CCB77281FDC0FC" ], [ "\033[2XPqSolveEquation\033[102X for default process", "5.7-2", [ 5, 7, 2 ], 937, 52, "pqsolveequation for default process", "X86CCB77281FDC0FC" ], [ "\033[2XPqCommutator\033[102X", "5.7-3", [ 5, 7, 3 ], 950, 52, "pqcommutator", "X789B120B7E2F3017" ], [ "\033[2XPqCommutator\033[102X for default process", "5.7-3", [ 5, 7, 3 ], 950, 52, "pqcommutator for default process", "X789B120B7E2F3017" ], [ "\033[2XPqSetupTablesForNextClass\033[102X", "5.7-4", [ 5, 7, 4 ], 966, 52, "pqsetuptablesfornextclass", "X7A61A15E78F52743" ], [ "\033[2XPqSetupTablesForNextClass\033[102X for default process", "5.7-4", [ 5, 7, 4 ], 966, 52, "pqsetuptablesfornextclass for default process", "X7A61A15E78F52743" ], [ "\033[2XPqTails\033[102X", "5.7-5", [ 5, 7, 5 ], 979, 52, "pqtails", "X84F7DD8582B368D3" ], [ "\033[2XPqTails\033[102X for default process", "5.7-5", [ 5, 7, 5 ], 979, 52, "pqtails for default process", "X84F7DD8582B368D3" ], [ "\033[2XPqComputeTails\033[102X", "5.7-6", [ 5, 7, 6 ], 1013, 53, "pqcomputetails", "X8389F6437ED634B8" ], [ "\033[2XPqComputeTails\033[102X for default process", "5.7-6", [ 5, 7, 6 ], 1013, 53, "pqcomputetails for default process", "X8389F6437ED634B8" ], [ "\033[2XPqAddTails\033[102X", "5.7-7", [ 5, 7, 7 ], 1027, 53, "pqaddtails", "X83CD6D888372DFB8" ], [ "\033[2XPqAddTails\033[102X for default process", "5.7-7", [ 5, 7, 7 ], 1027, 53, "pqaddtails for default process", "X83CD6D888372DFB8" ], [ "\033[2XPqDoConsistencyChecks\033[102X", "5.7-8", [ 5, 7, 8 ], 1042, 53, "pqdoconsistencychecks", "X82AA8FAE85826BB9" ], [ "\033[2XPqDoConsistencyChecks\033[102X for default process", "5.7-8", [ 5, 7, 8 ], 1042, 53, "pqdoconsistencychecks for default process", "X82AA8FAE85826BB9" ], [ "\033[2XPqCollectDefiningRelations\033[102X", "5.7-9", [ 5, 7, 9 ], 1084, 54, "pqcollectdefiningrelations", "X7A01EE0382689928" ], [ "\033[2XPqCollectDefiningRelations\033[102X for default process", "5.7-9", [ 5, 7, 9 ], 1084, 54, "pqcollectdefiningrelations for default process", "X7A01EE0382689928" ], [ "\033[2XPqCollectWordInDefiningGenerators\033[102X", "5.7-10", [ 5, 7, 10 ], 1098, 54, "pqcollectwordindefininggenerators", "X7C2B4C1E7BEB19D5" ], [ "\033[2XPqCollectWordInDefiningGenerators\033[102X for default process", "5.7-10", [ 5, 7, 10 ], 1098, 54, "pqcollectwordindefininggenerators for default process", "X7C2B4C1E7BEB19D5" ], [ "\033[2XPqCommutatorDefiningGenerators\033[102X", "5.7-11", [ 5, 7, 11 ], 1116, 55, "pqcommutatordefininggenerators", "X7DB05AA587D7A052" ], [ "\033[2XPqCommutatorDefiningGenerators\033[102X for default process", "5.7-11", [ 5, 7, 11 ], 1116, 55, "pqcommutatordefininggenerators for default process", "X7DB05AA587D7A052" ], [ "\033[2XPqDoExponentChecks\033[102X", "5.7-12", [ 5, 7, 12 ], 1132, 55, "pqdoexponentchecks", "X80E563A97EDE083E" ], [ "\033[2XPqDoExponentChecks\033[102X for default process", "5.7-12", [ 5, 7, 12 ], 1132, 55, "pqdoexponentchecks for default process", "X80E563A97EDE083E" ], [ "\033[2XPqEliminateRedundantGenerators\033[102X", "5.7-13", [ 5, 7, 13 ], 1147, 55, "pqeliminateredundantgenerators", "X7BBAB2787B305516" ], [ "\033[2XPqEliminateRedundantGenerators\033[102X for default process", "5.7-13", [ 5, 7, 13 ], 1147, 55, "pqeliminateredundantgenerators for default process", "X7BBAB2787B305516" ], [ "\033[2XPqRevertToPreviousClass\033[102X", "5.7-14", [ 5, 7, 14 ], 1158, 55, "pqreverttopreviousclass", "X783E53B5853F45E6" ], [ "\033[2XPqRevertToPreviousClass\033[102X for default process", "5.7-14", [ 5, 7, 14 ], 1158, 55, "pqreverttopreviousclass for default process", "X783E53B5853F45E6" ], [ "\033[2XPqSetMaximalOccurrences\033[102X", "5.7-15", [ 5, 7, 15 ], 1169, 56, "pqsetmaximaloccurrences", "X8265A6DB81CD24DB" ], [ "\033[2XPqSetMaximalOccurrences\033[102X for default process", "5.7-15", [ 5, 7, 15 ], 1169, 56, "pqsetmaximaloccurrences for default process", "X8265A6DB81CD24DB" ], [ "\033[2XPqSetMetabelian\033[102X", "5.7-16", [ 5, 7, 16 ], 1189, 56, "pqsetmetabelian", "X87A35ABB7E11595E" ], [ "\033[2XPqSetMetabelian\033[102X for default process", "5.7-16", [ 5, 7, 16 ], 1189, 56, "pqsetmetabelian for default process", "X87A35ABB7E11595E" ], [ "\033[2XPqDoConsistencyCheck\033[102X", "5.7-17", [ 5, 7, 17 ], 1200, 56, "pqdoconsistencycheck", "X7C7D17F878AA1BAA" ], [ "\033[2XPqDoConsistencyCheck\033[102X for default process", "5.7-17", [ 5, 7, 17 ], 1200, 56, "pqdoconsistencycheck for default process", "X7C7D17F878AA1BAA" ], [ "\033[2XPqJacobi\033[102X", "5.7-17", [ 5, 7, 17 ], 1200, 56, "pqjacobi", "X7C7D17F878AA1BAA" ], [ "\033[2XPqJacobi\033[102X for default process", "5.7-17", [ 5, 7, 17 ], 1200, 56, "pqjacobi for default process", "X7C7D17F878AA1BAA" ], [ "\033[2XPqCompact\033[102X", "5.7-18", [ 5, 7, 18 ], 1254, 57, "pqcompact", "X843953F48319FDE1" ], [ "\033[2XPqCompact\033[102X for default process", "5.7-18", [ 5, 7, 18 ], 1254, 57, "pqcompact for default process", "X843953F48319FDE1" ], [ "\033[2XPqEchelonise\033[102X", "5.7-19", [ 5, 7, 19 ], 1266, 57, "pqechelonise", "X80344EEC78A09ACF" ], [ "\033[2XPqEchelonise\033[102X for default process", "5.7-19", [ 5, 7, 19 ], 1266, 57, "pqechelonise for default process", "X80344EEC78A09ACF" ], [ "\033[2XPqSupplyAutomorphisms\033[102X", "5.7-20", [ 5, 7, 20 ], 1282, 57, "pqsupplyautomorphisms", "X852947327FC39DDF" ], [ "\033[2XPqSupplyAutomorphisms\033[102X for default process", "5.7-20", [ 5, 7, 20 ], 1282, 57, "pqsupplyautomorphisms for default process", "X852947327FC39DDF" ], [ "\033[2XPqExtendAutomorphisms\033[102X", "5.7-21", [ 5, 7, 21 ], 1300, 58, "pqextendautomorphisms", "X7B919B537C042DAD" ], [ "\033[2XPqExtendAutomorphisms\033[102X for default process", "5.7-21", [ 5, 7, 21 ], 1300, 58, "pqextendautomorphisms for default process", "X7B919B537C042DAD" ], [ "\033[2XPqApplyAutomorphisms\033[102X", "5.7-22", [ 5, 7, 22 ], 1312, 58, "pqapplyautomorphisms", "X7CFD54657DE4BD39" ], [ "\033[2XPqApplyAutomorphisms\033[102X for default process", "5.7-22", [ 5, 7, 22 ], 1312, 58, "pqapplyautomorphisms for default process", "X7CFD54657DE4BD39" ], [ "\033[2XPqDisplayStructure\033[102X", "5.7-23", [ 5, 7, 23 ], 1323, 58, "pqdisplaystructure", "X81A3D5BF87A34934" ], [ "\033[2XPqDisplayStructure\033[102X for default process", "5.7-23", [ 5, 7, 23 ], 1323, 58, "pqdisplaystructure for default process", "X81A3D5BF87A34934" ], [ "\033[2XPqDisplayAutomorphisms\033[102X", "5.7-24", [ 5, 7, 24 ], 1386, 59, "pqdisplayautomorphisms", "X853834B478C4EEE2" ], [ "\033[2XPqDisplayAutomorphisms\033[102X for default process", "5.7-24", [ 5, 7, 24 ], 1386, 59, "pqdisplayautomorphisms for default process", "X853834B478C4EEE2" ], [ "\033[2XPqWritePcPresentation\033[102X", "5.7-25", [ 5, 7, 25 ], 1402, 59, "pqwritepcpresentation", "X80687A138626EB2D" ], [ "\033[2XPqWritePcPresentation\033[102X for default process", "5.7-25", [ 5, 7, 25 ], 1402, 59, "pqwritepcpresentation for default process", "X80687A138626EB2D" ], [ "\033[2XPqSPComputePcpAndPCover\033[102X", "5.8-1", [ 5, 8, 1 ], 1424, 60, "pqspcomputepcpandpcover", "X78D1963D85C71B7B" ], [ "\033[2XPqSPComputePcpAndPCover\033[102X for default process", "5.8-1", [ 5, 8, 1 ], 1424, 60, "pqspcomputepcpandpcover for default process", "X78D1963D85C71B7B" ], [ "\033[2XPqSPStandardPresentation\033[102X", "5.8-2", [ 5, 8, 2 ], 1446, 60, "pqspstandardpresentation", "X876F30187E89E467" ], [ "\033[2XPqSPStandardPresentation\033[102X for default process", "5.8-2", [ 5, 8, 2 ], 1446, 60, "pqspstandardpresentation for default process", "X876F30187E89E467" ], [ "option ClassBound", "5.8-2", [ 5, 8, 2 ], 1446, 60, "option classbound", "X876F30187E89E467" ], [ "option PcgsAutomorphisms", "5.8-2", [ 5, 8, 2 ], 1446, 60, "option pcgsautomorphisms", "X876F30187E89E467" ], [ "option StandardPresentationFile", "5.8-2", [ 5, 8, 2 ], 1446, 60, "option standardpresentationfile", "X876F30187E89E467" ], [ "\033[2XPqSPSavePresentation\033[102X", "5.8-3", [ 5, 8, 3 ], 1480, 61, "pqspsavepresentation", "X7E1B2B088322F48A" ], [ "\033[2XPqSPSavePresentation\033[102X for default process", "5.8-3", [ 5, 8, 3 ], 1480, 61, "pqspsavepresentation for default process", "X7E1B2B088322F48A" ], [ "\033[2XPqSPCompareTwoFilePresentations\033[102X", "5.8-4", [ 5, 8, 4 ], 1496, 61, "pqspcomparetwofilepresentations", "X81D2F9FF7C241D1E" ], [ "\033[2XPqSPCompareTwoFilePresentations\033[102X for default process", "5.8-4", [ 5, 8, 4 ], 1496, 61, "pqspcomparetwofilepresentations for default process", "X81D2F9FF7C241D1E" ], [ "\033[2XPqSPIsomorphism\033[102X", "5.8-5", [ 5, 8, 5 ], 1519, 61, "pqspisomorphism", "X7D1277E584590ECE" ], [ "\033[2XPqSPIsomorphism\033[102X for default process", "5.8-5", [ 5, 8, 5 ], 1519, 61, "pqspisomorphism for default process", "X7D1277E584590ECE" ], [ "\033[2XPqPGSupplyAutomorphisms\033[102X", "5.9-1", [ 5, 9, 1 ], 1540, 62, "pqpgsupplyautomorphisms", "X794A8D667A9D725A" ], [ "\033[2XPqPGSupplyAutomorphisms\033[102X for default process", "5.9-1", [ 5, 9, 1 ], 1540, 62, "pqpgsupplyautomorphisms for default process", "X794A8D667A9D725A" ], [ "\033[2XPqPGExtendAutomorphisms\033[102X", "5.9-2", [ 5, 9, 2 ], 1559, 62, "pqpgextendautomorphisms", "X87F251077C65B6DD" ], [ "\033[2XPqPGExtendAutomorphisms\033[102X for default process", "5.9-2", [ 5, 9, 2 ], 1559, 62, "pqpgextendautomorphisms for default process", "X87F251077C65B6DD" ], [ "\033[2XPqPGConstructDescendants\033[102X", "5.9-3", [ 5, 9, 3 ], 1573, 62, "pqpgconstructdescendants", "X82FD51A27D269E43" ], [ "\033[2XPqPGConstructDescendants\033[102X for default process", "5.9-3", [ 5, 9, 3 ], 1573, 62, "pqpgconstructdescendants for default process", "X82FD51A27D269E43" ], [ "\033[2XPqPGSetDescendantToPcp\033[102X with class", "5.9-4", [ 5, 9, 4 ], 1594, 63, "pqpgsetdescendanttopcp with class", "X7E9D511385D48A98" ], [ "\033[2XPqPGSetDescendantToPcp\033[102X with class, for default process", "5.9-4", [ 5, 9, 4 ], 1594, 63, "pqpgsetdescendanttopcp with class for default process", "X7E9D511385D48A98" ], [ "\033[2XPqPGSetDescendantToPcp\033[102X", "5.9-4", [ 5, 9, 4 ], 1594, 63, "pqpgsetdescendanttopcp", "X7E9D511385D48A98" ], [ "\033[2XPqPGSetDescendantToPcp\033[102X for default process", "5.9-4", [ 5, 9, 4 ], 1594, 63, "pqpgsetdescendanttopcp for default process", "X7E9D511385D48A98" ], [ "\033[2XPqPGRestoreDescendantFromFile\033[102X with class", "5.9-4", [ 5, 9, 4 ], 1594, 63, "pqpgrestoredescendantfromfile with class", "X7E9D511385D48A98" ], [ "\033[2XPqPGRestoreDescendantFromFile\033[102X with class, for default proc\ ess", "5.9-4", [ 5, 9, 4 ], 1594, 63, "pqpgrestoredescendantfromfile with class for default process", "X7E9D511385D48A98" ], [ "\033[2XPqPGRestoreDescendantFromFile\033[102X", "5.9-4", [ 5, 9, 4 ], 1594, 63, "pqpgrestoredescendantfromfile", "X7E9D511385D48A98" ], [ "\033[2XPqPGRestoreDescendantFromFile\033[102X for default process", "5.9-4", [ 5, 9, 4 ], 1594, 63, "pqpgrestoredescendantfromfile for default process", "X7E9D511385D48A98" ], [ "\033[2XPqAPGDegree\033[102X", "5.10-1", [ 5, 10, 1 ], 1640, 64, "pqapgdegree", "X7E539E4B78A6CE8D" ], [ "\033[2XPqAPGDegree\033[102X for default process", "5.10-1", [ 5, 10, 1 ], 1640, 64, "pqapgdegree for default process", "X7E539E4B78A6CE8D" ], [ "\033[2XPqAPGPermutations\033[102X", "5.10-2", [ 5, 10, 2 ], 1650, 64, "pqapgpermutations", "X7F1182A77AB7650C" ], [ "\033[2XPqAPGPermutations\033[102X for default process", "5.10-2", [ 5, 10, 2 ], 1650, 64, "pqapgpermutations for default process", "X7F1182A77AB7650C" ], [ "\033[2XPqAPGOrbits\033[102X", "5.10-3", [ 5, 10, 3 ], 1661, 64, "pqapgorbits", "X7DD9E7507AA888CC" ], [ "\033[2XPqAPGOrbits\033[102X for default process", "5.10-3", [ 5, 10, 3 ], 1661, 64, "pqapgorbits for default process", "X7DD9E7507AA888CC" ], [ "\033[2XPqAPGOrbitRepresentatives\033[102X", "5.10-4", [ 5, 10, 4 ], 1674, 64, "pqapgorbitrepresentatives", "X795A756C78BE5923" ], [ "\033[2XPqAPGOrbitRepresentatives\033[102X for default process", "5.10-4", [ 5, 10, 4 ], 1674, 64, "pqapgorbitrepresentatives for default process", "X795A756C78BE5923" ], [ "\033[2XPqAPGSingleStage\033[102X", "5.10-5", [ 5, 10, 5 ], 1690, 64, "pqapgsinglestage", "X7E5D6D5782FE190E" ], [ "\033[2XPqAPGSingleStage\033[102X for default process", "5.10-5", [ 5, 10, 5 ], 1690, 64, "pqapgsinglestage for default process", "X7E5D6D5782FE190E" ], [ "\033[2XPqRead\033[102X", "5.11-1", [ 5, 11, 1 ], 1712, 65, "pqread", "X8464AF7E83A523C1" ], [ "\033[2XPqRead\033[102X for default process", "5.11-1", [ 5, 11, 1 ], 1712, 65, "pqread for default process", "X8464AF7E83A523C1" ], [ "\033[2XPqReadAll\033[102X", "5.11-2", [ 5, 11, 2 ], 1727, 65, "pqreadall", "X7ADD82207D049A87" ], [ "\033[2XPqReadAll\033[102X for default process", "5.11-2", [ 5, 11, 2 ], 1727, 65, "pqreadall for default process", "X7ADD82207D049A87" ], [ "\033[2XPqReadUntil\033[102X", "5.11-3", [ 5, 11, 3 ], 1741, 65, "pqreaduntil", "X7EBF3C3681671879" ], [ "\033[2XPqReadUntil\033[102X for default process", "5.11-3", [ 5, 11, 3 ], 1741, 65, "pqreaduntil for default process", "X7EBF3C3681671879" ], [ "\033[2XPqReadUntil\033[102X with modify map", "5.11-3", [ 5, 11, 3 ], 1741, 65, "pqreaduntil with modify map", "X7EBF3C3681671879" ], [ "\033[2XPqReadUntil\033[102X with modify map, for default process", "5.11-3", [ 5, 11, 3 ], 1741, 65, "pqreaduntil with modify map for default process", "X7EBF3C3681671879" ] , [ "\033[2XPqWrite\033[102X", "5.11-4", [ 5, 11, 4 ], 1766, 66, "pqwrite", "X83CBE77F78057E21" ], [ "\033[2XPqWrite\033[102X for default process", "5.11-4", [ 5, 11, 4 ], 1766, 66, "pqwrite for default process", "X83CBE77F78057E21" ], [ "\033[2XAllANUPQoptions\033[102X", "6.1-1", [ 6, 1, 1 ], 14, 67, "allanupqoptions", "X7846E25D8065D78F" ], [ "\033[2XANUPQoptions\033[102X", "6.1-2", [ 6, 1, 2 ], 35, 67, "anupqoptions", "X82D560C77D195089" ], [ "option Prime", "6.2", [ 6, 2, 0 ], 73, 68, "option prime", "X87EE6DD67C9996A3" ], [ "option ClassBound", "6.2", [ 6, 2, 0 ], 73, 68, "option classbound", "X87EE6DD67C9996A3" ], [ "option pQuotient", "6.2", [ 6, 2, 0 ], 73, 68, "option pquotient", "X87EE6DD67C9996A3" ], [ "option Exponent", "6.2", [ 6, 2, 0 ], 73, 68, "option exponent", "X87EE6DD67C9996A3" ], [ "option Relators", "6.2", [ 6, 2, 0 ], 73, 68, "option relators", "X87EE6DD67C9996A3" ], [ "option Metabelian", "6.2", [ 6, 2, 0 ], 73, 68, "option metabelian", "X87EE6DD67C9996A3" ], [ "option GroupName", "6.2", [ 6, 2, 0 ], 73, 68, "option groupname", "X87EE6DD67C9996A3" ], [ "option Identities", "6.2", [ 6, 2, 0 ], 73, 68, "option identities", "X87EE6DD67C9996A3" ], [ "option OutputLevel", "6.2", [ 6, 2, 0 ], 73, 68, "option outputlevel", "X87EE6DD67C9996A3" ], [ "option RedoPcp", "6.2", [ 6, 2, 0 ], 73, 68, "option redopcp", "X87EE6DD67C9996A3" ], [ "option SetupFile", "6.2", [ 6, 2, 0 ], 73, 68, "option setupfile", "X87EE6DD67C9996A3" ], [ "option PqWorkspace", "6.2", [ 6, 2, 0 ], 73, 68, "option pqworkspace", "X87EE6DD67C9996A3" ], [ "option PcgsAutomorphisms", "6.2", [ 6, 2, 0 ], 73, 68, "option pcgsautomorphisms", "X87EE6DD67C9996A3" ], [ "option OrderBound", "6.2", [ 6, 2, 0 ], 73, 68, "option orderbound", "X87EE6DD67C9996A3" ], [ "option StepSize", "6.2", [ 6, 2, 0 ], 73, 68, "option stepsize", "X87EE6DD67C9996A3" ], [ "option RankInitialSegmentSubgroups", "6.2", [ 6, 2, 0 ], 73, 68, "option rankinitialsegmentsubgroups", "X87EE6DD67C9996A3" ], [ "option SpaceEfficient", "6.2", [ 6, 2, 0 ], 73, 68, "option spaceefficient", "X87EE6DD67C9996A3" ], [ "option CapableDescendants", "6.2", [ 6, 2, 0 ], 73, 68, "option capabledescendants", "X87EE6DD67C9996A3" ], [ "option AllDescendants", "6.2", [ 6, 2, 0 ], 73, 68, "option alldescendants", "X87EE6DD67C9996A3" ], [ "option TreeDepth", "6.2", [ 6, 2, 0 ], 73, 68, "option treedepth", "X87EE6DD67C9996A3" ], [ "option SubList", "6.2", [ 6, 2, 0 ], 73, 68, "option sublist", "X87EE6DD67C9996A3" ], [ "option NumberOfSolubleAutomorphisms", "6.2", [ 6, 2, 0 ], 73, 68, "option numberofsolubleautomorphisms", "X87EE6DD67C9996A3" ], [ "option RelativeOrders", "6.2", [ 6, 2, 0 ], 73, 68, "option relativeorders", "X87EE6DD67C9996A3" ], [ "option BasicAlgorithm", "6.2", [ 6, 2, 0 ], 73, 68, "option basicalgorithm", "X87EE6DD67C9996A3" ], [ "option CustomiseOutput", "6.2", [ 6, 2, 0 ], 73, 68, "option customiseoutput", "X87EE6DD67C9996A3" ], [ "option StandardPresentationFile", "6.2", [ 6, 2, 0 ], 73, 68, "option standardpresentationfile", "X87EE6DD67C9996A3" ], [ "option QueueFactor", "6.2", [ 6, 2, 0 ], 73, 68, "option queuefactor", "X87EE6DD67C9996A3" ], [ "option Bounds", "6.2", [ 6, 2, 0 ], 73, 68, "option bounds", "X87EE6DD67C9996A3" ], [ "option PrintAutomorphisms", "6.2", [ 6, 2, 0 ], 73, 68, "option printautomorphisms", "X87EE6DD67C9996A3" ], [ "option PrintPermutations", "6.2", [ 6, 2, 0 ], 73, 68, "option printpermutations", "X87EE6DD67C9996A3" ], [ "option Filename", "6.2", [ 6, 2, 0 ], 73, 68, "option filename", "X87EE6DD67C9996A3" ], [ "\033[10XANUPQ_GAP_EXEC\033[110X environment variable", "7.", [ 7, 0, 0 ], 1, 75, "anupq_gap_exec environment variable", "X7FB487238298CF42" ], [ "\033[10XANUPQ_GAP_EXEC\033[110X environment variable", "7.1", [ 7, 1, 0 ], 105, 76, "anupq_gap_exec environment variable", "X854577C8800DC7C2" ], [ "\033[10XANUPQ_GAP_EXEC\033[110X environment variable", "7.2", [ 7, 2, 0 ], 155, 77, "anupq_gap_exec environment variable", "X82906B5184C61063" ], [ "\033[22XB(5,4)\033[122X", "a.3", [ "A", 3, 0 ], 366, 85, "b 5 4", "X7A997D1A8532A84B" ], [ "\033[2XPqDescendantsTreeCoclassOne\033[102X", "a.4-1", [ "A", 4, 1 ], 611, 90, "pqdescendantstreecoclassone", "X805E6B418193CF2D" ], [ "\033[2XPqDescendantsTreeCoclassOne\033[102X for default process", "a.4-1", [ "A", 4, 1 ], 611, 90, "pqdescendantstreecoclassone for default process", "X805E6B418193CF2D" ] ] ); anupq-3.3.0/doc/chapBib_mj.html000644 000766 000024 00000023144 14355420744 016615 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - References

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

References

[HN80] Havas, G. and Newman, M. F., Application of computers to questions like those of Burnside, in Burnside groups (Proc. Workshop, Univ. Bielefeld, Bielefeld, 1977), Springer, Lecture Notes in Math., 806, Berlin (1980), 211--230.

[LGS90] Leedham-Green, C. R. and Soicher, L. H., Collection from the left and other strategies, J. Symbolic Comput., 9 (5-6) (1990), 665--675
(Computational group theory, Part 1).

[New77] Newman, M. F., Determination of groups of prime-power order, in Group theory (Proc. Miniconf., Australian Nat. Univ., Canberra, 1975), Springer, Berlin (1977), 73--84. Lecture Notes in Math., Vol. 573.

[NNN98] Newman, M. F., Nickel, W. and Niemeyer, A. C., Descriptions of groups of prime-power order, J. Symbolic Comput., 25 (5) (1998), 665--682.

[NO96] Newman, M. F. and O'Brien, E. A., Application of computers to questions like those of Burnside. II, Internat. J. Algebra Comput., 6 (5) (1996), 593--605.

[O'B90] O'Brien, E. A., The \(p\)-group generation algorithm, J. Symbolic Comput., 9 (5-6) (1990), 677--698
(Computational group theory, Part 1).

[O'B94] O'Brien, E. A., Isomorphism testing for \(p\)-groups, J. Symbolic Comput., 17 (2) (1994), 131, 133--147.

[O'B95] O'Brien, E. A., Computing automorphism groups of \(p\)-groups, in Computational algebra and number theory (Sydney, 1992), Kluwer Acad. Publ., Math. Appl., 325, Dordrecht (1995), 83--90.

[Sim94] Sims, C. C., Computation with finitely presented groups, Cambridge University Press, Encyclopedia of Mathematics and its Applications, 48, Cambridge (1994), xiii+604 pages.

[VL84] Vaughan-Lee, M. R., An aspect of the nilpotent quotient algorithm, in Computational group theory (Durham, 1982), Academic Press, London (1984), 75--83.

[VL90a] Vaughan-Lee, M., The restricted Burnside problem, The Clarendon Press Oxford University Press, London Mathematical Society Monographs. New Series, 5, New York (1990), xiv+209 pages
(Oxford Science Publications).

[VL90b] Vaughan-Lee, M. R., Collection from the left, J. Symbolic Comput., 9 (5-6) (1990), 725--733
(Computational group theory, Part 1).

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/_entities.xml000644 000766 000024 00000000132 14355420736 016407 0ustar00mhornstaff000000 000000 ANUPQ'> AutPGrp'> anupq-3.3.0/doc/chap0_mj.html000644 000766 000024 00000067624 14355420744 016273 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Contents
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

ANUPQ

ANU p-Quotient

3.3.0

5 January 2023

Greg Gamble
Email: Greg.Gamble@uwa.edu.au
Homepage: http://school.maths.uwa.edu.au/~gregg
Address:
Department of Mathematics and Statistics
Curtin University
GPO Box U 1987
Perth WA 6845
Australia

Werner Nickel
Homepage: https://www2.mathematik.tu-darmstadt.de/~nickel/

Eamonn O'Brien
Email: obrien@math.auckland.ac.nz
Homepage: https://www.math.auckland.ac.nz/~obrien
Address:
Department of Mathematics
University of Auckland
Private Bag 92019
Auckland
New Zealand

Copyright

© 2001-2016 by Greg Gamble

© 2001-2005 by Werner Nickel

© 1995-2001 by Eamon O'Brien

The GAP package ANUPQ is licensed under the Artistic License 2.0.

Contents

5 Interactive ANUPQ functions

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/ANUPQ.xml000644 000766 000024 00000001072 14355420736 015314 0ustar00mhornstaff000000 000000 ] > <#Include SYSTEM "title.xml"> <#Include SYSTEM "intro.xml"> <#Include SYSTEM "basics.xml"> <#Include SYSTEM "infra.xml"> <#Include SYSTEM "non-interact.xml"> <#Include SYSTEM "interact.xml"> <#Include SYSTEM "options.xml"> <#Include SYSTEM "install.xml"> <#Include SYSTEM "examples.xml"> anupq-3.3.0/doc/chap2.html000644 000766 000024 00000066731 14355420744 015605 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 2: Mathematical Background and Terminology
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

2 Mathematical Background and Terminology

In this chapter we will give a brief description of the mathematical notions used in the algorithms implemented in the ANU pq program that are made accessible from GAP through this package. For proofs and details we will point to relevant places in the published literature. Also we will try to give some explanation of terminology that may help to use the "low-level" interactive functions described in Section Low-level Interactive ANUPQ functions based on menu items of the pq program. However, users who intend to use these functions are strongly advised to acquire a thorough understanding of the algorithms from the quoted literature. There is little or no checking done in these functions and naive use may result in incorrect results.

2.1 Basic notions

2.1-1 pc Presentations and Consistency

For details, see e.g. [NNN98].

Every finite p-group G has a presentation of the form:

\{a_1,\dots,a_n \mid a_i^p = v_{ii}, 1 \le i \le n, [a_k, a_j] = v_{jk}, 1 \le j < k \le n \}.

where v_jk is a word in the elements a_k+1,dots,a_n for 1 ≤ j ≤ k ≤ n.

This is called a power-commutator presentation (or pc presentation or pcp) of G, generators from such a presentation will be referred to as pc generators. In terms of such pc generators every element of G can be written in a "normal form" a_1^e_1dots a_n^e_n with 0 ≤ e_i < p. Moreover any given product of the generators can be brought into such a normal form using the defining relations in the above presentation as rewrite rules. Any such process is called collection. For the discussion of various collection methods see [LGS90] and [VL90b].

Every p-group of order p^n has such a pcp on n generators and conversely every such presentation defines a p-group. However a p-group defined by a pcp on n generators can be of smaller order p^m with m<n. A pcp on n generators that does in fact define a p-group of order p^n is called consistent in this manual, in line with most of the literature on the algorithms occurring here. A consistent pcp determines a confluent rewriting system (see IsConfluent (Reference: IsConfluent) of the GAP Reference Manual) for the group it defines and for this reason often (in particular in the GAP Reference Manual) such a pcp presentation is also called confluent.

Consistency of a pcp is tantamount to the fact that for any given word in the generators any two collections will yield the same normal form.

Consistency of a pcp can be checked by a finite set of consistency conditions, demanding that collection of the left hand side and of the right hand side of certain equations, starting with subproducts indicated by bracketing, will result in the same normal form. There are 3 types of such equations (that will be referred to in the manual):

\begin{array}{rclrl} (a^n)a &=& a(a^n) &&{\rm (Type 1)} \\ (b^n)a &=& b^{(n-1)}(ba), b(a^n) = (ba)a^{(n-1)} &&{\rm (Type 2)} \\ c(ba) &=& (cb)a &&{\rm (Type 3)} \\ \end{array}

See [VL84] for a description of a sufficient set of consistency conditions in the context of the p-quotient algorithm.

2.1-2 Exponent-p Central Series and Weighted pc Presentations

For details, see [NNN98].

The (descending or lower) (exponent-)p-central series of an arbitrary group G is defined by

P_0(G) := G, P_i(G) := [G, P_{i-1}(G)] P_{i-1}(G)^p.

For a p-group G this series terminates with the trivial group. G has p-class c if c is the smallest integer such that P_c(G) is the trivial group. In this manual, as well as in much of the literature about the pq- and related algorithms, the p-class is often referred to simply by class.

Let the p-group G have a consistent pcp as above. Then the subgroups

\langle1\rangle < {\langle}a_n\rangle < {\langle}a_n, a_{n-1}\rangle < \dots < {\langle}a_n,\dots,a_i\rangle < \dots < G

form a central series of G. If this refines the p-central series, we can define the weight function w for the pc generators by w(a_i) = k, if a_i is contained in P_k-1(G) but not in P_k(G).

The pair of such a weight function and a pcp allowing it, is called a weighted pcp.

2.1-3 p-Cover, p-Multiplicator

For details, see [NNN98].

Let d be the minimal number of generators of the p-group G of p-class c. Then G is isomorphic to a factor group F/R of a free group F of rank d. We denote [F, R] R^p by R^*. It can be proved (see e.g. [O'B90]) that the isomorphism type of G^* := F/R^* depends only on G. G^* is called the p-covering group or p-cover of G, and R/R^* the p-multiplicator of G. The p-multiplicator is, of course, an elementary abelian p-group; its minimal number of generators is called the (p-)multiplicator rank.

2.1-4 Descendants, Capable, Terminal, Nucleus

For details, see [New77] and [O'B90].

Let again G be a p-group of p-class c and d the minimal number of generators of G. A p-group H is a descendant of G if the minimal number of generators of H is d and H/P_c(H) is isomorphic to G. A descendant H of G is an immediate descendant if it has p-class c+1. G is called capable if it has immediate descendants; otherwise it is terminal.

Let G^* = F/R^* again be the p-cover of G. Then the group P_c(G^*) is called the nucleus of G. Note that P_c(G^*) is contained in the p-multiplicator R/R^*.

It is proved (e.g. in [O'B90]) that the immediate descendants of G are obtained as factor groups of the p-cover by (proper) supplements of the nucleus in the (elementary abelian) p-multiplicator. These are also called allowable.

It is further proved there that every automorphism α of F/R extends to an automorphism α^* of the p-cover F/R^* and that the restriction of α^* to the multiplicator R/R^* is uniquely determined by α. Each extended automorphism α^* induces a permutation of the allowable subgroups. Thus the extended automorphisms determine a group P of permutations on the set A of allowable subgroups (The group P of permutations will appear in the description of some interactive functions). Choosing a representative S from each orbit of P on A, the set of factor groups F/S contains each (isomorphism type of) immediate descendant of G exactly once. For each immediate descendant, the procedure of computing the p-cover, extending the automorphisms and computing the orbits on allowable subgroups can be repeated. Iteration of this procedure can in principle be used to determine all descendants of a p-group.

2.1-5 Laws

Let l(x_1, dots, x_n) be a word in the free generators x_1, dots, x_n of a free group of rank n. Then l(x_1, dots, x_n) = 1 is called a law or identical relation in a group G if l(g_1, dots, g_n) = 1 for any choice of elements g_1, dots, g_n in G. In particular, x^e = 1 is called an exponent law, [[x,y],[u,v]] = 1 the metabelian law, and [dots [[x_1,x_2],x_2],dots, x_2] = 1 an Engel identity.

2.2 The p-quotient Algorithm

For details, see [HN80], [NO96] and [VL84]. Other descriptions of the algorithm are given in [Sim94].

The pq algorithm successively determines the factor groups of the groups of the p-central series of a finitely presented (fp) group G. If a bound b for the p-class is given, the algorithm will determine those factor groups up to at most p-class b. If the p-central series terminates with a subgroup P_k(G) with k < b, the algorithm will stop with that group. If no such bound is given, it will try to find the biggest such factor group.

G/P_1(G) is the largest elementary abelian p-factor group of G and this can be found from the relation matrix of G using matrix diagonalisation modulo p. So it suffices to explain how G/P_i+1(G) is found from G and G/P_i(G) for some i ≥ 1.

This is done, in principle, in two steps: first the p-cover of G_i := G/P_i(G) is determined (which depends only on G_i, not on G) and then G/P_i+1(G) as a factor group of this p-cover.

2.2-1 Finding the p-cover

A very detailed description of the first step is given in [NNN98], from which we just extract some passages in order to point to some terms occurring in this manual.

Let H be a p-group and p^d(b) be the order of H/P_b(H). So d := d(1) is the minimal number of generators of H. A weighted pcp of H will be called labelled if for each generator a_k, k > d one relation, having this generator as its right hand side, is marked as definition of this generator.

As described in [NNN98], a weighted labelled pcp of a p-group can be obtained stepping down its p-central series.

So let us assume that a weighted labelled pcp of G_i is given. A straightforward way of of writing down a (not necessarily consistent) pcp for its p-cover is to add generators, one for each relation which is not a definition, and modify the right hand side of each such relation by multiplying it on the right by one of the new generators -- a different generator for each such relation. Further relations are then added to make the new generators central and of order p. This procedure is called adding tails. A more formal description of it is again given in [NNN98].

It is important to realise that the "new" generators will generate an elementary abelian group, that is, in additive notation, a vector space over the field of p elements. As said, the pcp of the p-cover obtained in this way need not be consistent. Since the pcp of G_i was consistent, applying the consistency conditions to the pcp of the p-cover, in case the presentation obtained for p-cover is not consistent, will produce a set of equations between the new generators, that, written additively, are linear equations over the field of p elements and can hence be used to remove redundant generators until a consistent pcp is obtained.

In reality, to follow this straightforward procedure would be forbiddingly inefficient except for very small examples. There are many ways of a priori reducing the number of "new generators" to be introduced, using e.g. the weights attached to the generators, and the main part of [NNN98] is devoted to a detailed discussion with proofs of these possibilities.

2.2-2 Imposing the Relations of the fp Group

In order to obtain G/P_i+1(G) from the pcp of the p-cover of G_i = G/P_i(G), the defining relations from the original presentation of G must be imposed. Since G_i is a homomorphic image of G, these relations again yield relations between the "new generators" in the presentation of the p-cover of G_i.

2.2-3 Imposing Laws

While we have so far only considered the computation of the factor groups of a given fp group by the groups of its descending p-central series, the p-quotient algorithm allows a very important variant of this idea: laws can be prescribed that should be fulfilled by the p-factor groups computed by the algorithm. The key observation here is the fact that at each step down the descending p-central series it suffices to impose these laws only for a finite number of words. Again for efficiency of the method it is crucial to keep the number of such words small, and much of [NO96] and the literature quoted in this paper is devoted to this problem.

In this form, starting with a free group and imposing an exponent law (also referred to as an exponent check) the pq program has, in fact, found its most noted application in the determination of (restricted) Burnside groups (as reported in e.g. [HN80], [NO96] and [VL90a]).

Via a GAP program using the "local" interactive functions of the pq program made available through this interface also arbitrary laws can be imposed via the option Identities (see 6.2).

2.3 The p-group generation Algorithm, Standard Presentation, Isomorphism Testing

For details, see [New77] and [O'B90].

The p-group generation algorithm determines the immediate descendants of a given p-group G up to isomorphism. From what has been explained in Section Basic notions, it is clear that this amounts to the construction of the p-cover, the extension of the automorphisms of G to the p-cover and the determination of representatives of the orbits of the action of these automorphisms on the set of supplements of the nucleus in the p-multiplicator.

The main practical problem here is the determination of these representatives. [O'B90] describes methods for this and the pq program allows choices according to whether space or time limitations must be met.

As well as the descendants of G, the pq program determines their automorphism groups from that of G (see [O'B95]), which is important for an iteration of the process; this has been used by Eamonn O'Brien, e.g. in the classification of the 2-groups that are now also part of the Small Groups library available through GAP.

A variant of the p-group generation algorithm is also used to define a standard presentation of a given p-group. This is done by constructing an isomorphic copy of the given group through a chain of descendants and at each step making a choice of a particular representative for the respective orbit of capable groups. In a fairly delicate process, subgroups of the p-multiplicator are represented by echelonised matrices and a first among the labels for standard matrices is chosen (this is described in detail in [O'B94]).

Finally, the standard presentation provides a way of testing if two given p-groups are isomorphic: the standard presentations of the groups are computed, for practical purposes compacted and the results compared for being identical, i.e. the groups are isomorphic if and only if their standard presentations are identical.

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/infra.xml000644 000766 000024 00000101275 14355420571 015532 0ustar00mhornstaff000000 000000 Infrastructure Most of the details in this chapter are of a technical nature; the user need only skim over this chapter on a first reading. Mostly, it is enough to know that you must do a LoadPackage("anupq"); before you can expect to use a command defined by the &ANUPQ; package (details are in Section ); partial results of &ANUPQ; commands and some other data are stored in the ANUPQData global variable (details are in Section ); doing SetInfoLevel(InfoANUPQ, n); for n greater than the default value 1 will give progressively more information of what is going on behind the scenes (details are in Section ); in Section  we describe some utility functions and functions that run examples from the collection of examples of this package; in Section  we describe the attributes and property NuclearRank, MultiplicatorRank and IsCapable; and in Section  we describe some troubleshooting strategies. Also this section explains the utility of setting ANUPQWarnOfOtherOptions := true; (particularly for novice users) for detecting misspelt options and diagnosing other option usage problems.
Loading the ANUPQ Package banner To use the &ANUPQ; package, as with any &GAP; package, it must be requested explicitly. This is done by calling LoadPackage( "anupq" ); --------------------------------------------------------------------------- Loading ANUPQ 3.3.0 (ANU p-Quotient) by Greg Gamble (GAP code, http://school.maths.uwa.edu.au/~gregg), Werner Nickel (GAP code, https://www2.mathematik.tu-darmstadt.de/~nickel/), and Eamonn O'Brien (C code, https://www.math.auckland.ac.nz/~obrien). maintained by: Greg Gamble (http://school.maths.uwa.edu.au/~gregg) and Max Horn (https://www.quendi.de/math). uses ANU pq binary (C code program) version: 1.9 Homepage: https://gap-packages.github.io/anupq/ Report issues at https://github.com/gap-packages/anupq/issues --------------------------------------------------------------------------- true ]]> Note that since the &ANUPQ; package uses the AutomorphimGroupPGroup function of the &AutPGrp; package and, in any case, often needs other &AutPGrp; functions when computing descendants, the user must ensure that the &AutPGrp; package is also installed, at least version 1.5. If the &AutPGrp; package is not installed, the &ANUPQ; package will fail to load.

Also, if &GAP; cannot find a working pq binary, the call to LoadPackage will return fail.

If you want to load the &ANUPQ; package by default, you can put the LoadPackage command into your gap.ini file (see Section  in the &GAP; Reference Manual). By the way, the novice user of the &ANUPQ; package should probably also append the line to their gap.ini file, somewhere after the LoadPackage( "anupq" ); command (see ).

The ANUPQData Record This section contains fairly technical details which may be skipped on an initial reading. is a &GAP; record in which the essential data for an &ANUPQ; session within &GAP; is stored; its fields are: binary the path of the pq binary; tmpdir the path of the temporary directory used by the pq binary and &GAP; (i.e. the directory in which all the pq's temporary files are created) (also see below); outfile the full path of the default pq output file; SPimages the full path of the file GAP_library to which the pq program writes its Standard Presentation images; version the version of the current pq binary; ni a data record used by non-interactive functions (see below and Chapter ); io list of data records for PqStart (see below and ) processes; topqlogfile name of file logged to by ToPQLog (see ); and logstream stream of file logged to by ToPQLog (see ). Each time an interactive &ANUPQ; process is initiated via PqStart (see ), an identifying number ioIndex is generated for the interactive process and a record ANUPQData.io[ioIndex] with some or all of the fields listed below is created. Whenever a non-interactive function is called (see Chapter ), the record ANUPQData.ni is updated with fields that, if bound, have exactly the same purpose as for a ANUPQData.io[ioIndex] record. stream the IOStream opened for interactive &ANUPQ; process ioIndex or non-interactive &ANUPQ; function; group the group given as first argument to PqStart, Pq, PqEpimorphism, PqDescendants or PqStandardPresentation (or any synonymous methods); haspcp is bound and set to true when a pc presentation is first set inside the pq program (e.g. by PqPcPresentation or PqRestorePcPresentation or a higher order function like Pq, PqEpimorphism, PqPCover, PqDescendants or PqStandardPresentation that does a PqPcPresentation operation, but not PqStart which only starts up an interactive &ANUPQ; process); gens a list of the generators of the group group as strings (the same as those passed to the pq program); rels a list of the relators of the group group as strings (the same as those passed to the pq program); name the name of the group whose pc presentation is defined by a call to the pq program (according to the pq program -- unless you have used the GroupName option (see e.g. ) or applied the function SetName (see ) to the group, the generic name "[grp]" is set as a default); gpnum if not a null string, the number (i.e. the unique label assigned by the pq program) of the last descendant processed; class the largest lower exponent-p central class of a quotient group of the group (usually group) found by a call to the pq program; forder the factored order of the quotient group of largest lower exponent-p central class found for the group (usually group) by a call to the pq program (this factored order is given as a list [p,n], indicating an order of p^n); pcoverclass the lower exponent-p central class of the p-covering group of a p-quotient of the group (usually group) found by a call to the pq program; workspace the workspace set for the pq process (either given as a second argument to PqStart, or set by default to 10000000); menu the current menu of the pq process (the pq program is managed by various menus, the details of which the user shouldn't normally need to know about -- the menu field remembers which menu the pq process is currently in); outfname is the file to which pq output is directed, which is always ANUPQData.outfile, except when option SetupFile is used with a non-interactive function, in which case outfname is set to "PQ_OUTPUT"; pQuotient is set to the value returned by Pq (see ) (the field pQepi is also set at the same time); pQepi is set to the value returned by PqEpimorphism (see ) (the field pQuotient is also set at the same time); pCover is set to the value returned by PqPCover (see ); SP is set to the value returned by PqStandardPresentation or StandardPresentation (see ) when called interactively, for process i (the field SPepi is also set at the same time); SPepi is set to the value returned by EpimorphismPqStandardPresentation or EpimorphismStandardPresentation (see ) when called interactively, for process i (the field SP is also set at the same time); descendants is set to the value returned by PqDescendants (see ); treepos if set by a call to PqDescendantsTreeCoclassOne (see ), it contains a record with fields class, node and ndes being the information that determines the last descendant with a non-zero number of descendants processed; xgapsheet if set by a call to PqDescendantsTreeCoclassOne (see ) during an &XGAP; session, it contains the &XGAP; Sheet on which the descendants tree is displayed; and nextX if set by a call to PqDescendantsTreeCoclassOne (see ) during an &XGAP; session, it contains a list of integers, the ith entry of which is the x-coordinate of the next node (representing a descendant) for the ith class. calls the UNIX command mkdir to create dir, which must be a string, and if successful a directory object for dir is both assigned to ANUPQData.tmpdir and returned. The field ANUPQData.outfile is also set to be a file in ANUPQData.tmpdir, and on exit from &GAP; dir is removed. Most users will never need this command; by default, &GAP; typically chooses a random subdirectory of /tmp for ANUPQData.tmpdir which may occasionally have limits on what may be written there. ANUPQDirectoryTemporary permits the user to choose a directory (object) where one is not so limited.
Setting the Verbosity of ANUPQ via Info and InfoANUPQ The input to and the output from the pq program is, by default, not displayed. However the user may choose to see some, or all, of this input/output. This is done via the Info mechanism (see Section  in the &GAP; Reference Manual). For this purpose, there is the InfoClass InfoANUPQ. If the InfoLevel of InfoANUPQ is high enough each line of pq input/output is directed to a call to Info and will be displayed for the user to see. By default, the InfoLevel of InfoANUPQ is 1, and it is recommended that you leave it at this level, or higher. Messages that the user should presumably want to see and output from the pq program influenced by the value of the option OutputLevel (see the options listed in Section ), other than timing and memory usage are directed to Info at InfoANUPQ level 1.

To turn off all InfoANUPQ messaging, set the InfoANUPQ level to 0.

There are five other user-intended InfoANUPQ levels: 2, 3, 4, 5 and 6. SetInfoLevel(InfoANUPQ, 2); ]]> enables the display of most timing and memory usage data from the pq program, and also the number of identity instances when the Identities option is used. (Some timing and memory usage data, particularly when profuse in quantity, is Info-ed at InfoANUPQ level 3 instead.) Note that the the &GAP; functions time and Runtime (see  in the &GAP; Reference Manual) count the time spent by &GAP; and not the time spent by the (external) pq program. SetInfoLevel(InfoANUPQ, 3); ]]> enables the display of output of the nature of the first two InfoANUPQ that was not directly invoked by the user (e.g. some commands require &GAP; to discover something about the current state known to the pq program). The identity instances processed under the Identities option are also displayed at this level. In some cases, the pq program produces a lot of output despite the fact that the OutputLevel (see ) is unset or is set to 0; such output is also Info-ed at InfoANUPQ level 3. SetInfoLevel(InfoANUPQ, 4); ]]> enables the display of all the commands directed to the pq program, behind a ToPQ> prompt (so that you can distinguish it from the output from the pq program). See Section  for an example of how this can be a useful troubleshooting tool. SetInfoLevel(InfoANUPQ, 5); ]]> enables the display of the pq program's prompts for input. Finally, SetInfoLevel(InfoANUPQ, 6); ]]> enables the display of all other output from the pq program, namely the banner and menus. However, the timing data printed when the pq program exits can never be observed.

Utility Functions returns for a list of elements of some group (e.g. elts may be a list of words in the generators of a free or fp group) the left normed commutator of elts, e.g. if w1, w2, w3 are such elements then PqLeftNormComm( [w1, w2, w3] ); is equivalent to Comm( Comm( w1, w2 ), w3 );.

Note: elts must contain at least two elements. returns a list of words that &GAP; understands, given a list rels of strings in the string representations of the generators of the fp group group prepared as a list of relators for the pq program.

Note: The pq program does not use / to indicate multiplication by an inverse and uses square brackets to represent (left normed) commutators. Also, even though the pq program accepts relations, all elements of rels must be in relator form, i.e. a relation of form w1 = w2 must be written as w1*(w2)^-1.

Here is an example: F := FreeGroup("a", "b"); gap> PqGAPRelators(F, [ "a*b^2", "[a,b]^2*a", "([a,b,a,b,b]*a*b)^2*a" ]); [ a*b^2, a^-1*b^-1*a*b*a^-1*b^-1*a*b*a, b^-1*a^-1*b^-1*a^-1*b*a*b^-1*a*b*a^ -1*b*a^-1*b^-1*a*b*a*b^-1*a^-1*b^-1*a^-1*b*a*b^-1*a*b^-1*a^-1*b*a^-1*b^ -1*a*b*a*b*a^-1*b*a*b^-1*a*b*a^-1*b*a^-1*b^-1*a*b*a*b^-1*a^-1*b^-1*a^ -1*b*a*b^-1*a*b^-1*a^-1*b*a^-1*b^-1*a*b*a*b^2*a*b*a ] ]]> parses a word, a string representing a word in the pc generators x1,...,xn, through &GAP;. This function is provided as a rough-and-ready check of word for syntax errors. A syntax error will cause the entering of a break-loop, in which the error message may or may not be meaningful (depending on whether the syntax error gets caught at the &GAP; or kernel level).

Note: The reason the generators must be x1,...,xn is that these are the pc generator names used by the pq program (as distinct from the generator names for the group provided by the user to a function like Pq that invokes the pq program). With no arguments, or with single argument "index", or a string example that is not the name of a file in the examples directory, an index of available examples is displayed.

With just the one argument example that is the name of a file in the examples directory, the example contained in that file is executed in its simplest form. Some examples accept options which you may use to modify some of the options used in the commands of the example. To find out which options an example accepts, use one of the mechanisms for displaying the example described below.

Some examples have both non-interactive and interactive forms; those that are non-interactive only have a name ending in -ni; those that are interactive only have a name ending in -i; examples with names ending in .g also have only one form; all other examples have both non-interactive and interactive forms and for these giving PqStart as second argument invokes PqStart initially and makes the appropriate adjustments so that the example is executed or displayed using interactive functions.

If PqExample is called with last (second or third) argument Display then the example is displayed without being executed. If the last argument is a non-empty string filename then the example is also displayed without being executed but is also written to a file with that name. Passing an empty string as last argument has the same effect as passing Display.

Note: The variables used in PqExample are local to the running of PqExample, so there's no danger of having some of your variables over-written. However, they are not completely lost either. They are saved to a record ANUPQData.examples.vars, i.e. if F is a variable used in the example then you will be able to access it after PqExample has finished as ANUPQData.examples.vars.F. returns a list of all currently available examples in default UNIX-listing (i.e. alphabetic) order. runs the UNIX command grep string over the &ANUPQ; examples and returns the list of examples for which there is a match. The actual matches are Info-ed at InfoANUPQ level 2. With string argument filename, ToPQLog opens the file with name filename for logging; all commands written to the pq binary (that are Info-ed behind a ToPQ> prompt at InfoANUPQ level 4) are then also written to that file (but without prompts). With no argument, ToPQLog stops logging to whatever file was being logged to. If a file was already being logged to, that file is closed and the file with name filename is opened for logging.

Attributes and a Property for fp and pc p-groups return the nuclear rank of G, p-multiplicator rank of G, and whether G is capable (i.e. true if it is, or false if it is not), respectively.

These attributes and property are set automatically if G is one of the following: an fp group returned by PqStandardPresentation or StandardPresentation (see ); the image (fp group) of the epimorphism returned by an EpimorphismPqStandardPresentation or EpimorphismStandardPresentation call (see ); or one of the pc groups of the list of descendants returned by PqDescendants (see ). If G is an fp group or a pc p-group and not one of the above and the attribute or property has not otherwise been set for G, then PqStandardPresentation is called to set all three of NuclearRank, MultiplicatorRank and IsCapable, before returning the value of the attribute or property actually called. Such a group G must know in advance that it is a p-group; this is the case for the groups returned by the functions Pq and PqPCover, and the image group of the epimorphism returned by PqEpimorphism. Otherwise, if you know the group to be a p-group, then this can be set by typing

or by invoking IsPGroup( G ). Note that for an fp group G, the latter may result in a coset enumeration which might not terminate in a reasonable time.

Note: For G such that HasNuclearRank(G) = true, IsCapable(G) is equivalent to (the truth or falsity of) NuclearRank( G ) = 0.

Hints and Warnings regarding the use of Options On a first reading we recommend you skip this section and come back to it if and when you run into trouble.

menu item option Note: By options we refer to &GAP; options. The pq program also uses the term option; to distinguish the two usages of option, in this manual we use the term menu item to refer to what the pq program refers to as an option.

Options are passed to the &ANUPQ; interface functions in either of the two usual mechanisms provided by &GAP;, namely: options may be set globally using the function PushOptions (see Chapter  in the &GAP; Reference Manual); or options may be appended to the argument list of any function call, separated by a colon from the argument list (see Chapter  in the &GAP; Reference Manual), in which case they are then passed on recursively to any subsequent inner function call, which may in turn have options of their own. Particularly, when one is using the interactive functions of Chapter , one should, in general, avoid using the global method of passing options. In fact, it is recommended that prior to calling PqStart the OptionsStack be empty. The essential problem with setting options globally using the function PushOptions is that options pushed onto OptionsStack, in this way, (generally) remain there until an explicit PopOptions() call is made.

In contrast, options passed in the usual way behind a colon following a function's arguments (see in the &GAP; Reference Manual) are local, and disappear from OptionsStack after the function has executed successfully. If the function does not execute successfully, i.e. it runs into error and the user quits the resulting break loop (see Section  in the Reference Manual) rather than attempting to repair the problem and typing return; then, unless the error at the kernel level, the OptionsStack is reset. If an error is detected inside the kernel (hopefully, this should occur only rarely, if at all) then the options of that function will not be cleared from OptionsStack; in such cases: ResetOptionsStack(); #I Options stack is already empty ]]> is usually necessary (see Chapter  in the &GAP; Reference Manual), which recursively calls PopOptions() until OptionsStack is empty, or as in the above case warns you that the OptionsStack is already empty.

Note that a function, that is passed options after the colon, will also see any global options or any options passed down recursively from functions calling that function, unless those options are over-ridden by options passed via the function. Also, note that duplication of option names for different programs may lead to misinterpretations, and mis-spelled options will not be seen.

The non-interactive functions of Chapter  that have Pq somewhere in their name provide an alternative method of passing options as additional arguments. This has the advantages that options can be abbreviated and mis-spelled options will be trapped. troubleshooting tips is a global variable that is by default false. If it is set to true then any function provided by the &ANUPQ; function that recognises at least one option, will warn you of other options, i.e. options that the function does not recognise. These warnings are emitted at InfoWarning or InfoANUPQ level 1. This is useful for detecting mis-spelled options. Here is an example using the function Pq (first described in Chapter ): SetInfoLevel(InfoANUPQ, 1); # Set InfoANUPQ to default level gap> ANUPQWarnOfOtherOptions := true;; gap> # The following makes entry into break loops very ``quiet'' ... gap> OnBreak := function() Where(0); end;; gap> F := FreeGroup( "a", "b" ); gap> Pq( F : Prime := 2, Classbound := 1 ); #I ANUPQ Warning: Options: [ "Classbound" ] ignored #I (invalid for generic function: `Pq'). user interrupt at moreOfline := ReadLine( iostream ); Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can 'return;' to continue ]]> Here we mistyped ClassBound as Classbound, and after seeing the Info-ed warning that Classbound was ignored, we typed a control-C (that's the user interrupt at message) which took us into a break loop. Since the Pq command was not able to finish, the options Prime and Classbound, in particular, will still be on the OptionsStack: OptionsStack; [ rec( Prime := 2, Classbound := 1 ), rec( Prime := 2, Classbound := 1, PqEpiOrPCover := "pQuotient" ) ] ]]> The option PqEpiOrPCover is a behind-the-scenes option that need not concern the user. On quitting the break-loop the OptionsStack is reset and a warning telling you this is emitted: quit; # to get back to the `gap>' prompt #I Options stack has been reset ]]> Above, we altered OnBreak (see  in the Reference manual) to reduce the back-tracing on entry into a break loop. We now restore OnBreak to its usual value. OnBreak := Where;; ]]> Notes

In cases where functions recursively call others with options (e.g. when using PqExample with options), setting ANUPQWarnOfOtherOptions := true may give rise to spurious other option detections.

It is recommended that the novice user set ANUPQWarnOfOtherOptions to true in their gap.ini file (see Section ). Other Troubleshooting Strategies

There are some other strategies which may have helped us to see our error above. The function Pq recognises the option OutputLevel (see ); if this option is set to at least 1, the pq program provides information on each class quotient as it is generated: ANUPQWarnOfOtherOptions := false;; # Set back to normal gap> F := FreeGroup( "a", "b" );; gap> Pq( F : Prime := 2, Classbound := 1, OutputLevel := 1 ); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^2 #I Group: [grp] to lower exponent-2 central class 2 has order 2^5 #I Group: [grp] to lower exponent-2 central class 3 has order 2^10 #I Group: [grp] to lower exponent-2 central class 4 has order 2^18 #I Group: [grp] to lower exponent-2 central class 5 has order 2^32 #I Group: [grp] to lower exponent-2 central class 6 has order 2^55 #I Group: [grp] to lower exponent-2 central class 7 has order 2^96 #I Group: [grp] to lower exponent-2 central class 8 has order 2^167 #I Group: [grp] to lower exponent-2 central class 9 has order 2^294 #I Group: [grp] to lower exponent-2 central class 10 has order 2^520 #I Group: [grp] to lower exponent-2 central class 11 has order 2^932 #I Group: [grp] to lower exponent-2 central class 12 has order 2^1679 [... output truncated ...] ]]> After seeing the information for the class 2 quotient we may have got the idea that the Classbound option was not recognised and may have realised that this was due to a mis-spelling. The above will ordinarily cause the available space to be exhausted, necessitating user-intervention by typing control-C and quit; (to escape the break loop); otherwise Pq terminates when the class reaches 63 (the default value of ClassBound).

If you have some familiarity with keyword command input to the pq binary, then setting the level of InfoANUPQ to 4 would also have indicated a problem: ResetOptionsStack(); # Necessary, if a break-loop was entered above gap> SetInfoLevel(InfoANUPQ, 4); gap> Pq( F : Prime := 2, Classbound := 1 ); #I ToPQ> 7 #to (Main) p-Quotient Menu #I ToPQ> 1 #define group #I ToPQ> name [grp] #I ToPQ> prime 2 #I ToPQ> class 63 #I ToPQ> exponent 0 #I ToPQ> output 0 #I ToPQ> generators { a,b } #I ToPQ> relators { }; [... output truncated ...] ]]> Here the line #I ToPQ> class 63 indicates that a directive to set the classbound to 63 was sent to the pq program.

anupq-3.3.0/doc/install.xml000644 000766 000024 00000022722 14355420571 016100 0ustar00mhornstaff000000 000000 Installing the ANUPQ Package The ANU pq program is written in C and the package can be installed under UNIX and in environments similar to UNIX. In particular it is known to work on Linux and Mac OS X, and also on Windows equipped with cygwin.

The current version of the &ANUPQ; package requires &GAP; 4.9, and version 1.2 of the &AutPGrp; package. However, we recommend using at least &GAP; 4.6 and &AutPGrp; 1.5.

To install the &ANUPQ; package, move the file anupq-XXX.tar.gz for some version number XXX into the pkg directory in which you plan to install &ANUPQ;. Usually, this will be the directory pkg in the hierarchy of your version of &GAP;; it is however also possible to keep an additional pkg directory in your private directories. The only essential difference with installing &ANUPQ; in a pkg directory different to the &GAP; home directory is that one must start &GAP; with the -l switch (see Section ), e.g. if your private pkg directory is a subdirectory of mygap in your home directory you might type:

where myhomedir is the path to your home directory, which may be replaced by a tilde. The empty path before the semicolon is filled in by the default path of the &GAP; home directory.

Then, in your chosen pkg directory, unpack anupq-XXX.tar.gz by

.tar.gz ]]> Change to the newly created anupq directory. Now you need to call configure. If you installed &ANUPQ; into the main pkg directory, call If you installed ANUPQ in another directory than the usual 'pkg' subdirectory, instead call ]]> where path is the path to the &GAP; home directory. (You can also call for further options.)

What this does is look for a file sysinfo.gap in the root directory of &GAP; in order to determine an architecture name for the subdirectory of bin in which to put the compiled pq binary. This only makes sense if &GAP; was compiled for the same architecture that pq will be. If you have a shared file system mounted across different architectures, then you should run configure and make for &ANUPQ; for each architecture immediately after compiling &GAP; on the same architecture.

If you had to install the package in your own directory but wish to use the system &GAP; then you will need to find out what path is. To do this, start up &GAP; and find out what &GAP;'s root path is from finding the value of the variable GAPInfo.RootPaths, e.g. GAPInfo.RootPaths; [ "/usr/local/lib/gap4r4/" ] ]]> would tell you to use /usr/local/lib/gap4r4 for path.

The configure command will fetch the architecture type for which &GAP; has been compiled last and create a Makefile. You can now simply call

to compile the binary and to install it in the appropriate place.

ANUPQ_GAP_EXEC The path of &GAP; (see Note below) used by the pq binary (the value GAP is set to in the make command) may be over-ridden by setting the environment variable ANUPQ_GAP_EXEC. These values are only of interest when the pq program is run as a standalone; however, the testPq script assumes you have set one of these correctly (see Section ). When the pq program is started from &GAP; communication occurs via an iostream, so that the pq binary does not actually need to know a valid path for &GAP; is this case.

Note. By path of &GAP; we mean the path of the command used to invoke &GAP; (which should be a script, e.g. the gap.sh script generated in the bin directory for the version of &GAP; when &GAP; was compiled). The usual strategy is to copy the gap.sh script to a standard location, e.g. /usr/local/bin/gap. It is a mistake to copy the &GAP; executable gap (in a directory with name of form bin/compile-platform) to the standard location, since direct invocation of the executable results in &GAP; starting without being able to find its own library (a fatal error).

Testing your ANUPQ installation ANUPQ_GAP_EXEC Now it is time to test the installation. After doing configure and make you will have a testPq script. The script assumes that, if the environment variable ANUPQ_GAP_EXEC is set, it is a correct path for &GAP;, or otherwise that the make call that compiled the pq program set GAP to a correct path for &GAP; (see Section  for more details). To run the tests, just type: Some of the tests the script runs take a while. Please be patient. The script checks that you not only have a correct &GAP; (at least version 4.4) installation that includes the &AutPGrp; package, but that the &ANUPQ; package and its pq binary interact correctly. You should see something like the following output:
Running the pq program as a standalone ANUPQ_GAP_EXEC When the pq program is run as a standalone it sometimes needs to call &GAP; to compute stabilisers of subgroups; in doing so, it first checks the value of the environment variable ANUPQ_GAP_EXEC, and uses that, if set, or otherwise the value of GAP it was compiled with, as the path for &GAP;. If you ran testPq (see Section ) and you got both &GAP; is OK and the link between the pq binary and &GAP; is OK, you should be fine. Otherwise heed the recommendations of the error messages you get and run the testPq until all tests are passed.

It is especially important that the &GAP;, whose path you gave, should know where to find the &ANUPQ; and &AutPGrp; packages. To ensure this the path should be to a shell script that invokes &GAP;. If you needed to install the needed packages in your own directory (because, say, you are not a system administrator) then you should create your own shell script that runs &GAP; with a correct setting of the -l option and set the path used by the pq binary to the path of that script. To create the script that runs &GAP; it is easiest to copy the system one and edit it, e.g. start by executing the following UNIX commands (skip the second step if you already have a bin directory; you@unix> is your UNIX prompt):

cd you@unix> mkdir bin you@unix> cd bin you@unix> which gap /usr/local/bin/gap you@unix> cp /usr/local/bin/gap mygap you@unix> chmod +x mygap ]]> At the second-last step use the path of &GAP; returned by which gap. Now hopefully you will have a copy of the script that runs the system &GAP; in mygap. Now use your favourite editor to edit the -l part of the last line of mygap which should initially look something like: so that it becomes (the tilde is a UNIX abbreviation for your home directory): assuming that your personal &GAP; pkg directory is a subdirectory of gapstuff in your home directory. Finally, to let the pq program know where &GAP; is and also know where your pkg directory is that contains &ANUPQ;, set the environment variable ANUPQ_GAP_EXEC to the complete (i.e. absolute) path of your mygap script (do not use the tilde abbreviation).
anupq-3.3.0/doc/chap3.html000644 000766 000024 00000155050 14355420744 015577 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 3: Infrastructure
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

3 Infrastructure

Most of the details in this chapter are of a technical nature; the user need only skim over this chapter on a first reading. Mostly, it is enough to know that

3.1 Loading the ANUPQ Package

To use the ANUPQ package, as with any GAP package, it must be requested explicitly. This is done by calling

gap> LoadPackage( "anupq" );
---------------------------------------------------------------------------
Loading  ANUPQ 3.3.0 (ANU p-Quotient)
by Greg Gamble (GAP code, http://school.maths.uwa.edu.au/~gregg),
   Werner Nickel (GAP code, https://www2.mathematik.tu-darmstadt.de/~nickel/), and
   Eamonn O'Brien (C code, https://www.math.auckland.ac.nz/~obrien).
maintained by:
   Greg Gamble (http://school.maths.uwa.edu.au/~gregg) and
   Max Horn (https://www.quendi.de/math).
uses ANU pq binary (C code program) version: 1.9
Homepage: https://gap-packages.github.io/anupq/
Report issues at https://github.com/gap-packages/anupq/issues
---------------------------------------------------------------------------
true

Note that since the ANUPQ package uses the AutomorphimGroupPGroup function of the AutPGrp package and, in any case, often needs other AutPGrp functions when computing descendants, the user must ensure that the AutPGrp package is also installed, at least version 1.5. If the AutPGrp package is not installed, the ANUPQ package will fail to load.

Also, if GAP cannot find a working pq binary, the call to LoadPackage will return fail.

If you want to load the ANUPQ package by default, you can put the LoadPackage command into your gap.ini file (see Section Reference: The gap.ini and gaprc files in the GAP Reference Manual). By the way, the novice user of the ANUPQ package should probably also append the line

ANUPQWarnOfOtherOptions := true;

to their gap.ini file, somewhere after the LoadPackage( "anupq" ); command (see ANUPQWarnOfOtherOptions (3.6-1)).

3.2 The ANUPQData Record

This section contains fairly technical details which may be skipped on an initial reading.

3.2-1 ANUPQData
‣ ANUPQData( global variable )

is a GAP record in which the essential data for an ANUPQ session within GAP is stored; its fields are:

binary

the path of the pq binary;

tmpdir

the path of the temporary directory used by the pq binary and GAP (i.e. the directory in which all the pq's temporary files are created) (also see ANUPQDirectoryTemporary (3.2-2) below);

outfile

the full path of the default pq output file;

SPimages

the full path of the file GAP_library to which the pq program writes its Standard Presentation images;

version

the version of the current pq binary;

ni

a data record used by non-interactive functions (see below and Chapter Non-interactive ANUPQ functions);

io

list of data records for PqStart (see below and PqStart (5.1-1)) processes;

topqlogfile

name of file logged to by ToPQLog (see ToPQLog (3.4-7)); and

logstream

stream of file logged to by ToPQLog (see ToPQLog (3.4-7)).

Each time an interactive ANUPQ process is initiated via PqStart (see PqStart (5.1-1)), an identifying number ioIndex is generated for the interactive process and a record ANUPQData.io[ioIndex] with some or all of the fields listed below is created. Whenever a non-interactive function is called (see Chapter Non-interactive ANUPQ functions), the record ANUPQData.ni is updated with fields that, if bound, have exactly the same purpose as for a ANUPQData.io[ioIndex] record.

stream

the IOStream opened for interactive ANUPQ process ioIndex or non-interactive ANUPQ function;

group

the group given as first argument to PqStart, Pq, PqEpimorphism, PqDescendants or PqStandardPresentation (or any synonymous methods);

haspcp

is bound and set to true when a pc presentation is first set inside the pq program (e.g. by PqPcPresentation or PqRestorePcPresentation or a higher order function like Pq, PqEpimorphism, PqPCover, PqDescendants or PqStandardPresentation that does a PqPcPresentation operation, but not PqStart which only starts up an interactive ANUPQ process);

gens

a list of the generators of the group group as strings (the same as those passed to the pq program);

rels

a list of the relators of the group group as strings (the same as those passed to the pq program);

name

the name of the group whose pc presentation is defined by a call to the pq program (according to the pq program -- unless you have used the GroupName option (see e.g. Pq (4.1-1)) or applied the function SetName (see SetName (Reference: Name)) to the group, the "generic" name "[grp]" is set as a default);

gpnum

if not a null string, the "number" (i.e. the unique label assigned by the pq program) of the last descendant processed;

class

the largest lower exponent-p central class of a quotient group of the group (usually group) found by a call to the pq program;

forder

the factored order of the quotient group of largest lower exponent-p central class found for the group (usually group) by a call to the pq program (this factored order is given as a list [p,n], indicating an order of p^n);

pcoverclass

the lower exponent-p central class of the p-covering group of a p-quotient of the group (usually group) found by a call to the pq program;

workspace

the workspace set for the pq process (either given as a second argument to PqStart, or set by default to 10000000);

menu

the current menu of the pq process (the pq program is managed by various menus, the details of which the user shouldn't normally need to know about -- the menu field remembers which menu the pq process is currently "in");

outfname

is the file to which pq output is directed, which is always ANUPQData.outfile, except when option SetupFile is used with a non-interactive function, in which case outfname is set to "PQ_OUTPUT";

pQuotient

is set to the value returned by Pq (see Pq (4.1-1)) (the field pQepi is also set at the same time);

pQepi

is set to the value returned by PqEpimorphism (see PqEpimorphism (4.1-2)) (the field pQuotient is also set at the same time);

pCover

is set to the value returned by PqPCover (see PqPCover (4.1-3));

SP

is set to the value returned by PqStandardPresentation or StandardPresentation (see PqStandardPresentation (5.3-4)) when called interactively, for process i (the field SPepi is also set at the same time);

SPepi

is set to the value returned by EpimorphismPqStandardPresentation or EpimorphismStandardPresentation (see EpimorphismPqStandardPresentation (5.3-5)) when called interactively, for process i (the field SP is also set at the same time);

descendants

is set to the value returned by PqDescendants (see PqDescendants (4.4-1));

treepos

if set by a call to PqDescendantsTreeCoclassOne (see PqDescendantsTreeCoclassOne (A.4-1)), it contains a record with fields class, node and ndes being the information that determines the last descendant with a non-zero number of descendants processed;

xgapsheet

if set by a call to PqDescendantsTreeCoclassOne (see PqDescendantsTreeCoclassOne (A.4-1)) during an XGAP session, it contains the XGAP Sheet on which the descendants tree is displayed; and

nextX

if set by a call to PqDescendantsTreeCoclassOne (see PqDescendantsTreeCoclassOne (A.4-1)) during an XGAP session, it contains a list of integers, the ith entry of which is the x-coordinate of the next node (representing a descendant) for the ith class.

3.2-2 ANUPQDirectoryTemporary
‣ ANUPQDirectoryTemporary( dir )( function )

calls the UNIX command mkdir to create dir, which must be a string, and if successful a directory object for dir is both assigned to ANUPQData.tmpdir and returned. The field ANUPQData.outfile is also set to be a file in ANUPQData.tmpdir, and on exit from GAP dir is removed. Most users will never need this command; by default, GAP typically chooses a "random" subdirectory of /tmp for ANUPQData.tmpdir which may occasionally have limits on what may be written there. ANUPQDirectoryTemporary permits the user to choose a directory (object) where one is not so limited.

3.3 Setting the Verbosity of ANUPQ via Info and InfoANUPQ

3.3-1 InfoANUPQ
‣ InfoANUPQ( info class )

The input to and the output from the pq program is, by default, not displayed. However the user may choose to see some, or all, of this input/output. This is done via the Info mechanism (see Section Reference: Info Functions in the GAP Reference Manual). For this purpose, there is the InfoClass InfoANUPQ. If the InfoLevel of InfoANUPQ is high enough each line of pq input/output is directed to a call to Info and will be displayed for the user to see. By default, the InfoLevel of InfoANUPQ is 1, and it is recommended that you leave it at this level, or higher. Messages that the user should presumably want to see and output from the pq program influenced by the value of the option OutputLevel (see the options listed in Section Pq (4.1-1)), other than timing and memory usage are directed to Info at InfoANUPQ level 1.

To turn off all InfoANUPQ messaging, set the InfoANUPQ level to 0.

There are five other user-intended InfoANUPQ levels: 2, 3, 4, 5 and 6.

gap> SetInfoLevel(InfoANUPQ, 2);

enables the display of most timing and memory usage data from the pq program, and also the number of identity instances when the Identities option is used. (Some timing and memory usage data, particularly when profuse in quantity, is Info-ed at InfoANUPQ level 3 instead.) Note that the the GAP functions time and Runtime (see Runtime (Reference: Runtime) in the GAP Reference Manual) count the time spent by GAP and not the time spent by the (external) pq program.

gap> SetInfoLevel(InfoANUPQ, 3);

enables the display of output of the nature of the first two InfoANUPQ that was not directly invoked by the user (e.g. some commands require GAP to discover something about the current state known to the pq program). The identity instances processed under the Identities option are also displayed at this level. In some cases, the pq program produces a lot of output despite the fact that the OutputLevel (see 6.2) is unset or is set to 0; such output is also Info-ed at InfoANUPQ level 3.

gap> SetInfoLevel(InfoANUPQ, 4);

enables the display of all the commands directed to the pq program, behind a "ToPQ> " prompt (so that you can distinguish it from the output from the pq program). See Section Hints and Warnings regarding the use of Options for an example of how this can be a useful troubleshooting tool.

gap> SetInfoLevel(InfoANUPQ, 5);

enables the display of the pq program's prompts for input. Finally,

gap> SetInfoLevel(InfoANUPQ, 6);

enables the display of all other output from the pq program, namely the banner and menus. However, the timing data printed when the pq program exits can never be observed.

3.4 Utility Functions

3.4-1 PqLeftNormComm
‣ PqLeftNormComm( elts )( function )

returns for a list of elements of some group (e.g. elts may be a list of words in the generators of a free or fp group) the left normed commutator of elts, e.g. if w1, w2, w3 are such elements then PqLeftNormComm( [w1, w2, w3] ); is equivalent to Comm( Comm( w1, w2 ), w3 );.

Note: elts must contain at least two elements.

3.4-2 PqGAPRelators
‣ PqGAPRelators( group, rels )( function )

returns a list of words that GAP understands, given a list rels of strings in the string representations of the generators of the fp group group prepared as a list of relators for the pq program.

Note: The pq program does not use / to indicate multiplication by an inverse and uses square brackets to represent (left normed) commutators. Also, even though the pq program accepts relations, all elements of rels must be in relator form, i.e. a relation of form w1 = w2 must be written as w1*(w2)^-1.

Here is an example:

gap> F := FreeGroup("a", "b");
<free group on the generators [ a, b ]>
gap> PqGAPRelators(F, [ "a*b^2", "[a,b]^2*a", "([a,b,a,b,b]*a*b)^2*a" ]);
[ a*b^2, a^-1*b^-1*a*b*a^-1*b^-1*a*b*a, b^-1*a^-1*b^-1*a^-1*b*a*b^-1*a*b*a^
    -1*b*a^-1*b^-1*a*b*a*b^-1*a^-1*b^-1*a^-1*b*a*b^-1*a*b^-1*a^-1*b*a^-1*b^
    -1*a*b*a*b*a^-1*b*a*b^-1*a*b*a^-1*b*a^-1*b^-1*a*b*a*b^-1*a^-1*b^-1*a^
    -1*b*a*b^-1*a*b^-1*a^-1*b*a^-1*b^-1*a*b*a*b^2*a*b*a ]

3.4-3 PqParseWord
‣ PqParseWord( word, n )( function )

parses a word, a string representing a word in the pc generators x1,...,xn, through GAP. This function is provided as a rough-and-ready check of word for syntax errors. A syntax error will cause the entering of a break-loop, in which the error message may or may not be meaningful (depending on whether the syntax error gets caught at the GAP or kernel level).

Note: The reason the generators must be x1,...,xn is that these are the pc generator names used by the pq program (as distinct from the generator names for the group provided by the user to a function like Pq that invokes the pq program).

3.4-4 PqExample
‣ PqExample( )( function )
‣ PqExample( example[, PqStart][, Display] )( function )
‣ PqExample( example[, PqStart][, filename] )( function )

With no arguments, or with single argument "index", or a string example that is not the name of a file in the examples directory, an index of available examples is displayed.

With just the one argument example that is the name of a file in the examples directory, the example contained in that file is executed in its simplest form. Some examples accept options which you may use to modify some of the options used in the commands of the example. To find out which options an example accepts, use one of the mechanisms for displaying the example described below.

Some examples have both non-interactive and interactive forms; those that are non-interactive only have a name ending in -ni; those that are interactive only have a name ending in -i; examples with names ending in .g also have only one form; all other examples have both non-interactive and interactive forms and for these giving PqStart as second argument invokes PqStart initially and makes the appropriate adjustments so that the example is executed or displayed using interactive functions.

If PqExample is called with last (second or third) argument Display then the example is displayed without being executed. If the last argument is a non-empty string filename then the example is also displayed without being executed but is also written to a file with that name. Passing an empty string as last argument has the same effect as passing Display.

Note: The variables used in PqExample are local to the running of PqExample, so there's no danger of having some of your variables over-written. However, they are not completely lost either. They are saved to a record ANUPQData.examples.vars, i.e. if F is a variable used in the example then you will be able to access it after PqExample has finished as ANUPQData.examples.vars.F.

3.4-5 AllPqExamples
‣ AllPqExamples( )( function )

returns a list of all currently available examples in default UNIX-listing (i.e. alphabetic) order.

3.4-6 GrepPqExamples
‣ GrepPqExamples( string )( function )

runs the UNIX command grep string over the ANUPQ examples and returns the list of examples for which there is a match. The actual matches are Info-ed at InfoANUPQ level 2.

3.4-7 ToPQLog
‣ ToPQLog( [filename] )( function )

With string argument filename, ToPQLog opens the file with name filename for logging; all commands written to the pq binary (that are Info-ed behind a "ToPQ> " prompt at InfoANUPQ level 4) are then also written to that file (but without prompts). With no argument, ToPQLog stops logging to whatever file was being logged to. If a file was already being logged to, that file is closed and the file with name filename is opened for logging.

3.5 Attributes and a Property for fp and pc p-groups

3.5-1 NuclearRank
‣ NuclearRank( G )( attribute )
‣ MultiplicatorRank( G )( attribute )
‣ IsCapable( G )( property )

return the nuclear rank of G, p-multiplicator rank of G, and whether G is capable (i.e. true if it is, or false if it is not), respectively.

These attributes and property are set automatically if G is one of the following:

If G is an fp group or a pc p-group and not one of the above and the attribute or property has not otherwise been set for G, then PqStandardPresentation is called to set all three of NuclearRank, MultiplicatorRank and IsCapable, before returning the value of the attribute or property actually called. Such a group G must know in advance that it is a p-group; this is the case for the groups returned by the functions Pq and PqPCover, and the image group of the epimorphism returned by PqEpimorphism. Otherwise, if you know the group to be a p-group, then this can be set by typing

SetIsPGroup( G, true );

or by invoking IsPGroup( G ). Note that for an fp group G, the latter may result in a coset enumeration which might not terminate in a reasonable time.

Note: For G such that HasNuclearRank(G) = true, IsCapable(G) is equivalent to (the truth or falsity of) NuclearRank( G ) = 0.

3.6 Hints and Warnings regarding the use of Options

On a first reading we recommend you skip this section and come back to it if and when you run into trouble.

Note: By "options" we refer to GAP options. The pq program also uses the term "option"; to distinguish the two usages of "option", in this manual we use the term menu item to refer to what the pq program refers to as an "option".

Options are passed to the ANUPQ interface functions in either of the two usual mechanisms provided by GAP, namely:

Particularly, when one is using the interactive functions of Chapter Interactive ANUPQ functions, one should, in general, avoid using the global method of passing options. In fact, it is recommended that prior to calling PqStart the OptionsStack be empty. The essential problem with setting options globally using the function PushOptions is that options pushed onto OptionsStack, in this way, (generally) remain there until an explicit PopOptions() call is made.

In contrast, options passed in the usual way behind a colon following a function's arguments (see Reference: Function Call With Options in the GAP Reference Manual) are local, and disappear from OptionsStack after the function has executed successfully. If the function does not execute successfully, i.e. it runs into error and the user quits the resulting break loop (see Section Reference: Break Loops in the Reference Manual) rather than attempting to repair the problem and typing return; then, unless the error at the kernel level, the OptionsStack is reset. If an error is detected inside the kernel (hopefully, this should occur only rarely, if at all) then the options of that function will not be cleared from OptionsStack; in such cases:

gap> ResetOptionsStack();
#I  Options stack is already empty

is usually necessary (see Chapter ResetOptionsStack (Reference: ResetOptionsStack) in the GAP Reference Manual), which recursively calls PopOptions() until OptionsStack is empty, or as in the above case warns you that the OptionsStack is already empty.

Note that a function, that is passed options after the colon, will also see any global options or any options passed down recursively from functions calling that function, unless those options are over-ridden by options passed via the function. Also, note that duplication of option names for different programs may lead to misinterpretations, and mis-spelled options will not be "seen".

The non-interactive functions of Chapter Non-interactive ANUPQ functions that have Pq somewhere in their name provide an alternative method of passing options as additional arguments. This has the advantages that options can be abbreviated and mis-spelled options will be trapped.

3.6-1 ANUPQWarnOfOtherOptions
‣ ANUPQWarnOfOtherOptions( global variable )

is a global variable that is by default false. If it is set to true then any function provided by the ANUPQ function that recognises at least one option, will warn you of "other" options, i.e. options that the function does not recognise. These warnings are emitted at InfoWarning or InfoANUPQ level 1. This is useful for detecting mis-spelled options. Here is an example using the function Pq (first described in Chapter Non-interactive ANUPQ functions):

gap> SetInfoLevel(InfoANUPQ, 1);        # Set InfoANUPQ to default level
gap> ANUPQWarnOfOtherOptions := true;;
gap> # The following makes entry into break loops very ``quiet'' ...
gap> OnBreak := function() Where(0); end;;
gap> F := FreeGroup( "a", "b" );
<free group on the generators [ a, b ]>
gap> Pq( F : Prime := 2, Classbound := 1 );
#I  ANUPQ Warning: Options: [ "Classbound" ] ignored
#I  (invalid for generic function: `Pq').
user interrupt at
moreOfline := ReadLine( iostream );
Entering break read-eval-print loop ...
you can 'quit;' to quit to outer loop, or
you can 'return;' to continue

Here we mistyped ClassBound as Classbound, and after seeing the Info-ed warning that Classbound was ignored, we typed a control-C (that's the "user interrupt at" message) which took us into a break loop. Since the Pq command was not able to finish, the options Prime and Classbound, in particular, will still be on the OptionsStack:

brk> OptionsStack;
[ rec( Prime := 2, Classbound := 1 ), 
  rec( Prime := 2, Classbound := 1, PqEpiOrPCover := "pQuotient" ) ]

The option PqEpiOrPCover is a behind-the-scenes option that need not concern the user. On quitting the break-loop the OptionsStack is reset and a warning telling you this is emitted:

brk> quit; # to get back to the `gap>' prompt
#I  Options stack has been reset

Above, we altered OnBreak (see OnBreak (Reference: OnBreak) in the Reference manual) to reduce the back-tracing on entry into a break loop. We now restore OnBreak to its usual value.

gap> OnBreak := Where;;

Notes

In cases where functions recursively call others with options (e.g. when using PqExample with options), setting ANUPQWarnOfOtherOptions := true may give rise to spurious "other" option detections.

It is recommended that the novice user set ANUPQWarnOfOtherOptions to true in their gap.ini file (see Section Loading the ANUPQ Package).

Other Troubleshooting Strategies

There are some other strategies which may have helped us to see our error above. The function Pq recognises the option OutputLevel (see 6.2); if this option is set to at least 1, the pq program provides information on each class quotient as it is generated:

gap> ANUPQWarnOfOtherOptions := false;; # Set back to normal
gap> F := FreeGroup( "a", "b" );;
gap> Pq( F : Prime := 2, Classbound := 1, OutputLevel := 1 ); 
#I  Lower exponent-2 central series for [grp]
#I  Group: [grp] to lower exponent-2 central class 1 has order 2^2
#I  Group: [grp] to lower exponent-2 central class 2 has order 2^5
#I  Group: [grp] to lower exponent-2 central class 3 has order 2^10
#I  Group: [grp] to lower exponent-2 central class 4 has order 2^18
#I  Group: [grp] to lower exponent-2 central class 5 has order 2^32
#I  Group: [grp] to lower exponent-2 central class 6 has order 2^55
#I  Group: [grp] to lower exponent-2 central class 7 has order 2^96
#I  Group: [grp] to lower exponent-2 central class 8 has order 2^167
#I  Group: [grp] to lower exponent-2 central class 9 has order 2^294
#I  Group: [grp] to lower exponent-2 central class 10 has order 2^520
#I  Group: [grp] to lower exponent-2 central class 11 has order 2^932
#I  Group: [grp] to lower exponent-2 central class 12 has order 2^1679
[... output truncated ...]

After seeing the information for the class 2 quotient we may have got the idea that the Classbound option was not recognised and may have realised that this was due to a mis-spelling. The above will ordinarily cause the available space to be exhausted, necessitating user-intervention by typing control-C and quit; (to escape the break loop); otherwise Pq terminates when the class reaches 63 (the default value of ClassBound).

If you have some familiarity with "keyword" command input to the pq binary, then setting the level of InfoANUPQ to 4 would also have indicated a problem:

gap> ResetOptionsStack(); # Necessary, if a break-loop was entered above
gap> SetInfoLevel(InfoANUPQ, 4);
gap> Pq( F : Prime := 2, Classbound := 1 );
#I  ToPQ> 7  #to (Main) p-Quotient Menu
#I  ToPQ> 1  #define group
#I  ToPQ> name [grp]
#I  ToPQ> prime 2
#I  ToPQ> class 63
#I  ToPQ> exponent 0
#I  ToPQ> output 0
#I  ToPQ> generators { a,b }
#I  ToPQ> relators   {  };
[... output truncated ...]

Here the line "#I ToPQ> class 63" indicates that a directive to set the classbound to 63 was sent to the pq program.

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/chap1_mj.html000644 000766 000024 00000026651 14355420744 016267 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 1: Introduction
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

1 Introduction

1.1 Overview

The GAP 4 package ANUPQ provides an interface to the ANU pq C program written by Eamonn O'Brien, making the functionality of the C program available to GAP. Henceforth, we shall refer to the ANUPQ package when referring to the GAP interface, and to the ANU pq program or just pq when referring to that C program.

The pq program consists of implementations of the following algorithms:

  1. A \(p\)-quotient algorithm to compute pc-presentations for \(p\)-factor groups of finitely presented groups.

  2. A \(p\)-group generation algorithm to generate pc presentations of groups of prime power order.

  3. A standard presentation algorithm used to compute a canonical pc-presentation of a \(p\)-group.

  4. An algorithm which can be used to compute the automorphism group of a \(p\)-group.

    This part of the pq program is not accessible through the ANUPQ package. Instead, users are advised to consider the GAP 4 package AutPGrp by Bettina Eick and Eamonn O'Brien, which implements a better algorithm in GAP for the computation of automorphism groups of \(p\)-groups.

The current version of the ANUPQ package requires GAP 4.5, and version 1.5 of the AutPGrp package. All code that made the package compatible with earlier versions of GAP has been removed. If you must use an older GAP version and cannot upgrade, then you may try using an older ANUPQ version. However, you should not use versions of the ANUPQ package older than 2.2, since they are known to have bugs.

1.2 How to read this manual

It is not expected that readers of this manual will read it in a linear fashion from cover to cover; some sections contain material that is far too technical to be absorbed on a first reading.

Firstly, installers of the ANUPQ package will need to read Chapter Installing the ANUPQ Package, if they have not already gleaned these details from the README file.

Once the ANUPQ package is installed, users of the ANUPQ package will benefit most by first reading Chapter Mathematical Background and Terminology, which gives a brief description of the background and terminology used (this chapter also cites a number of references for further reading), and the introduction of Chapter Infrastructure (skip the remainder of the chapter on a first reading).

Then the user/reader should pursue Chapter Non-interactive ANUPQ functions in detail, delving into Chapter ANUPQ Options as necessary for the options of the functions that are described. The user will become best acquainted with the ANUPQ package by trying the examples. This chapter describes the non-interactive functions of the ANUPQ package, i.e. "one-shot" functions that invoke the pq program in such a way that once GAP has got what it needs, the pq is allowed to exit. It is expected that most of the time, users will only need these functions.

Advanced users will want to explore Chapter Interactive ANUPQ functions which describes all the interactive functions of the ANUPQ package; these are functions that extract information via a dialogue with a running pq process. Occasionally, a user needs the "next step"; the functions provided in this chapter make use of data from previous steps retained by the pq program, thus allowing the user to interact with the pq program like one can when one uses the pq program as a stand-alone (see guide.dvi in the standalone-doc directory).

After having read Chapters Non-interactive ANUPQ functions and Interactive ANUPQ functions, cross-references will have taken the reader into Chapter ANUPQ Options; by this stage, the reader need only read the introduction of Chapter ANUPQ Options.

After the reader has developed some facility with the ANUPQ package, she should explore the examples described in Appendix Examples.

If you run into trouble using the ANUPQ functions, some troubleshooting hints are given in Section Hints and Warnings regarding the use of Options. If the troubleshooting hints don't help, Section Authors and Acknowledgements below, gives contact details for the authors of the components of the ANUPQ package.

1.3 Authors and Acknowledgements

The C implementation of the ANU pq standalone was developed by Eamonn O'Brien.

An interactive interface using iostreams was developed with the assistance of Werner Nickel by Greg Gamble.

The GAP 4 version of this package was adapted from the GAP 3 version by Werner Nickel.

A new co-maintainer, Max Horn, joined the team in November, 2011.

The authors would like to thank Joachim Neubüser for his careful proof-reading and advice, and for formulating Chapter Mathematical Background and Terminology.

We would also like to thank Bettina Eick who by her testing and provision of examples helped us to eliminate a number of bugs and who provided a number of valuable suggestions for extensions of the package beyond the GAP 3 capabilities.

If you find a bug, the last section of ANUPQ's README describes the information we need and where to send us a bug report; please take the time to read this (i.e. help us to help you).

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/title.xml000644 000766 000024 00000002517 14355420736 015556 0ustar00mhornstaff000000 000000 ANUPQ ANU p-Quotient 3.3.0 Greg Gamble
Department of Mathematics and Statistics
Curtin University
GPO Box U 1987
Perth WA 6845
Australia
Greg.Gamble@uwa.edu.au http://school.maths.uwa.edu.au/~gregg
Werner Nickel
https://www2.mathematik.tu-darmstadt.de/~nickel/
Eamonn O'Brien
Department of Mathematics
University of Auckland
Private Bag 92019
Auckland
New Zealand
obrien@math.auckland.ac.nz https://www.math.auckland.ac.nz/~obrien
5 January 2023 ©right; 2001-2016 by Greg Gamble

©right; 2001-2005 by Werner Nickel

©right; 1995-2001 by Eamon O'Brien

The &GAP; package &ANUPQ; is licensed under the https://opensource.org/licenses/artistic-license-2.0. anupq-3.3.0/doc/chapA_mj.html000644 000766 000024 00000135600 14355420744 016302 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Appendix A: Examples

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

A Examples

There are a large number of examples provided with the ANUPQ package. These may be executed or displayed via the function PqExample (see PqExample (3.4-4)). Each example resides in a file of the same name in the directory examples. Most of the examples are translations to GAP of examples provided for the pq standalone by Eamonn O'Brien; the standalone examples are found in directories standalone/examples (\(p\)-quotient and \(p\)-group generation examples) and standalone/isom (standard presentation examples). The first line of each example indicates its origin. All the examples seen in earlier chapters of this manual are also available as examples, in a slightly modified form (the example which one can run in order to see something very close to the text example "live" is always indicated near -- usually immediately after -- the text example). The format of the (PqExample) examples is such that they can be read by the standard Read function of GAP, but certain features and comments are interpreted by the function PqExample to do somewhat more than Read does. In particular, any function without a -i, -ni or .g suffix has both a non-interactive and interactive form; in these cases, the default form is the non-interactive form, and giving PqStart as second argument generates the interactive form.

Running PqExample without an argument or with a non-existent example Infos the available examples and some hints on usage:

gap> PqExample();
#I                   PqExample Index (Table of Contents)
#I                   -----------------------------------
#I  This table of possible examples is displayed when calling `PqExample'
#I  with no arguments, or with the argument: "index" (meant in the  sense
#I  of ``list''), or with a non-existent example name.
#I  
#I  Examples that have a name ending in `-ni' are  non-interactive  only.
#I  Examples that have a  name  ending  in  `-i'  are  interactive  only.
#I  Examples with names ending in `.g' also have  only  one  form.  Other
#I  examples have both a non-interactive and an  interactive  form;  call
#I  `PqExample' with 2nd argument `PqStart' to get the  interactive  form
#I  of the example. The substring `PG' in an  example  name  indicates  a
#I  p-Group Generation example, `SP' indicates  a  Standard  Presentation
#I  example, `Rel' indicates it uses  the  `Relators'  option,  and  `Id'
#I  indicates it uses the `Identities' option.
#I  
#I  The following ANUPQ examples are available:
#I  
#I   p-Quotient examples:
#I    general:
#I     "Pq"                   "Pq-ni"                "PqEpimorphism"        
#I     "PqPCover"             "PqSupplementInnerAutomorphisms"
#I    2-groups:
#I     "2gp-Rel"              "2gp-Rel-i"            "2gp-a-Rel-i"
#I     "B2-4"                 "B2-4-Id"              "B2-8-i"
#I     "B4-4-i"               "B4-4-a-i"             "B5-4.g"
#I    3-groups:
#I     "3gp-Rel-i"            "3gp-a-Rel"            "3gp-a-Rel-i"
#I     "3gp-a-x-Rel-i"        "3gp-maxoccur-Rel-i"
#I    5-groups:
#I     "5gp-Rel-i"            "5gp-a-Rel-i"          "5gp-b-Rel-i"
#I     "5gp-c-Rel-i"          "5gp-metabelian-Rel-i" "5gp-maxoccur-Rel-i"
#I     "F2-5-i"               "B2-5-i"               "R2-5-i"
#I     "R2-5-x-i"             "B5-5-Engel3-Id"
#I    7-groups:
#I     "7gp-Rel-i"
#I    11-groups:
#I     "11gp-i"               "11gp-Rel-i"           "11gp-a-Rel-i"
#I     "11gp-3-Engel-Id"      "11gp-3-Engel-Id-i"
#I  
#I   p-Group Generation examples:
#I    general:
#I     "PqDescendants-1"      "PqDescendants-2"      "PqDescendants-3"
#I     "PqDescendants-1-i"
#I    2-groups:
#I     "2gp-PG-i"             "2gp-PG-2-i"           "2gp-PG-3-i"
#I     "2gp-PG-4-i"           "2gp-PG-e4-i"
#I     "PqDescendantsTreeCoclassOne-16-i"
#I    3-groups:
#I     "3gp-PG-i"             "3gp-PG-4-i"           "3gp-PG-x-i"
#I     "3gp-PG-x-1-i"         "PqDescendants-treetraverse-i"
#I     "PqDescendantsTreeCoclassOne-9-i"
#I    5-groups:
#I     "5gp-PG-i"             "Nott-PG-Rel-i"        "Nott-APG-Rel-i"
#I     "PqDescendantsTreeCoclassOne-25-i"
#I    7,11-groups:
#I     "7gp-PG-i"             "11gp-PG-i"
#I  
#I   Standard Presentation examples:
#I    general:
#I     "StandardPresentation" "StandardPresentation-i"
#I     "EpimorphismStandardPresentation"
#I     "EpimorphismStandardPresentation-i"           "IsIsomorphicPGroup-ni"
#I    2-groups:
#I     "2gp-SP-Rel-i"         "2gp-SP-1-Rel-i"       "2gp-SP-2-Rel-i"
#I     "2gp-SP-3-Rel-i"       "2gp-SP-4-Rel-i"       "2gp-SP-d-Rel-i"
#I     "gp-256-SP-Rel-i"      "B2-4-SP-i"            "G2-SP-Rel-i"
#I    3-groups:
#I     "3gp-SP-Rel-i"         "3gp-SP-1-Rel-i"       "3gp-SP-2-Rel-i"
#I     "3gp-SP-3-Rel-i"       "3gp-SP-4-Rel-i"       "G3-SP-Rel-i"
#I    5-groups:
#I     "5gp-SP-Rel-i"         "5gp-SP-a-Rel-i"       "5gp-SP-b-Rel-i"
#I     "5gp-SP-big-Rel-i"     "5gp-SP-d-Rel-i"       "G5-SP-Rel-i"
#I     "G5-SP-a-Rel-i"        "Nott-SP-Rel-i"
#I    7-groups:
#I     "7gp-SP-Rel-i"         "7gp-SP-a-Rel-i"       "7gp-SP-b-Rel-i"
#I    11-groups:
#I     "11gp-SP-a-i"          "11gp-SP-a-Rel-i"      "11gp-SP-a-Rel-1-i"
#I     "11gp-SP-b-i"          "11gp-SP-b-Rel-i"      "11gp-SP-c-Rel-i"
#I  
#I  Notes
#I  -----
#I  1. The example (first) argument of  `PqExample'  is  a  string;  each
#I     example above is in double quotes to remind you to include them.
#I  2. Some examples accept options. To find  out  whether  a  particular
#I     example accepts options, display it first (by including  `Display'
#I     as  last  argument)  which  will  also  indicate  how  `PqExample'
#I     interprets the options, e.g. `PqExample("11gp-SP-a-i", Display);'.
#I  3. Try `SetInfoLevel(InfoANUPQ, <n>);' for  some  <n>  in  [2  ..  4]
#I     before calling PqExample, to see what's going on behind the scenes.
#I  

If on your terminal you are unable to scroll back, an alternative to typing PqExample(); to see the displayed examples is to use on-line help, i.e.  you may type:

gap> ?anupq:examples

which will display this appendix in a GAP session. If you are not fussed about the order in which the examples are organised, AllPqExamples(); lists the available examples relatively compactly (see AllPqExamples (3.4-5)).

In the remainder of this appendix we will discuss particular aspects related to the Relators (see 6.2) and Identities (see 6.2) options, and the construction of the Burnside group \(B(5, 4)\).

A.1 The Relators Option

The Relators option was included because computations involving words containing commutators that are pre-expanded by GAP before being passed to the pq program may run considerably more slowly, than the same computations being run with GAP pre-expansions avoided. The following examples demonstrate a case where the performance hit due to pre-expansion of commutators by GAP is a factor of order 100 (in order to see timing information from the pq program, we set the InfoANUPQ level to 2).

Firstly, we run the example that allows pre-expansion of commutators (the function PqLeftNormComm is provided by the ANUPQ package; see PqLeftNormComm (3.4-1)). Note that since the two commutators of this example are very long (taking more than an page to print), we have edited the output at this point.

gap> SetInfoLevel(InfoANUPQ, 2); #to see timing information
gap> PqExample("11gp-i");
#I  #Example: "11gp-i" . . . based on: examples/11gp
#I  F, a, b, c, R, procId are local to `PqExample'
gap> F := FreeGroup("a", "b", "c"); a := F.1; b := F.2; c := F.3;
<free group on the generators [ a, b, c ]>
a
b
c
gap> R := [PqLeftNormComm([b, a, a, b, c])^11, 
>          PqLeftNormComm([a, b, b, a, b, c])^11, (a * b)^11];;
gap> procId := PqStart(F/R : Prime := 11);
1
gap> PqPcPresentation(procId : ClassBound := 7, 
>                              OutputLevel := 1);
#I  Lower exponent-11 central series for [grp]
#I  Group: [grp] to lower exponent-11 central class 1 has order 11^3
#I  Group: [grp] to lower exponent-11 central class 2 has order 11^8
#I  Group: [grp] to lower exponent-11 central class 3 has order 11^19
#I  Group: [grp] to lower exponent-11 central class 4 has order 11^42
#I  Group: [grp] to lower exponent-11 central class 5 has order 11^98
#I  Group: [grp] to lower exponent-11 central class 6 has order 11^228
#I  Group: [grp] to lower exponent-11 central class 7 has order 11^563
#I  Computation of presentation took 27.04 seconds
gap> PqSavePcPresentation(procId, ANUPQData.outfile);
#I  Variables used in `PqExample' are saved in `ANUPQData.example.vars'.

Now we do the same calculation using the Relators option. In this way, the commutators are passed directly as strings to the pq program, so that GAP does not "see" them and pre-expand them.

gap> PqExample("11gp-Rel-i");
#I  #Example: "11gp-Rel-i" . . . based on: examples/11gp
#I  #(equivalent to "11gp-i" example but uses `Relators' option)
#I  F, rels, procId are local to `PqExample'
gap> F := FreeGroup("a", "b", "c");
<free group on the generators [ a, b, c ]>
gap> rels := ["[b, a, a, b, c]^11", "[a, b, b, a, b, c]^11", "(a * b)^11"];
[ "[b, a, a, b, c]^11", "[a, b, b, a, b, c]^11", "(a * b)^11" ]
gap> procId := PqStart(F : Prime := 11, Relators := rels);
2
gap> PqPcPresentation(procId : ClassBound := 7, 
>                              OutputLevel := 1);
#I  Relators parsed ok.
#I  Lower exponent-11 central series for [grp]
#I  Group: [grp] to lower exponent-11 central class 1 has order 11^3
#I  Group: [grp] to lower exponent-11 central class 2 has order 11^8
#I  Group: [grp] to lower exponent-11 central class 3 has order 11^19
#I  Group: [grp] to lower exponent-11 central class 4 has order 11^42
#I  Group: [grp] to lower exponent-11 central class 5 has order 11^98
#I  Group: [grp] to lower exponent-11 central class 6 has order 11^228
#I  Group: [grp] to lower exponent-11 central class 7 has order 11^563
#I  Computation of presentation took 0.27 seconds
gap> PqSavePcPresentation(procId, ANUPQData.outfile);
#I  Variables used in `PqExample' are saved in `ANUPQData.example.vars'.

A.2 The Identities Option and PqEvaluateIdentities Function

Please pay heed to the warnings given for the Identities option (see 6.2); it is written mainly at the GAP level and is not particularly optimised. The Identities option allows one to compute \(p\)-quotients that satisfy an identity. A trivial example better done using the Exponent option, but which nevertheless demonstrates the usage of the Identities option, is as follows:

gap> SetInfoLevel(InfoANUPQ, 1);
gap> PqExample("B2-4-Id");
#I  #Example: "B2-4-Id" . . . alternative way to generate B(2, 4)
#I  #Generates B(2, 4) by using the `Identities' option
#I  #... this is not as efficient as using `Exponent' but
#I  #demonstrates the usage of the `Identities' option.
#I  F, f, procId are local to `PqExample'
gap> F := FreeGroup("a", "b");
<free group on the generators [ a, b ]>
gap> # All words w in the pc generators of B(2, 4) satisfy f(w) = 1 
gap> f := w -> w^4;
function( w ) ... end
gap> Pq( F : Prime := 2, Identities := [ f ] );
#I  Class 1 with 2 generators.
#I  Class 2 with 5 generators.
#I  Class 3 with 7 generators.
#I  Class 4 with 10 generators.
#I  Class 5 with 12 generators.
#I  Class 5 with 12 generators.
<pc group of size 4096 with 12 generators>
#I  Variables used in `PqExample' are saved in `ANUPQData.example.vars'.
gap> time; 
1400

Note that the time statement gives the time in milliseconds spent by GAP in executing the PqExample("B2-4-Id"); command (i.e. everything up to the Info-ing of the variables used), but over 90% of that time is spent in the final Pq statement. The time spent by the pq program, which is negligible anyway (you can check this by running the example while the InfoANUPQ level is set to 2), is not counted by time.

Since the identity used in the above construction of \(B(2, 4)\) is just an exponent law, the "right" way to compute it is via the Exponent option (see 6.2), which is implemented at the C level and is highly optimised. Consequently, the Exponent option is significantly faster, generally by several orders of magnitude:

gap> SetInfoLevel(InfoANUPQ, 2); # to see time spent by the `pq' program
gap> PqExample("B2-4");
#I  #Example: "B2-4" . . . the ``right'' way to generate B(2, 4)
#I  #Generates B(2, 4) by using the `Exponent' option
#I  F, procId are local to `PqExample'
gap> F := FreeGroup("a", "b");
<free group on the generators [ a, b ]>
gap> Pq( F : Prime := 2, Exponent := 4 );
#I  Computation of presentation took 0.00 seconds
<pc group of size 4096 with 12 generators>
#I  Variables used in `PqExample' are saved in `ANUPQData.example.vars'.
gap> time; # time spent by GAP in executing `PqExample("B2-4");' 
50

The following example uses the Identities option to compute a 3-Engel group for the prime 11. As is the case for the example "B2-4-Id", the example has both a non-interactive and an interactive form; below, we demonstrate the interactive form.

gap> SetInfoLevel(InfoANUPQ, 1); # reset InfoANUPQ to default level
gap> PqExample("11gp-3-Engel-Id", PqStart);
#I  #Example: "11gp-3-Engel-Id" . . . 3-Engel group for prime 11
#I  #Non-trivial example of using the `Identities' option
#I  F, a, b, G, f, procId, Q are local to `PqExample'
gap> F := FreeGroup("a", "b"); a := F.1; b := F.2;
<free group on the generators [ a, b ]>
a
b
gap> G := F/[ a^11, b^11 ];
<fp group on the generators [ a, b ]>
gap> # All word pairs u, v in the pc generators of the 11-quotient Q of G 
gap> # must satisfy the Engel identity: [u, v, v, v] = 1.
gap> f := function(u, v) return PqLeftNormComm( [u, v, v, v] ); end;
function( u, v ) ... end
gap> procId := PqStart( G );
3
gap> Q := Pq( procId : Prime := 11, Identities := [ f ] );
#I  Class 1 with 2 generators.
#I  Class 2 with 3 generators.
#I  Class 3 with 5 generators.
#I  Class 3 with 5 generators.
<pc group of size 161051 with 5 generators>
gap> # We do a ``sample'' check that pairs of elements of Q do satisfy
gap> # the given identity:
gap> f( Random(Q), Random(Q) );
<identity> of ...
gap> f( Q.1, Q.2 );
<identity> of ...
#I  Variables used in `PqExample' are saved in `ANUPQData.example.vars'.

The (interactive) call to Pq above is essentially equivalent to a call to PqPcPresentation with the same arguments and options followed by a call to PqCurrentGroup. Moreover, the call to PqPcPresentation (as described in PqPcPresentation (5.6-1)) is equivalent to a "class 1" call to PqPcPresentation followed by the requisite number of calls to PqNextClass, and with the Identities option set, both PqPcPresentation and PqNextClass "quietly" perform the equivalent of a PqEvaluateIdentities call. In the following example we break down the Pq call into its low-level equivalents, and set and unset the Identities option to show where PqEvaluateIdentities fits into this scheme.

gap> PqExample("11gp-3-Engel-Id-i");
#I  #Example: "11gp-3-Engel-Id-i" . . . 3-Engel grp for prime 11
#I  #Variation of "11gp-3-Engel-Id" broken down into its lower-level component
#I  #command parts.
#I  F, a, b, G, f, procId, Q are local to `PqExample'
gap> F := FreeGroup("a", "b"); a := F.1; b := F.2;
<free group on the generators [ a, b ]>
a
b
gap> G := F/[ a^11, b^11 ];
<fp group on the generators [ a, b ]>
gap> # All word pairs u, v in the pc generators of the 11-quotient Q of G 
gap> # must satisfy the Engel identity: [u, v, v, v] = 1.
gap> f := function(u, v) return PqLeftNormComm( [u, v, v, v] ); end;
function( u, v ) ... end
gap> procId := PqStart( G : Prime := 11 );
4
gap> PqPcPresentation( procId : ClassBound := 1);
gap> PqEvaluateIdentities( procId : Identities := [f] );
#I  Class 1 with 2 generators.
gap> for c in [2 .. 4] do
>      PqNextClass( procId : Identities := [] ); #reset `Identities' option
>      PqEvaluateIdentities( procId : Identities := [f] );
>    od;
#I  Class 2 with 3 generators.
#I  Class 3 with 5 generators.
#I  Class 3 with 5 generators.
gap> Q := PqCurrentGroup( procId );
<pc group of size 161051 with 5 generators>
gap> # We do a ``sample'' check that pairs of elements of Q do satisfy
gap> # the given identity:
gap> f( Random(Q), Random(Q) );
<identity> of ...
gap> f( Q.1, Q.2 );
<identity> of ...
#I  Variables used in `PqExample' are saved in `ANUPQData.example.vars'.

A.3 A Large Example

An example demonstrating how a large computation can be organised with the ANUPQ package is the computation of the Burnside group \(B(5, 4)\), the largest group of exponent 4 generated by 5 elements. It has order \(2^{2728}\) and lower exponent-\(p\) central class 13. The example "B5-4.g" computes \(B(5, 4)\); it is based on a pq standalone input file written by M. F. Newman.

To be able to do examples like this was part of the motivation to provide access to the low-level functions of the standalone program from within GAP.

Please note that the construction uses the knowledge gained by Newman and O'Brien in their initial construction of \(B(5, 4)\), in particular, insight into the commutator structure of the group and the knowledge of the \(p\)-central class and the order of \(B(5, 4)\). Therefore, the construction cannot be used to prove that \(B(5, 4)\) has the order and class mentioned above. It is merely a reconstruction of the group. More information is contained in the header of the file examples/B5-4.g.

procId := PqStart( FreeGroup(5) : Exponent := 4, Prime := 2 );
Pq( procId : ClassBound := 2 );
PqSupplyAutomorphisms( procId,
      [
        [ [ 1, 1, 0, 0, 0],      # first automorphism
          [ 0, 1, 0, 0, 0],
          [ 0, 0, 1, 0, 0],
          [ 0, 0, 0, 1, 0],
          [ 0, 0, 0, 0, 1] ],

        [ [ 0, 0, 0, 0, 1],      # second automorphism
          [ 1, 0, 0, 0, 0],
          [ 0, 1, 0, 0, 0],
          [ 0, 0, 1, 0, 0],
          [ 0, 0, 0, 1, 0] ]
                             ] );;

Relations :=
  [ [],          ## class 1
    [],          ## class 2
    [],          ## class 3
    [],          ## class 4
    [],          ## class 5
    [],          ## class 6
    ## class 7     
    [ [ "x2","x1","x1","x3","x4","x4","x4" ] ],
    ## class 8
    [ [ "x2","x1","x1","x3","x4","x5","x5","x5" ] ],
    ## class 9
    [ [ "x2","x1","x1","x3","x4","x4","x5","x5","x5" ],
      [ "x2","x1","x1","x2","x3","x4","x5","x5","x5" ],
      [ "x2","x1","x1","x3","x3","x4","x5","x5","x5" ] ],
    ## class 10
    [ [ "x2","x1","x1","x2","x3","x3","x4","x5","x5","x5" ],
      [ "x2","x1","x1","x3","x3","x4","x4","x5","x5","x5" ] ],
    ## class 11
    [ [ "x2","x1","x1","x2","x3","x3","x4","x4","x5","x5","x5" ],
      [ "x2","x1","x1","x2","x3","x1","x3","x4","x2","x4","x3" ] ],
    ## class 12
    [ [ "x2","x1","x1","x2","x3","x1","x3","x4","x2","x5","x5","x5" ],
      [ "x2","x1","x1","x3","x2","x4","x3","x5","x4","x5","x5","x5" ] ],
    ## class 13
    [ [ "x2","x1","x1","x2","x3","x1","x3","x4","x2","x4","x5","x5","x5" 
        ] ]
];

for class in [ 3 .. 13 ] do
    Print( "Computing class ", class, "\n" );
    PqSetupTablesForNextClass( procId );

    for w in [ class, class-1 .. 7 ] do

        PqAddTails( procId, w );   
        PqDisplayPcPresentation( procId );

        if Relations[ w ] <> [] then
            # recalculate automorphisms
            PqExtendAutomorphisms( procId );

            for r in Relations[ w ] do
                Print( "Collecting ", r, "\n" );
                PqCommutator( procId, r, 1 );
                PqEchelonise( procId );
                PqApplyAutomorphisms( procId, 15 ); #queue factor = 15
            od;

            PqEliminateRedundantGenerators( procId );
        fi;   
        PqComputeTails( procId, w );
    od;
    PqDisplayPcPresentation( procId );

    smallclass := Minimum( class, 6 );
    for w in [ smallclass, smallclass-1 .. 2 ] do
        PqTails( procId, w );
    od;
    # recalculate automorphisms
    PqExtendAutomorphisms( procId );
    PqCollect( procId, "x5^4" );
    PqEchelonise( procId );
    PqApplyAutomorphisms( procId, 15 ); #queue factor = 15
    PqEliminateRedundantGenerators( procId );
    PqDisplayPcPresentation( procId );
od;

A.4 Developing descendants trees

In the following example we will explore the 3-groups of rank 2 and 3-coclass 1 up to 3-class 5. This will be done using the \(p\)-group generation machinery of the package. We start with the elementary abelian 3-group of rank 2. From within GAP, run the example "PqDescendants-treetraverse-i" via PqExample (see PqExample (3.4-4)).

gap> G := ElementaryAbelianGroup( 9 );
<pc group of size 9 with 2 generators>
gap> procId := PqStart( G );
5
gap> #
gap> #  Below, we use the option StepSize in order to construct descendants
gap> #  of coclass 1. This is equivalent to setting the StepSize to 1 in
gap> #  each descendant calculation.
gap> #
gap> #  The elementary abelian group of order 9 has 3 descendants of
gap> #  3-class 2 and 3-coclass 1, as the result of the next command
gap> #  shows. 
gap> #
gap> PqDescendants( procId : StepSize := 1 );
[ <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators> ]
gap> #
gap> #  Now we will compute the descendants of coclass 1 for each of the
gap> #  groups above. Then we will compute the descendants  of coclass 1
gap> #  of each descendant and so  on.  Note  that the  pq program keeps
gap> #  one file for each class at a time.  For example, the descendants
gap> #  calculation for  the  second  group  of class  2  overwrites the
gap> #  descendant file  obtained  from  the  first  group  of  class 2.
gap> #  Hence,  we have to traverse the descendants tree  in depth first
gap> #  order.
gap> #
gap> PqPGSetDescendantToPcp( procId, 2, 1 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
2
gap> PqPGSetDescendantToPcp( procId, 3, 1 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
2
gap> PqPGSetDescendantToPcp( procId, 4, 1 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
2
gap> #
gap> #  At this point we stop traversing the ``left most'' branch of the
gap> #  descendants tree and move upwards.
gap> #
gap> PqPGSetDescendantToPcp( procId, 4, 2 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> PqPGSetDescendantToPcp( procId, 3, 2 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> #  
gap> #  The computations above indicate that the descendants subtree under
gap> #  the first descendant of the elementary abelian group of order 9
gap> #  will have only one path of infinite length.
gap> #
gap> PqPGSetDescendantToPcp( procId, 2, 2 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
4
gap> #
gap> #  We get four descendants here, three of which will turn out to be
gap> #  incapable, i.e., they have no descendants and are terminal nodes
gap> #  in the descendants tree.
gap> #
gap> PqPGSetDescendantToPcp( procId, 2, 3 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> #
gap> #  The third descendant of class three is incapable.  Let us return
gap> #  to the second descendant of class 2.
gap> #
gap> PqPGSetDescendantToPcp( procId, 2, 2 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
4
gap> PqPGSetDescendantToPcp( procId, 3, 1 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> PqPGSetDescendantToPcp( procId, 3, 2 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> #
gap> #  We skip the third descendant for the moment ... 
gap> #
gap> PqPGSetDescendantToPcp( procId, 3, 4 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> #
gap> #  ... and look at it now.
gap> #
gap> PqPGSetDescendantToPcp( procId, 3, 3 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
6
gap> #
gap> #  In this branch of the descendant tree we get 6 descendants of class
gap> #  three.  Of those 5 will turn out to be incapable and one will have
gap> #  7 descendants.
gap> #
gap> PqPGSetDescendantToPcp( procId, 4, 1 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> PqPGSetDescendantToPcp( procId, 4, 2 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
7
gap> PqPGSetDescendantToPcp( procId, 4, 3 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0

To automate the above procedure to some extent we provide:

A.4-1 PqDescendantsTreeCoclassOne
‣ PqDescendantsTreeCoclassOne( i )( function )
‣ PqDescendantsTreeCoclassOne( )( function )

for the ith or default interactive ANUPQ process, generate a descendant tree for the group of the process (which must be a pc \(p\)-group) consisting of descendants of \(p\)-coclass 1 and extending to the class determined by the option TreeDepth (or 6 if the option is omitted). In an XGAP session, a graphical representation of the descendants tree appears in a separate window. Subsequent calls to PqDescendantsTreeCoclassOne for the same process may be used to extend the descendant tree from the last descendant computed that itself has more than one descendant. PqDescendantsTreeCoclassOne also accepts the options CapableDescendants (or AllDescendants) and any options accepted by the interactive PqDescendants function (see PqDescendants (5.3-6)).

Notes

  1. PqDescendantsTreeCoclassOne first calls PqDescendants. If PqDescendants has already been called for the process, the previous value computed is used and a warning is Info-ed at InfoANUPQ level 1.

  2. As each descendant is processed its unique label defined by the pq program and number of descendants is Info-ed at InfoANUPQ level 1.

  3. PqDescendantsTreeCoclassOne is an "experimental" function that is included to demonstrate the sort of things that are possible with the \(p\)-group generation machinery.

Ignoring the extra functionality provided in an XGAP session, PqDescendantsTreeCoclassOne, with one argument that is the index of an interactive ANUPQ process, is approximately equivalent to:

PqDescendantsTreeCoclassOne := function( procId )
    local des, i;

    des := PqDescendants( procId : StepSize := 1 );
    RecurseDescendants( procId, 2, Length(des) );
end;

where RecurseDescendants is (approximately) defined as follows:

RecurseDescendants := function( procId, class, n )
    local i, nr;

    if class > ValueOption("TreeDepth") then return; fi;

    for i in [1..n] do
        PqPGSetDescendantToPcp( procId, class, i );
        PqPGExtendAutomorphisms( procId );
        nr := PqPGConstructDescendants( procId : StepSize := 1 );
        Print( "Number of descendants of group ", i,
               " at class ", class, ": ", nr, "\n" );
        RecurseDescendants( procId, class+1, nr );
    od;
    return;
end;

The following examples (executed via PqExample; see PqExample (3.4-4)), demonstrate the use of PqDescendantsTreeCoclassOne:

"PqDescendantsTreeCoclassOne-9-i"

approximately does example "PqDescendants-treetraverse-i" again using PqDescendantsTreeCoclassOne;

"PqDescendantsTreeCoclassOne-16-i"

uses the option CapableDescendants; and

"PqDescendantsTreeCoclassOne-25-i"

calculates all descendants by omitting the CapableDescendants option.

The numbers 9, 16 and 25 respectively, indicate the order of the elementary abelian group to which PqDescendantsTreeCoclassOne is applied for these examples.

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/manual.js000644 000766 000024 00000010113 14355420744 015514 0ustar00mhornstaff000000 000000 /* manual.js Frank Lübeck */ /* This file contains a few javascript functions which allow to switch between display styles for GAPDoc HTML manuals. If javascript is switched off in a browser or this file in not available in a manual directory, this is no problem. Users just cannot switch between several styles and don't see the corresponding button. A style with name mystyle can be added by providing two files (or only one of them). mystyle.js: Additional javascript code for the style, it is read in the HTML pages after this current file. The additional code may adjust the preprocessing function jscontent() with is called onload of a file. This is done by appending functions to jscontentfuncs (jscontentfuncs.push(newfunc);). Make sure, that your style is still usable without javascript. mystyle.css: CSS configuration, read after manual.css (so it can just reconfigure a few details, or overwrite everything). Then adjust chooser.html such that users can switch on and off mystyle. A user can change the preferred style permanently by using the [Style] link and choosing one. Or one can append '?GAPDocStyle=mystyle' to the URL when loading any file of the manual (so the style can be configured in the GAP user preferences). */ /* generic helper function */ function deleteCookie(nam) { document.cookie = nam+"=;Path=/;expires=Thu, 01 Jan 1970 00:00:00 GMT"; } /* read a value from a "nam1=val1;nam2=val2;..." string (e.g., the search part of an URL or a cookie */ function valueString(str,nam) { var cs = str.split(";"); for (var i=0; i < cs.length; i++) { var pos = cs[i].search(nam+"="); if (pos > -1) { pos = cs[i].indexOf("="); return cs[i].slice(pos+1); } } return 0; } /* when a non-default style is chosen via URL or a cookie, then the cookie is reset and the styles .js and .css files are read */ function overwriteStyle() { /* style in URL? */ var style = valueString(window.location.search, "GAPDocStyle"); /* otherwise check cookie */ if (style == 0) style = valueString(document.cookie, "GAPDocStyle"); if (style == 0) return; if (style == "default") deleteCookie("GAPDocStyle"); else { /* ok, we set the cookie for path "/" */ var path = "/"; /* or better like this ??? var here = window.location.pathname.split("/"); for (var i=0; i+3 < here.length; i++) path = path+"/"+here[i]; */ document.cookie = "GAPDocStyle="+style+";Path="+path; /* split into names of style files */ var stlist = style.split(","); /* read style's css and js files */ for (var i=0; i < stlist.length; i++) { document.writeln(''); document.writeln(''); } } } /* this adds a "[Style]" link next to the MathJax switcher */ function addStyleLink() { var line = document.getElementById("mathjaxlink"); var el = document.createElement("a"); var oncl = document.createAttribute("href"); var back = window.location.protocol+"//" if (window.location.protocol == "http:" || window.location.protocol == "https:") { back = back+window.location.host; if (window.location.port != "") { back = back+":"+window.location.port; } } back = back+window.location.pathname; oncl.nodeValue = "chooser.html?BACK="+back; el.setAttributeNode(oncl); var cont = document.createTextNode(" [Style]"); el.appendChild(cont); line.appendChild(el); } var jscontentfuncs = new Array(); jscontentfuncs.push(addStyleLink); /* the default jscontent() only adds the [Style] link to the page */ function jscontent () { for (var i=0; i < jscontentfuncs.length; i++) jscontentfuncs[i](); } anupq-3.3.0/doc/chapInd.html000644 000766 000024 00000075022 14355420744 016147 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Index
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

Index

AllANUPQoptions 6.1-1
allowable subgroup 2.1-4
AllPqExamples 3.4-5
ANUPQ 1.1
ANUPQ_GAP_EXEC, environment variable 7. 7.1 7.2
ANUPQData 3.2-1
ANUPQDirectoryTemporary 3.2-2
ANUPQoptions 6.1-2
ANUPQWarnOfOtherOptions 3.6-1
automorphisms, of p-groups 4.2 5.3-3
B(5,4) A.3
banner 3.1
bug reports 1.3
capable 2.1-4
class 2.1-2
collection 2.1-1
compaction 2.3
confluent 2.1-1
confluent rewriting system 2.1-1
consistency conditions 2.1-1
consistent 2.1-1
definition, of generator 2.2-1
descendant 2.1-4
echelonised matrix 2.3
Engel identity 2.1-5
EpimorphismPqStandardPresentation 4.2-2
    interactive 5.3-5
EpimorphismStandardPresentation 4.2-2
    interactive 5.3-5
exponent check 2.2-3
exponent law 2.1-5
exponent-p central series 2.1-2
extended automorphism 2.1-4
GrepPqExamples 3.4-6
identical relation 2.1-5
immediate descendant 2.1-4
InfoANUPQ 3.3-1
interruption 5.2-3
IsCapable 3.5-1
IsIsomorphicPGroup 4.3-1
isomorphism testing 2.3
IsPqIsomorphicPGroup 4.3-1
IsPqProcessAlive 5.2-3
    for default process 5.2-3
label of standard matrix 2.3
labelled pcp 2.2-1
law 2.1-5
menu item, of pq program 3.6
metabelian law 2.1-5
multiplicator rank 2.1-3
MultiplicatorRank 3.5-1
NuclearRank 3.5-1
nucleus 2.1-4 2.1-4
option, of pq program is a menu item 3.6
option AllDescendants 4.4-1 5.3-6 6.2
option BasicAlgorithm 4.4-1 5.3-6 6.2
option Bounds 6.2
option CapableDescendants 4.4-1 5.3-6 6.2
option ClassBound 4.1-1 4.2-1 4.4-1 5.3-1 5.3-4 5.3-6 5.8-2 6.2
option CustomiseOutput 4.4-1 5.3-6 6.2
option Exponent 4.1-1 4.2-1 4.4-1 5.3-1 5.3-4 5.3-6 6.2
option Filename 6.2
option GroupName 4.1-1 4.2-1 4.4-1 5.3-1 5.3-4 5.3-6 6.2
option Identities 4.1-1 5.3-1 6.2
    example of usage 4.1-1
option Metabelian 4.1-1 4.2-1 4.4-1 5.3-1 5.3-4 5.3-6 6.2
option NumberOfSolubleAutomorphisms 6.2
option OrderBound 4.4-1 5.3-6 6.2
option OutputLevel 4.1-1 4.2-1 5.3-1 5.3-4 6.2
option PcgsAutomorphisms 5.8-2 6.2
option pQuotient 4.2-1 5.3-4 6.2
option PqWorkspace 4.1-1 4.2-1 4.4-1 6.2
option Prime 4.1-1 4.2-1 5.3-1 5.3-4 6.2
option PrintAutomorphisms 6.2
option PrintPermutations 6.2
option QueueFactor 5.6-4 6.2
option RankInitialSegmentSubgroups 4.4-1 5.3-6 6.2
option RedoPcp 5.3-1 6.2
option RelativeOrders 6.2
option Relators 4.1-1 4.4-1 5.3-1 5.3-6 6.2
    example of usage 4.1-1
option SetupFile 4.1-1 4.2-1 4.4-1 6.2
option SpaceEfficient 4.4-1 5.3-6 6.2
option StandardPresentationFile 4.2-1 5.3-4 5.8-2 6.2
option StepSize 4.4-1 5.3-6 6.2
option SubList 4.4-1 5.3-6 6.2
option TreeDepth 6.2
orbits 2.3
p-class 2.1-2
p-cover 2.1-3
p-covering group 2.1-3
p-group generation 2.3
p-multiplicator 2.1-3
p-multiplicator rank 2.1-3
pc generators 2.1-1
pc presentation 2.1-1
pcp 2.1-1
permutations 2.1-4
power-commutator presentation 2.1-1
Pq 4.1-1
    interactive 5.3-1
    interactive, for default process 5.3-1
PqAddTails 5.7-7
    for default process 5.7-7
PqAPGDegree 5.10-1
    for default process 5.10-1
PqAPGOrbitRepresentatives 5.10-4
    for default process 5.10-4
PqAPGOrbits 5.10-3
    for default process 5.10-3
PqAPGPermutations 5.10-2
    for default process 5.10-2
PqAPGSingleStage 5.10-5
    for default process 5.10-5
PqApplyAutomorphisms 5.7-22
    for default process 5.7-22
PqCollect 5.7-1
    for default process 5.7-1
PqCollectDefiningRelations 5.7-9
    for default process 5.7-9
PqCollectWordInDefiningGenerators 5.7-10
    for default process 5.7-10
PqCommutator 5.7-3
    for default process 5.7-3
PqCommutatorDefiningGenerators 5.7-11
    for default process 5.7-11
PqCompact 5.7-18
    for default process 5.7-18
PqComputePCover 5.6-5
    for default process 5.6-5
PqComputeTails 5.7-6
    for default process 5.7-6
PqCurrentGroup 5.5-6
    for default process 5.5-6
PqDescendants 4.4-1
    interactive 5.3-6
    interactive, for default process 5.3-6
PqDescendantsTreeCoclassOne A.4-1
    for default process A.4-1
PqDisplayAutomorphisms 5.7-24
    for default process 5.7-24
PqDisplayPcPresentation 5.5-7
    for default process 5.5-7
PqDisplayStructure 5.7-23
    for default process 5.7-23
PqDoConsistencyCheck 5.7-17
    for default process 5.7-17
PqDoConsistencyChecks 5.7-8
    for default process 5.7-8
PqDoExponentChecks 5.7-12
    for default process 5.7-12
PqEchelonise 5.7-19
    for default process 5.7-19
PqEliminateRedundantGenerators 5.7-13
    for default process 5.7-13
PqEpimorphism 4.1-2
    interactive 5.3-2
    interactive, for default process 5.3-2
PqEvaluateIdentities 5.5-9
    for default process 5.5-9
PqExample 3.4-4
    no arguments 3.4-4
    with filename 3.4-4
PqExtendAutomorphisms 5.7-21
    for default process 5.7-21
PqFactoredOrder 5.5-2
    for default process 5.5-2
PqGAPRelators 3.4-2
PqJacobi 5.7-17
    for default process 5.7-17
PqLeftNormComm 3.4-1
PqList 4.4-3
PqNextClass 5.6-4
    for default process 5.6-4
PqNrPcGenerators 5.5-1
    for default process 5.5-1
PqOrder 5.5-3
    for default process 5.5-3
PqParseWord 3.4-3
PqPClass 5.5-4
    for default process 5.5-4
PqPCover 4.1-3
    interactive 5.3-3
    interactive, for default process 5.3-3
PqPcPresentation 5.6-1
    for default process 5.6-1
PqPGConstructDescendants 5.9-3
    for default process 5.9-3
PqPGExtendAutomorphisms 5.9-2
    for default process 5.9-2
PqPGRestoreDescendantFromFile 5.9-4
    for default process 5.9-4
    with class 5.9-4
    with class, for default process 5.9-4
PqPGSetDescendantToPcp 5.9-4
    for default process 5.9-4
    with class 5.9-4
    with class, for default process 5.9-4
PqPGSupplyAutomorphisms 5.9-1
    for default process 5.9-1
PqProcessIndex 5.2-1
    for default process 5.2-1
PqProcessIndices 5.2-2
PqQuit 5.1-2
    for default process 5.1-2
PqQuitAll 5.1-3
PqRead 5.11-1
    for default process 5.11-1
PqReadAll 5.11-2
    for default process 5.11-2
PqReadUntil 5.11-3
    for default process 5.11-3
    with modify map 5.11-3
    with modify map, for default process 5.11-3
PqRestorePcPresentation 5.6-3
    for default process 5.6-3
PqRevertToPreviousClass 5.7-14
    for default process 5.7-14
PqSavePcPresentation 5.6-2
    for default process 5.6-2
PqSetMaximalOccurrences 5.7-15
    for default process 5.7-15
PqSetMetabelian 5.7-16
    for default process 5.7-16
PqSetOutputLevel 5.5-8
    for default process 5.5-8
PqSetPQuotientToGroup 5.3-7
    for default process 5.3-7
PqSetupTablesForNextClass 5.7-4
    for default process 5.7-4
PqSolveEquation 5.7-2
    for default process 5.7-2
PqSPCompareTwoFilePresentations 5.8-4
    for default process 5.8-4
PqSPComputePcpAndPCover 5.8-1
    for default process 5.8-1
PqSPIsomorphism 5.8-5
    for default process 5.8-5
PqSPSavePresentation 5.8-3
    for default process 5.8-3
PqSPStandardPresentation 5.8-2
    for default process 5.8-2
PqStandardPresentation 4.2-1
    interactive 5.3-4
PqStart 5.1-1
    with group 5.1-1
    with group and workspace size 5.1-1
    with workspace size 5.1-1
PqSupplementInnerAutomorphisms 4.4-2
PqSupplyAutomorphisms 5.7-20
    for default process 5.7-20
PqTails 5.7-5
    for default process 5.7-5
PqWeight 5.5-5
    for default process 5.5-5
PqWrite 5.11-4
    for default process 5.11-4
PqWritePcPresentation 5.7-25
    for default process 5.7-25
SavePqList 4.4-4
standard presentation 2.3
StandardPresentation 4.2-1
    interactive 5.3-4
tails 2.2-1
terminal 2.1-4
ToPQLog 3.4-7
troubleshooting tips 3.6
weight function 2.1-2
weighted pcp 2.1-2

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/chap3_mj.html000644 000766 000024 00000155731 14355420744 016273 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 3: Infrastructure
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

3 Infrastructure

Most of the details in this chapter are of a technical nature; the user need only skim over this chapter on a first reading. Mostly, it is enough to know that

  • you must do a LoadPackage("anupq"); before you can expect to use a command defined by the ANUPQ package (details are in Section Loading the ANUPQ Package);

  • partial results of ANUPQ commands and some other data are stored in the ANUPQData global variable (details are in Section The ANUPQData Record);

  • doing SetInfoLevel(InfoANUPQ, n); for n greater than the default value 1 will give progressively more information of what is going on "behind the scenes" (details are in Section Setting the Verbosity of ANUPQ via Info and InfoANUPQ);

  • in Section Utility Functions we describe some utility functions and functions that run examples from the collection of examples of this package;

  • in Section Attributes and a Property for fp and pc p-groups we describe the attributes and property NuclearRank, MultiplicatorRank and IsCapable; and

  • in Section Hints and Warnings regarding the use of Options we describe some troubleshooting strategies. Also this section explains the utility of setting ANUPQWarnOfOtherOptions := true; (particularly for novice users) for detecting misspelt options and diagnosing other option usage problems.

3.1 Loading the ANUPQ Package

To use the ANUPQ package, as with any GAP package, it must be requested explicitly. This is done by calling

gap> LoadPackage( "anupq" );
---------------------------------------------------------------------------
Loading  ANUPQ 3.3.0 (ANU p-Quotient)
by Greg Gamble (GAP code, http://school.maths.uwa.edu.au/~gregg),
   Werner Nickel (GAP code, https://www2.mathematik.tu-darmstadt.de/~nickel/), and
   Eamonn O'Brien (C code, https://www.math.auckland.ac.nz/~obrien).
maintained by:
   Greg Gamble (http://school.maths.uwa.edu.au/~gregg) and
   Max Horn (https://www.quendi.de/math).
uses ANU pq binary (C code program) version: 1.9
Homepage: https://gap-packages.github.io/anupq/
Report issues at https://github.com/gap-packages/anupq/issues
---------------------------------------------------------------------------
true

Note that since the ANUPQ package uses the AutomorphimGroupPGroup function of the AutPGrp package and, in any case, often needs other AutPGrp functions when computing descendants, the user must ensure that the AutPGrp package is also installed, at least version 1.5. If the AutPGrp package is not installed, the ANUPQ package will fail to load.

Also, if GAP cannot find a working pq binary, the call to LoadPackage will return fail.

If you want to load the ANUPQ package by default, you can put the LoadPackage command into your gap.ini file (see Section Reference: The gap.ini and gaprc files in the GAP Reference Manual). By the way, the novice user of the ANUPQ package should probably also append the line

ANUPQWarnOfOtherOptions := true;

to their gap.ini file, somewhere after the LoadPackage( "anupq" ); command (see ANUPQWarnOfOtherOptions (3.6-1)).

3.2 The ANUPQData Record

This section contains fairly technical details which may be skipped on an initial reading.

3.2-1 ANUPQData
‣ ANUPQData( global variable )

is a GAP record in which the essential data for an ANUPQ session within GAP is stored; its fields are:

binary

the path of the pq binary;

tmpdir

the path of the temporary directory used by the pq binary and GAP (i.e. the directory in which all the pq's temporary files are created) (also see ANUPQDirectoryTemporary (3.2-2) below);

outfile

the full path of the default pq output file;

SPimages

the full path of the file GAP_library to which the pq program writes its Standard Presentation images;

version

the version of the current pq binary;

ni

a data record used by non-interactive functions (see below and Chapter Non-interactive ANUPQ functions);

io

list of data records for PqStart (see below and PqStart (5.1-1)) processes;

topqlogfile

name of file logged to by ToPQLog (see ToPQLog (3.4-7)); and

logstream

stream of file logged to by ToPQLog (see ToPQLog (3.4-7)).

Each time an interactive ANUPQ process is initiated via PqStart (see PqStart (5.1-1)), an identifying number ioIndex is generated for the interactive process and a record ANUPQData.io[ioIndex] with some or all of the fields listed below is created. Whenever a non-interactive function is called (see Chapter Non-interactive ANUPQ functions), the record ANUPQData.ni is updated with fields that, if bound, have exactly the same purpose as for a ANUPQData.io[ioIndex] record.

stream

the IOStream opened for interactive ANUPQ process ioIndex or non-interactive ANUPQ function;

group

the group given as first argument to PqStart, Pq, PqEpimorphism, PqDescendants or PqStandardPresentation (or any synonymous methods);

haspcp

is bound and set to true when a pc presentation is first set inside the pq program (e.g. by PqPcPresentation or PqRestorePcPresentation or a higher order function like Pq, PqEpimorphism, PqPCover, PqDescendants or PqStandardPresentation that does a PqPcPresentation operation, but not PqStart which only starts up an interactive ANUPQ process);

gens

a list of the generators of the group group as strings (the same as those passed to the pq program);

rels

a list of the relators of the group group as strings (the same as those passed to the pq program);

name

the name of the group whose pc presentation is defined by a call to the pq program (according to the pq program -- unless you have used the GroupName option (see e.g. Pq (4.1-1)) or applied the function SetName (see SetName (Reference: Name)) to the group, the "generic" name "[grp]" is set as a default);

gpnum

if not a null string, the "number" (i.e. the unique label assigned by the pq program) of the last descendant processed;

class

the largest lower exponent-\(p\) central class of a quotient group of the group (usually group) found by a call to the pq program;

forder

the factored order of the quotient group of largest lower exponent-\(p\) central class found for the group (usually group) by a call to the pq program (this factored order is given as a list [p,n], indicating an order of \(p^n\));

pcoverclass

the lower exponent-\(p\) central class of the \(p\)-covering group of a \(p\)-quotient of the group (usually group) found by a call to the pq program;

workspace

the workspace set for the pq process (either given as a second argument to PqStart, or set by default to 10000000);

menu

the current menu of the pq process (the pq program is managed by various menus, the details of which the user shouldn't normally need to know about -- the menu field remembers which menu the pq process is currently "in");

outfname

is the file to which pq output is directed, which is always ANUPQData.outfile, except when option SetupFile is used with a non-interactive function, in which case outfname is set to "PQ_OUTPUT";

pQuotient

is set to the value returned by Pq (see Pq (4.1-1)) (the field pQepi is also set at the same time);

pQepi

is set to the value returned by PqEpimorphism (see PqEpimorphism (4.1-2)) (the field pQuotient is also set at the same time);

pCover

is set to the value returned by PqPCover (see PqPCover (4.1-3));

SP

is set to the value returned by PqStandardPresentation or StandardPresentation (see PqStandardPresentation (5.3-4)) when called interactively, for process i (the field SPepi is also set at the same time);

SPepi

is set to the value returned by EpimorphismPqStandardPresentation or EpimorphismStandardPresentation (see EpimorphismPqStandardPresentation (5.3-5)) when called interactively, for process i (the field SP is also set at the same time);

descendants

is set to the value returned by PqDescendants (see PqDescendants (4.4-1));

treepos

if set by a call to PqDescendantsTreeCoclassOne (see PqDescendantsTreeCoclassOne (A.4-1)), it contains a record with fields class, node and ndes being the information that determines the last descendant with a non-zero number of descendants processed;

xgapsheet

if set by a call to PqDescendantsTreeCoclassOne (see PqDescendantsTreeCoclassOne (A.4-1)) during an XGAP session, it contains the XGAP Sheet on which the descendants tree is displayed; and

nextX

if set by a call to PqDescendantsTreeCoclassOne (see PqDescendantsTreeCoclassOne (A.4-1)) during an XGAP session, it contains a list of integers, the ith entry of which is the x-coordinate of the next node (representing a descendant) for the ith class.

3.2-2 ANUPQDirectoryTemporary
‣ ANUPQDirectoryTemporary( dir )( function )

calls the UNIX command mkdir to create dir, which must be a string, and if successful a directory object for dir is both assigned to ANUPQData.tmpdir and returned. The field ANUPQData.outfile is also set to be a file in ANUPQData.tmpdir, and on exit from GAP dir is removed. Most users will never need this command; by default, GAP typically chooses a "random" subdirectory of /tmp for ANUPQData.tmpdir which may occasionally have limits on what may be written there. ANUPQDirectoryTemporary permits the user to choose a directory (object) where one is not so limited.

3.3 Setting the Verbosity of ANUPQ via Info and InfoANUPQ

3.3-1 InfoANUPQ
‣ InfoANUPQ( info class )

The input to and the output from the pq program is, by default, not displayed. However the user may choose to see some, or all, of this input/output. This is done via the Info mechanism (see Section Reference: Info Functions in the GAP Reference Manual). For this purpose, there is the InfoClass InfoANUPQ. If the InfoLevel of InfoANUPQ is high enough each line of pq input/output is directed to a call to Info and will be displayed for the user to see. By default, the InfoLevel of InfoANUPQ is 1, and it is recommended that you leave it at this level, or higher. Messages that the user should presumably want to see and output from the pq program influenced by the value of the option OutputLevel (see the options listed in Section Pq (4.1-1)), other than timing and memory usage are directed to Info at InfoANUPQ level 1.

To turn off all InfoANUPQ messaging, set the InfoANUPQ level to 0.

There are five other user-intended InfoANUPQ levels: 2, 3, 4, 5 and 6.

gap> SetInfoLevel(InfoANUPQ, 2);

enables the display of most timing and memory usage data from the pq program, and also the number of identity instances when the Identities option is used. (Some timing and memory usage data, particularly when profuse in quantity, is Info-ed at InfoANUPQ level 3 instead.) Note that the the GAP functions time and Runtime (see Runtime (Reference: Runtime) in the GAP Reference Manual) count the time spent by GAP and not the time spent by the (external) pq program.

gap> SetInfoLevel(InfoANUPQ, 3);

enables the display of output of the nature of the first two InfoANUPQ that was not directly invoked by the user (e.g. some commands require GAP to discover something about the current state known to the pq program). The identity instances processed under the Identities option are also displayed at this level. In some cases, the pq program produces a lot of output despite the fact that the OutputLevel (see 6.2) is unset or is set to 0; such output is also Info-ed at InfoANUPQ level 3.

gap> SetInfoLevel(InfoANUPQ, 4);

enables the display of all the commands directed to the pq program, behind a "ToPQ> " prompt (so that you can distinguish it from the output from the pq program). See Section Hints and Warnings regarding the use of Options for an example of how this can be a useful troubleshooting tool.

gap> SetInfoLevel(InfoANUPQ, 5);

enables the display of the pq program's prompts for input. Finally,

gap> SetInfoLevel(InfoANUPQ, 6);

enables the display of all other output from the pq program, namely the banner and menus. However, the timing data printed when the pq program exits can never be observed.

3.4 Utility Functions

3.4-1 PqLeftNormComm
‣ PqLeftNormComm( elts )( function )

returns for a list of elements of some group (e.g. elts may be a list of words in the generators of a free or fp group) the left normed commutator of elts, e.g. if w1, w2, w3 are such elements then PqLeftNormComm( [w1, w2, w3] ); is equivalent to Comm( Comm( w1, w2 ), w3 );.

Note: elts must contain at least two elements.

3.4-2 PqGAPRelators
‣ PqGAPRelators( group, rels )( function )

returns a list of words that GAP understands, given a list rels of strings in the string representations of the generators of the fp group group prepared as a list of relators for the pq program.

Note: The pq program does not use / to indicate multiplication by an inverse and uses square brackets to represent (left normed) commutators. Also, even though the pq program accepts relations, all elements of rels must be in relator form, i.e. a relation of form w1 = w2 must be written as w1*(w2)^-1.

Here is an example:

gap> F := FreeGroup("a", "b");
<free group on the generators [ a, b ]>
gap> PqGAPRelators(F, [ "a*b^2", "[a,b]^2*a", "([a,b,a,b,b]*a*b)^2*a" ]);
[ a*b^2, a^-1*b^-1*a*b*a^-1*b^-1*a*b*a, b^-1*a^-1*b^-1*a^-1*b*a*b^-1*a*b*a^
    -1*b*a^-1*b^-1*a*b*a*b^-1*a^-1*b^-1*a^-1*b*a*b^-1*a*b^-1*a^-1*b*a^-1*b^
    -1*a*b*a*b*a^-1*b*a*b^-1*a*b*a^-1*b*a^-1*b^-1*a*b*a*b^-1*a^-1*b^-1*a^
    -1*b*a*b^-1*a*b^-1*a^-1*b*a^-1*b^-1*a*b*a*b^2*a*b*a ]

3.4-3 PqParseWord
‣ PqParseWord( word, n )( function )

parses a word, a string representing a word in the pc generators x1,...,xn, through GAP. This function is provided as a rough-and-ready check of word for syntax errors. A syntax error will cause the entering of a break-loop, in which the error message may or may not be meaningful (depending on whether the syntax error gets caught at the GAP or kernel level).

Note: The reason the generators must be x1,...,xn is that these are the pc generator names used by the pq program (as distinct from the generator names for the group provided by the user to a function like Pq that invokes the pq program).

3.4-4 PqExample
‣ PqExample( )( function )
‣ PqExample( example[, PqStart][, Display] )( function )
‣ PqExample( example[, PqStart][, filename] )( function )

With no arguments, or with single argument "index", or a string example that is not the name of a file in the examples directory, an index of available examples is displayed.

With just the one argument example that is the name of a file in the examples directory, the example contained in that file is executed in its simplest form. Some examples accept options which you may use to modify some of the options used in the commands of the example. To find out which options an example accepts, use one of the mechanisms for displaying the example described below.

Some examples have both non-interactive and interactive forms; those that are non-interactive only have a name ending in -ni; those that are interactive only have a name ending in -i; examples with names ending in .g also have only one form; all other examples have both non-interactive and interactive forms and for these giving PqStart as second argument invokes PqStart initially and makes the appropriate adjustments so that the example is executed or displayed using interactive functions.

If PqExample is called with last (second or third) argument Display then the example is displayed without being executed. If the last argument is a non-empty string filename then the example is also displayed without being executed but is also written to a file with that name. Passing an empty string as last argument has the same effect as passing Display.

Note: The variables used in PqExample are local to the running of PqExample, so there's no danger of having some of your variables over-written. However, they are not completely lost either. They are saved to a record ANUPQData.examples.vars, i.e. if F is a variable used in the example then you will be able to access it after PqExample has finished as ANUPQData.examples.vars.F.

3.4-5 AllPqExamples
‣ AllPqExamples( )( function )

returns a list of all currently available examples in default UNIX-listing (i.e. alphabetic) order.

3.4-6 GrepPqExamples
‣ GrepPqExamples( string )( function )

runs the UNIX command grep string over the ANUPQ examples and returns the list of examples for which there is a match. The actual matches are Info-ed at InfoANUPQ level 2.

3.4-7 ToPQLog
‣ ToPQLog( [filename] )( function )

With string argument filename, ToPQLog opens the file with name filename for logging; all commands written to the pq binary (that are Info-ed behind a "ToPQ> " prompt at InfoANUPQ level 4) are then also written to that file (but without prompts). With no argument, ToPQLog stops logging to whatever file was being logged to. If a file was already being logged to, that file is closed and the file with name filename is opened for logging.

3.5 Attributes and a Property for fp and pc p-groups

3.5-1 NuclearRank
‣ NuclearRank( G )( attribute )
‣ MultiplicatorRank( G )( attribute )
‣ IsCapable( G )( property )

return the nuclear rank of G, \(p\)-multiplicator rank of G, and whether G is capable (i.e. true if it is, or false if it is not), respectively.

These attributes and property are set automatically if G is one of the following:

  • an fp group returned by PqStandardPresentation or StandardPresentation (see PqStandardPresentation (4.2-1));

  • the image (fp group) of the epimorphism returned by an EpimorphismPqStandardPresentation or EpimorphismStandardPresentation call (see EpimorphismPqStandardPresentation (4.2-2)); or

  • one of the pc groups of the list of descendants returned by PqDescendants (see PqDescendants (4.4-1)).

If G is an fp group or a pc \(p\)-group and not one of the above and the attribute or property has not otherwise been set for G, then PqStandardPresentation is called to set all three of NuclearRank, MultiplicatorRank and IsCapable, before returning the value of the attribute or property actually called. Such a group G must know in advance that it is a \(p\)-group; this is the case for the groups returned by the functions Pq and PqPCover, and the image group of the epimorphism returned by PqEpimorphism. Otherwise, if you know the group to be a \(p\)-group, then this can be set by typing

SetIsPGroup( G, true );

or by invoking IsPGroup( G ). Note that for an fp group G, the latter may result in a coset enumeration which might not terminate in a reasonable time.

Note: For G such that HasNuclearRank(G) = true, IsCapable(G) is equivalent to (the truth or falsity of) NuclearRank( G ) = 0.

3.6 Hints and Warnings regarding the use of Options

On a first reading we recommend you skip this section and come back to it if and when you run into trouble.

Note: By "options" we refer to GAP options. The pq program also uses the term "option"; to distinguish the two usages of "option", in this manual we use the term menu item to refer to what the pq program refers to as an "option".

Options are passed to the ANUPQ interface functions in either of the two usual mechanisms provided by GAP, namely:

  • options may be set globally using the function PushOptions (see Chapter Reference: Options Stack in the GAP Reference Manual); or

  • options may be appended to the argument list of any function call, separated by a colon from the argument list (see Chapter Reference: Function Calls in the GAP Reference Manual), in which case they are then passed on recursively to any subsequent inner function call, which may in turn have options of their own.

Particularly, when one is using the interactive functions of Chapter Interactive ANUPQ functions, one should, in general, avoid using the global method of passing options. In fact, it is recommended that prior to calling PqStart the OptionsStack be empty. The essential problem with setting options globally using the function PushOptions is that options pushed onto OptionsStack, in this way, (generally) remain there until an explicit PopOptions() call is made.

In contrast, options passed in the usual way behind a colon following a function's arguments (see Reference: Function Call With Options in the GAP Reference Manual) are local, and disappear from OptionsStack after the function has executed successfully. If the function does not execute successfully, i.e. it runs into error and the user quits the resulting break loop (see Section Reference: Break Loops in the Reference Manual) rather than attempting to repair the problem and typing return; then, unless the error at the kernel level, the OptionsStack is reset. If an error is detected inside the kernel (hopefully, this should occur only rarely, if at all) then the options of that function will not be cleared from OptionsStack; in such cases:

gap> ResetOptionsStack();
#I  Options stack is already empty

is usually necessary (see Chapter ResetOptionsStack (Reference: ResetOptionsStack) in the GAP Reference Manual), which recursively calls PopOptions() until OptionsStack is empty, or as in the above case warns you that the OptionsStack is already empty.

Note that a function, that is passed options after the colon, will also see any global options or any options passed down recursively from functions calling that function, unless those options are over-ridden by options passed via the function. Also, note that duplication of option names for different programs may lead to misinterpretations, and mis-spelled options will not be "seen".

The non-interactive functions of Chapter Non-interactive ANUPQ functions that have Pq somewhere in their name provide an alternative method of passing options as additional arguments. This has the advantages that options can be abbreviated and mis-spelled options will be trapped.

3.6-1 ANUPQWarnOfOtherOptions
‣ ANUPQWarnOfOtherOptions( global variable )

is a global variable that is by default false. If it is set to true then any function provided by the ANUPQ function that recognises at least one option, will warn you of "other" options, i.e. options that the function does not recognise. These warnings are emitted at InfoWarning or InfoANUPQ level 1. This is useful for detecting mis-spelled options. Here is an example using the function Pq (first described in Chapter Non-interactive ANUPQ functions):

gap> SetInfoLevel(InfoANUPQ, 1);        # Set InfoANUPQ to default level
gap> ANUPQWarnOfOtherOptions := true;;
gap> # The following makes entry into break loops very ``quiet'' ...
gap> OnBreak := function() Where(0); end;;
gap> F := FreeGroup( "a", "b" );
<free group on the generators [ a, b ]>
gap> Pq( F : Prime := 2, Classbound := 1 );
#I  ANUPQ Warning: Options: [ "Classbound" ] ignored
#I  (invalid for generic function: `Pq').
user interrupt at
moreOfline := ReadLine( iostream );
Entering break read-eval-print loop ...
you can 'quit;' to quit to outer loop, or
you can 'return;' to continue

Here we mistyped ClassBound as Classbound, and after seeing the Info-ed warning that Classbound was ignored, we typed a control-C (that's the "user interrupt at" message) which took us into a break loop. Since the Pq command was not able to finish, the options Prime and Classbound, in particular, will still be on the OptionsStack:

brk> OptionsStack;
[ rec( Prime := 2, Classbound := 1 ), 
  rec( Prime := 2, Classbound := 1, PqEpiOrPCover := "pQuotient" ) ]

The option PqEpiOrPCover is a behind-the-scenes option that need not concern the user. On quitting the break-loop the OptionsStack is reset and a warning telling you this is emitted:

brk> quit; # to get back to the `gap>' prompt
#I  Options stack has been reset

Above, we altered OnBreak (see OnBreak (Reference: OnBreak) in the Reference manual) to reduce the back-tracing on entry into a break loop. We now restore OnBreak to its usual value.

gap> OnBreak := Where;;

Notes

In cases where functions recursively call others with options (e.g. when using PqExample with options), setting ANUPQWarnOfOtherOptions := true may give rise to spurious "other" option detections.

It is recommended that the novice user set ANUPQWarnOfOtherOptions to true in their gap.ini file (see Section Loading the ANUPQ Package).

Other Troubleshooting Strategies

There are some other strategies which may have helped us to see our error above. The function Pq recognises the option OutputLevel (see 6.2); if this option is set to at least 1, the pq program provides information on each class quotient as it is generated:

gap> ANUPQWarnOfOtherOptions := false;; # Set back to normal
gap> F := FreeGroup( "a", "b" );;
gap> Pq( F : Prime := 2, Classbound := 1, OutputLevel := 1 ); 
#I  Lower exponent-2 central series for [grp]
#I  Group: [grp] to lower exponent-2 central class 1 has order 2^2
#I  Group: [grp] to lower exponent-2 central class 2 has order 2^5
#I  Group: [grp] to lower exponent-2 central class 3 has order 2^10
#I  Group: [grp] to lower exponent-2 central class 4 has order 2^18
#I  Group: [grp] to lower exponent-2 central class 5 has order 2^32
#I  Group: [grp] to lower exponent-2 central class 6 has order 2^55
#I  Group: [grp] to lower exponent-2 central class 7 has order 2^96
#I  Group: [grp] to lower exponent-2 central class 8 has order 2^167
#I  Group: [grp] to lower exponent-2 central class 9 has order 2^294
#I  Group: [grp] to lower exponent-2 central class 10 has order 2^520
#I  Group: [grp] to lower exponent-2 central class 11 has order 2^932
#I  Group: [grp] to lower exponent-2 central class 12 has order 2^1679
[... output truncated ...]

After seeing the information for the class 2 quotient we may have got the idea that the Classbound option was not recognised and may have realised that this was due to a mis-spelling. The above will ordinarily cause the available space to be exhausted, necessitating user-intervention by typing control-C and quit; (to escape the break loop); otherwise Pq terminates when the class reaches 63 (the default value of ClassBound).

If you have some familiarity with "keyword" command input to the pq binary, then setting the level of InfoANUPQ to 4 would also have indicated a problem:

gap> ResetOptionsStack(); # Necessary, if a break-loop was entered above
gap> SetInfoLevel(InfoANUPQ, 4);
gap> Pq( F : Prime := 2, Classbound := 1 );
#I  ToPQ> 7  #to (Main) p-Quotient Menu
#I  ToPQ> 1  #define group
#I  ToPQ> name [grp]
#I  ToPQ> prime 2
#I  ToPQ> class 63
#I  ToPQ> exponent 0
#I  ToPQ> output 0
#I  ToPQ> generators { a,b }
#I  ToPQ> relators   {  };
[... output truncated ...]

Here the line "#I ToPQ> class 63" indicates that a directive to set the classbound to 63 was sent to the pq program.

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/chapInd.txt000644 000766 000024 00000022100 14355420737 016011 0ustar00mhornstaff000000 000000 Index AllANUPQoptions 6.1-1 allowable subgroup 2.1-4 AllPqExamples 3.4-5 ANUPQ 1.1 ANUPQ_GAP_EXEC, environment variable 7. 7.1 7.2 ANUPQData 3.2-1 ANUPQDirectoryTemporary 3.2-2 ANUPQoptions 6.1-2 ANUPQWarnOfOtherOptions 3.6-1 automorphisms, of p-groups 4.2 5.3-3 B(5,4) A.3 banner 3.1 bug reports 1.3 capable 2.1-4 class 2.1-2 collection 2.1-1 compaction 2.3 confluent 2.1-1 confluent rewriting system 2.1-1 consistency conditions 2.1-1 consistent 2.1-1 definition, of generator 2.2-1 descendant 2.1-4 echelonised matrix 2.3 Engel identity 2.1-5 EpimorphismPqStandardPresentation 4.2-2 interactive 5.3-5 EpimorphismStandardPresentation 4.2-2 interactive 5.3-5 exponent check 2.2-3 exponent law 2.1-5 exponent-p central series 2.1-2 extended automorphism 2.1-4 GrepPqExamples 3.4-6 identical relation 2.1-5 immediate descendant 2.1-4 InfoANUPQ 3.3-1 interruption 5.2-3 IsCapable 3.5-1 IsIsomorphicPGroup 4.3-1 isomorphism testing 2.3 IsPqIsomorphicPGroup 4.3-1 IsPqProcessAlive 5.2-3 for default process 5.2-3 label of standard matrix 2.3 labelled pcp 2.2-1 law 2.1-5 menu item, of pq program 3.6 metabelian law 2.1-5 multiplicator rank 2.1-3 MultiplicatorRank 3.5-1 NuclearRank 3.5-1 nucleus 2.1-4 2.1-4 option, of pq program is a menu item 3.6 option AllDescendants 4.4-1 5.3-6 6.2 option BasicAlgorithm 4.4-1 5.3-6 6.2 option Bounds 6.2 option CapableDescendants 4.4-1 5.3-6 6.2 option ClassBound 4.1-1 4.2-1 4.4-1 5.3-1 5.3-4 5.3-6 5.8-2 6.2 option CustomiseOutput 4.4-1 5.3-6 6.2 option Exponent 4.1-1 4.2-1 4.4-1 5.3-1 5.3-4 5.3-6 6.2 option Filename 6.2 option GroupName 4.1-1 4.2-1 4.4-1 5.3-1 5.3-4 5.3-6 6.2 option Identities 4.1-1 5.3-1 6.2 example of usage 4.1-1 option Metabelian 4.1-1 4.2-1 4.4-1 5.3-1 5.3-4 5.3-6 6.2 option NumberOfSolubleAutomorphisms 6.2 option OrderBound 4.4-1 5.3-6 6.2 option OutputLevel 4.1-1 4.2-1 5.3-1 5.3-4 6.2 option PcgsAutomorphisms 5.8-2 6.2 option pQuotient 4.2-1 5.3-4 6.2 option PqWorkspace 4.1-1 4.2-1 4.4-1 6.2 option Prime 4.1-1 4.2-1 5.3-1 5.3-4 6.2 option PrintAutomorphisms 6.2 option PrintPermutations 6.2 option QueueFactor 5.6-4 6.2 option RankInitialSegmentSubgroups 4.4-1 5.3-6 6.2 option RedoPcp 5.3-1 6.2 option RelativeOrders 6.2 option Relators 4.1-1 4.4-1 5.3-1 5.3-6 6.2 example of usage 4.1-1 option SetupFile 4.1-1 4.2-1 4.4-1 6.2 option SpaceEfficient 4.4-1 5.3-6 6.2 option StandardPresentationFile 4.2-1 5.3-4 5.8-2 6.2 option StepSize 4.4-1 5.3-6 6.2 option SubList 4.4-1 5.3-6 6.2 option TreeDepth 6.2 orbits 2.3 p-class 2.1-2 p-cover 2.1-3 p-covering group 2.1-3 p-group generation 2.3 p-multiplicator 2.1-3 p-multiplicator rank 2.1-3 pc generators 2.1-1 pc presentation 2.1-1 pcp 2.1-1 permutations 2.1-4 power-commutator presentation 2.1-1 Pq 4.1-1 interactive 5.3-1 interactive, for default process 5.3-1 PqAddTails 5.7-7 for default process 5.7-7 PqAPGDegree 5.10-1 for default process 5.10-1 PqAPGOrbitRepresentatives 5.10-4 for default process 5.10-4 PqAPGOrbits 5.10-3 for default process 5.10-3 PqAPGPermutations 5.10-2 for default process 5.10-2 PqAPGSingleStage 5.10-5 for default process 5.10-5 PqApplyAutomorphisms 5.7-22 for default process 5.7-22 PqCollect 5.7-1 for default process 5.7-1 PqCollectDefiningRelations 5.7-9 for default process 5.7-9 PqCollectWordInDefiningGenerators 5.7-10 for default process 5.7-10 PqCommutator 5.7-3 for default process 5.7-3 PqCommutatorDefiningGenerators 5.7-11 for default process 5.7-11 PqCompact 5.7-18 for default process 5.7-18 PqComputePCover 5.6-5 for default process 5.6-5 PqComputeTails 5.7-6 for default process 5.7-6 PqCurrentGroup 5.5-6 for default process 5.5-6 PqDescendants 4.4-1 interactive 5.3-6 interactive, for default process 5.3-6 PqDescendantsTreeCoclassOne A.4-1 for default process A.4-1 PqDisplayAutomorphisms 5.7-24 for default process 5.7-24 PqDisplayPcPresentation 5.5-7 for default process 5.5-7 PqDisplayStructure 5.7-23 for default process 5.7-23 PqDoConsistencyCheck 5.7-17 for default process 5.7-17 PqDoConsistencyChecks 5.7-8 for default process 5.7-8 PqDoExponentChecks 5.7-12 for default process 5.7-12 PqEchelonise 5.7-19 for default process 5.7-19 PqEliminateRedundantGenerators 5.7-13 for default process 5.7-13 PqEpimorphism 4.1-2 interactive 5.3-2 interactive, for default process 5.3-2 PqEvaluateIdentities 5.5-9 for default process 5.5-9 PqExample 3.4-4 no arguments 3.4-4 with filename 3.4-4 PqExtendAutomorphisms 5.7-21 for default process 5.7-21 PqFactoredOrder 5.5-2 for default process 5.5-2 PqGAPRelators 3.4-2 PqJacobi 5.7-17 for default process 5.7-17 PqLeftNormComm 3.4-1 PqList 4.4-3 PqNextClass 5.6-4 for default process 5.6-4 PqNrPcGenerators 5.5-1 for default process 5.5-1 PqOrder 5.5-3 for default process 5.5-3 PqParseWord 3.4-3 PqPClass 5.5-4 for default process 5.5-4 PqPCover 4.1-3 interactive 5.3-3 interactive, for default process 5.3-3 PqPcPresentation 5.6-1 for default process 5.6-1 PqPGConstructDescendants 5.9-3 for default process 5.9-3 PqPGExtendAutomorphisms 5.9-2 for default process 5.9-2 PqPGRestoreDescendantFromFile 5.9-4 for default process 5.9-4 with class 5.9-4 with class, for default process 5.9-4 PqPGSetDescendantToPcp 5.9-4 for default process 5.9-4 with class 5.9-4 with class, for default process 5.9-4 PqPGSupplyAutomorphisms 5.9-1 for default process 5.9-1 PqProcessIndex 5.2-1 for default process 5.2-1 PqProcessIndices 5.2-2 PqQuit 5.1-2 for default process 5.1-2 PqQuitAll 5.1-3 PqRead 5.11-1 for default process 5.11-1 PqReadAll 5.11-2 for default process 5.11-2 PqReadUntil 5.11-3 for default process 5.11-3 with modify map 5.11-3 with modify map, for default process 5.11-3 PqRestorePcPresentation 5.6-3 for default process 5.6-3 PqRevertToPreviousClass 5.7-14 for default process 5.7-14 PqSavePcPresentation 5.6-2 for default process 5.6-2 PqSetMaximalOccurrences 5.7-15 for default process 5.7-15 PqSetMetabelian 5.7-16 for default process 5.7-16 PqSetOutputLevel 5.5-8 for default process 5.5-8 PqSetPQuotientToGroup 5.3-7 for default process 5.3-7 PqSetupTablesForNextClass 5.7-4 for default process 5.7-4 PqSolveEquation 5.7-2 for default process 5.7-2 PqSPCompareTwoFilePresentations 5.8-4 for default process 5.8-4 PqSPComputePcpAndPCover 5.8-1 for default process 5.8-1 PqSPIsomorphism 5.8-5 for default process 5.8-5 PqSPSavePresentation 5.8-3 for default process 5.8-3 PqSPStandardPresentation 5.8-2 for default process 5.8-2 PqStandardPresentation 4.2-1 interactive 5.3-4 PqStart 5.1-1 with group 5.1-1 with group and workspace size 5.1-1 with workspace size 5.1-1 PqSupplementInnerAutomorphisms 4.4-2 PqSupplyAutomorphisms 5.7-20 for default process 5.7-20 PqTails 5.7-5 for default process 5.7-5 PqWeight 5.5-5 for default process 5.5-5 PqWrite 5.11-4 for default process 5.11-4 PqWritePcPresentation 5.7-25 for default process 5.7-25 SavePqList 4.4-4 standard presentation 2.3 StandardPresentation 4.2-1 interactive 5.3-4 tails 2.2-1 terminal 2.1-4 ToPQLog 3.4-7 troubleshooting tips 3.6 weight function 2.1-2 weighted pcp 2.1-2 ------------------------------------------------------- anupq-3.3.0/doc/chap4.html000644 000766 000024 00000162431 14355420744 015601 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 4: Non-interactive ANUPQ functions
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

4 Non-interactive ANUPQ functions

Here we describe all the non-interactive functions of the ANUPQ package; i.e. "one-shot" functions that invoke the pq program in such a way that once GAP has got what it needs, the pq program is allowed to exit. It is expected that most of the time users will only need these functions. The functions interface with three of the four algorithms (see Chapter Introduction) provided by the ANU pq C program, and are mainly grouped according to the algorithm of the pq program they relate to.

In Section Computing p-Quotients, we describe the functions that give access to the p-quotient algorithm.

Section Computing Standard Presentations describe functions that give access to the standard presentation algorithm.

Section Testing p-Groups for Isomorphism describe functions that implement an isomorphism test for p-groups using the standard presentation algorithm.

In Section Computing Descendants of a p-Group, we describe functions that give access to the p-group generation algorithm.

To use any of the functions one must have at some stage previously typed:

gap> LoadPackage("anupq");

(the response of which we have omitted; see Loading the ANUPQ Package).

It is strongly recommended that the user try the examples provided. To save typing there is a PqExample equivalent for each manual example. We also suggest that to start with you may find the examples more instructive if you set the InfoANUPQ level to 2 (see InfoANUPQ (3.3-1)).

4.1 Computing p-Quotients

4.1-1 Pq
‣ Pq( F: options )( function )

returns for the fp or pc group F, the p-quotient of F specified by options, as a pc group. Following the colon, options is a selection of the options from the following list, separated by commas like record components (see Section Reference: Function Call With Options in the GAP Reference Manual). As a minimum the user must supply a value for the Prime option. Below we list the options recognised by Pq (see Chapter ANUPQ Options for detailed descriptions).

  • Prime := p

  • ClassBound := n

  • Exponent := n

  • Relators := rels

  • Metabelian

  • Identities := funcs

  • GroupName := name

  • OutputLevel := n

  • SetupFile := filename

  • PqWorkspace := workspace

Notes: Pq may also be called with no arguments or one integer argument, in which case it is being used interactively (see Pq (5.3-1)); the same options may be used, except that SetupFile and PqWorkspace are ignored by the interactive Pq function.

See Section Attributes and a Property for fp and pc p-groups for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the group returned by Pq.

See also PqEpimorphism (PqEpimorphism (4.1-2)).

We now give a few examples of the use of Pq. Except for the addition of a few comments and the non-suppression of output (by not using duplicated semicolons) the next 3 examples may be run by typing: PqExample( "Pq" ); (see PqExample (3.4-4)).

gap> LoadPackage("anupq");; # does nothing if ANUPQ is already loaded
gap> # First we get a p-quotient of a free group of rank 2
gap> F := FreeGroup("a", "b");; a := F.1;; b := F.2;;
gap> Pq( F : Prime := 2, ClassBound := 3 ); 
<pc group of size 1024 with 10 generators>
gap> # Now let us get a p-quotient of an fp group
gap> G := F / [a^4, b^4];
<fp group on the generators [ a, b ]>
gap> Pq( G : Prime := 2, ClassBound := 3 ); 
<pc group of size 256 with 8 generators>
gap> # Now let's get a different p-quotient of the same group
gap> Pq( G : Prime := 2, ClassBound := 3, Exponent := 4 ); 
<pc group of size 128 with 7 generators>
gap> # Now we'll get a p-quotient of another fp group
gap> # which we will redo using the `Relators' option
gap> R := [ a^25, Comm(Comm(b, a), a), b^5 ];
[ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ]
gap> H := F / R;
<fp group on the generators [ a, b ]>
gap> Pq( H : Prime := 5, ClassBound := 5, Metabelian );
<pc group of size 78125 with 7 generators>

Now we redo the last example to show how one may use the Relators option. Observe that Comm(Comm(b, a), a) is a left normed commutator which must be written in square bracket notation for the pq program and embedded in a pair of double quotes. The function PqGAPRelators (see PqGAPRelators (3.4-2)) can be used to translate a list of strings prepared for the Relators option into GAP format. Below we use it. Observe that the value of R is the same as before.

gap> F := FreeGroup("a", "b");;
gap> # `F' was defined for `Relators'. We use the same strings that GAP uses
gap> # for printing the free group generators. It is *not* necessary to
gap> # predefine: a := F.1; etc. (as it was above).
gap> rels := [ "a^25", "[b, a, a]", "b^5" ];
[ "a^25", "[b, a, a]", "b^5" ]
gap> R := PqGAPRelators(F, rels);
[ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ]
gap> H := F / R;
<fp group on the generators [ a, b ]>
gap> Pq( H : Prime := 5, ClassBound := 5, Metabelian, 
>            Relators := rels );
<pc group of size 78125 with 7 generators>

In fact, above we could have just passed F (rather than H), i.e. we could have done:

gap> F := FreeGroup("a", "b");;
gap> rels := [ "a^25", "[b, a, a]", "b^5" ];
[ "a^25", "[b, a, a]", "b^5" ]
gap> Pq( F : Prime := 5, ClassBound := 5, Metabelian, 
>            Relators := rels );
<pc group of size 78125 with 7 generators>

The non-interactive Pq function also allows the options to be passed in two other ways; these alternatives have been included for those familiar with the GAP 3 version of the ANUPQ package; the preferred method of passing options is the one already described. Firstly, they may be passed in a record as a second argument; note that any boolean options must be set explicitly e.g.

gap> Pq( H, rec( Prime := 5, ClassBound := 5, Metabelian := true ) );
<pc group of size 78125 with 7 generators>

It is also possible to pass them as extra arguments, where each option name appears as a string followed immediately by its value (if not a boolean option) e.g.

gap> Pq( H, "Prime", 5, "ClassBound", 5, "Metabelian" );
<pc group of size 78125 with 7 generators>

The preceding two examples can be run from GAP via PqExample( "Pq-ni" ); (see PqExample (3.4-4)).

This method of passing options permits abbreviation; the only restriction is that the abbreviation must be unique. So "Pr" may be used for "Prime", "Class" or even just "C" for "ClassBound", etc.

The following example illustrates the use of the option Identities. We compute the largest finite Burnside group of exponent 5 that also satisfies the 3-Engel identity. Each identity is defined by a function whose arguments correspond to the variables of the identity. The return value of each of those functions is the identity evaluated on the arguments of the function.

gap> F := FreeGroup(2);
<free group on the generators [ f1, f2 ]>
gap> Burnside5 := x->x^5;
function( x ) ... end
gap> Engel3 := function( x,y ) return PqLeftNormComm( [x,y,y,y] ); end;
function( x, y ) ... end
gap> Pq( F : Prime := 5, Identities := [ Burnside5, Engel3 ] );
#I  Class 1 with 2 generators.
#I  Class 2 with 3 generators.
#I  Class 3 with 5 generators.
#I  Class 3 with 5 generators.
<pc group of size 3125 with 5 generators>

The above example can be run from GAP via PqExample( "B5-5-Engel3-Id" ); (see PqExample (3.4-4)).

4.1-2 PqEpimorphism
‣ PqEpimorphism( F: options )( function )

returns for the fp or pc group F an epimorphism from F onto the p-quotient of F specified by options; the possible options options and required option ("Prime") are as for Pq (see Pq (4.1-1)). PqEpimorphism only differs from Pq in what it outputs; everything about what must/may be passed as input to PqEpimorphism is the same as for Pq. The same alternative methods of passing options to the non-interactive Pq function are available to the non-interactive version of PqEpimorphism.

Notes: PqEpimorphism may also be called with no arguments or one integer argument, in which case it is being used interactively (see PqEpimorphism (5.3-2)), and the options SetupFile and PqWorkspace are ignored by the interactive PqEpimorphism function.

See Section Attributes and a Property for fp and pc p-groups for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the image group of the epimorphism returned by PqEpimorphism.

gap> F := FreeGroup (2, "F");
<free group on the generators [ F1, F2 ]>
gap> phi := PqEpimorphism( F : Prime := 5, ClassBound := 2 );
[ F1, F2 ] -> [ f1, f2 ]
gap> Image( phi );
<pc group of size 3125 with 5 generators>

Typing: PqExample( "PqEpimorphism" ); runs the above example in GAP (see PqExample (3.4-4)).

4.1-3 PqPCover
‣ PqPCover( F: options )( function )

returns for the fp or pc group F, the p-covering group of the p-quotient of F specified by options, as a pc group, i.e. the p-covering group of the p-quotient Pq( F : options ). Thus the options that PqPCover accepts are exactly those expected for Pq (and hence as a minimum the user must supply a value for the Prime option; see Pq (4.1-1) for more details), except in the following special case.

If F is already a p-group, in the sense that IsPGroup(F) is true, then

Prime

defaults to PrimePGroup(F), if not supplied and HasPrimePGroup(F) = true; and

ClassBound

defaults to PClassPGroup(F) if HasPClassPGroup(F) = true if not supplied, or to the usual default of 63, otherwise.

The same alternative methods of passing options to the non-interactive Pq function are available to the non-interactive version of PqPCover.

We now give a few examples of the use of PqPCover. These examples are just a subset of the ones we gave for Pq (see Pq (4.1-1)), except that in each instance the command Pq has been replaced with PqPCover. Essentially the same examples may be run by typing: PqExample( "PqPCover" ); (see PqExample (3.4-4)).

gap> F := FreeGroup("a", "b");; a := F.1;; b := F.2;;
gap> PqPCover( F : Prime := 2, ClassBound := 3 );
<pc group of size 262144 with 18 generators>
gap> 
gap> # Now let's get a p-cover of a p-quotient of an fp group
gap> G := F / [a^4, b^4];
<fp group on the generators [ a, b ]>
gap> PqPCover( G : Prime := 2, ClassBound := 3 );
<pc group of size 16384 with 14 generators>
gap> 
gap> # Now let's get a p-cover of a different p-quotient of the same group
gap> PqPCover( G : Prime := 2, ClassBound := 3, Exponent := 4 );
<pc group of size 8192 with 13 generators>
gap> 
gap> # Now we'll get a p-cover of a p-quotient of another fp group
gap> # which we will redo using the `Relators' option
gap> R := [ a^25, Comm(Comm(b, a), a), b^5 ];
[ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ]
gap> H := F / R;
<fp group on the generators [ a, b ]>
gap> PqPCover( H : Prime := 5, ClassBound := 5, Metabelian );
<pc group of size 48828125 with 11 generators>
gap> 
gap> # Now we redo the previous example using the `Relators' option
gap> F := FreeGroup("a", "b");;
gap> rels := [ "a^25", "[b, a, a]", "b^5" ];
[ "a^25", "[b, a, a]", "b^5" ]
gap> PqPCover( F : Prime := 5, ClassBound := 5, Metabelian, 
>                  Relators := rels );
<pc group of size 48828125 with 11 generators>

4.2 Computing Standard Presentations

4.2-1 PqStandardPresentation
‣ PqStandardPresentation( F: options )( function )
‣ StandardPresentation( F: options )( method )

return the p-quotient specified by options of the fp or pc p-group F, as an fp group which has a standard presentation. Here options is a selection of the options from the following list (see Chapter ANUPQ Options for detailed descriptions). Section Hints and Warnings regarding the use of Options gives some important hints and warnings regarding option usage, and Section Reference: Function Call With Options in the GAP Reference Manual describes their "record"-like syntax.

  • Prime := p

  • pQuotient := Q

  • ClassBound := n

  • Exponent := n

  • Metabelian

  • GroupName := name

  • OutputLevel := n

  • StandardPresentationFile := filename

  • SetupFile := filename

  • PqWorkspace := workspace

Unless F is a pc p-group, the user must supply either the option Prime or the option pQuotient (if both Prime and pQuotient are supplied, the prime p is determined by applying PrimePGroup (see PrimePGroup (Reference: PrimePGroup) in the Reference Manual) to the value of pQuotient).

The options for PqStandardPresentation may also be passed in the two other alternative ways described for Pq (see Pq (4.1-1)). StandardPresentation does not provide these alternative ways of passing options.

Notes: In contrast to the function Pq (see Pq (4.1-1)) which returns a pc group, PqStandardPresentation or StandardPresentation returns an fp group. This is because the output is mainly used for isomorphism testing for which an fp group is enough. However, the presentation is a polycyclic presentation and if you need to do any further computation with this group (e.g. to find the order) you can use the function PcGroupFpGroup (see PcGroupFpGroup (Reference: PcGroupFpGroup) in the GAP Reference Manual) to form a pc group.

If the user does not supply a p-quotient Q via the pQuotient option and the prime p is either supplied or F is a pc p-group, then a p-quotient Q is computed. If the user does supply a p-quotient Q via the pQuotient option, the package AutPGrp is called to compute the automorphism group of Q; an error will occur that asks the user to install the package AutPGrp if the automorphism group cannot be computed.

The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for the group returned by PqStandardPresentation or StandardPresentation (see Section Attributes and a Property for fp and pc p-groups).

We illustrate the method with the following examples.

gap> F := FreeGroup( "a", "b" );; a := F.1;; b := F.2;;
gap> G := F / [a^25, Comm(Comm(b, a), a), b^5];
<fp group on the generators [ a, b ]>
gap> S := StandardPresentation( G : Prime := 5, ClassBound := 10 );
<fp group on the generators [ f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, 
  f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26 ]>
gap> IsPcGroup( S );
false
gap> # if we need to compute with S we should convert it to a pc group
gap> Spc := PcGroupFpGroup( S );
<pc group of size 1490116119384765625 with 26 generators>
gap> 
gap> H := F / [ a^625, Comm(Comm(Comm(Comm(b, a), a), a), a)/Comm(b, a)^5,
>               Comm(Comm(b, a), b), b^625 ];;
gap> StandardPresentation( H : Prime := 5, ClassBound := 15, Metabelian );
<fp group on the generators [ f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, 
  f12, f13, f14, f15, f16, f17, f18, f19, f20 ]>
gap> 
gap> F4 := FreeGroup( "a", "b", "c", "d" );;
gap> a := F4.1;; b := F4.2;; c := F4.3;; d := F4.4;;
gap> G4 := F4 / [ b^4, b^2 / Comm(Comm (b, a), a), d^16,
>                 a^16 / (c * d), b^8 / (d * c^4) ];
<fp group on the generators [ a, b, c, d ]>
gap> K := Pq( G4 : Prime := 2, ClassBound := 1 );
<pc group of size 4 with 2 generators>
gap> StandardPresentation( G4 : pQuotient := K, ClassBound := 14 );
<fp group with 53 generators>

Typing: PqExample( "StandardPresentation" ); runs the above example in GAP (see PqExample (3.4-4)).

4.2-2 EpimorphismPqStandardPresentation
‣ EpimorphismPqStandardPresentation( F: options )( function )
‣ EpimorphismStandardPresentation( F: options )( method )

Each of the above functions accepts the same arguments and options as the function StandardPresentation (see StandardPresentation (4.2-1)) and returns an epimorphism from the fp or pc group F onto the finitely presented group given by a standard presentation, i.e. if S is the standard presentation computed for the p-quotient of F by StandardPresentation then EpimorphismStandardPresentation returns the epimorphism from F to the group with presentation S.

Note: The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for the image group of the epimorphism returned by EpimorphismPqStandardPresentation or EpimorphismStandardPresentation (see Section Attributes and a Property for fp and pc p-groups).

We illustrate the function with the following example.

gap> F := FreeGroup(6, "F");
<free group on the generators [ F1, F2, F3, F4, F5, F6 ]>
gap> # For printing GAP uses the symbols F1, ... for the generators of F
gap> x := F.1;; y := F.2;; z := F.3;; w := F.4;; a := F.5;; b := F.6;;
gap> R := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b,
>          Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ];;
gap> Q := F / R;
<fp group on the generators [ F1, F2, F3, F4, F5, F6 ]>
gap> # For printing GAP also uses the symbols F1, ... for the generators of Q
gap> # (the same as used for F) ... but the gen'rs of Q and F are different:
gap> GeneratorsOfGroup(F) = GeneratorsOfGroup(Q);
false
gap> G := Pq( Q : Prime := 3, ClassBound := 3 );
<pc group of size 729 with 6 generators>
gap> phi := EpimorphismStandardPresentation( Q : Prime := 3,
>                                                ClassBound := 3 );
[ F1, F2, F3, F4, F5, F6 ] -> [ f1*f2^2*f3*f4^2*f5^2, f1*f2*f3*f5, f3^2, 
  f4*f6^2, f5, f6 ]
gap> Source(phi); # This is the group Q (GAP uses F1, ... for gen'r symbols)
<fp group of size infinity on the generators [ F1, F2, F3, F4, F5, F6 ]>
gap> Range(phi);  # This is the group G (GAP uses f1, ... for gen'r symbols)
<fp group on the generators [ f1, f2, f3, f4, f5, f6 ]>
gap> AssignGeneratorVariables(G);
#I  Assigned the global variables [ f1, f2, f3, f4, f5, f6 ]
gap> # Just to see that the images of [F1, ..., F6] do generate G
gap> Group([ f1*f2^2*f3, f1*f2*f3*f4*f5^2*f6^2, f3^2, f4, f5, f6 ]) = G;
true
gap> Size( Image(phi) );
729

Typing: PqExample( "EpimorphismStandardPresentation" ); runs the above example in GAP (see PqExample (3.4-4)). Note that AssignGeneratorVariables (see AssignGeneratorVariables (Reference: AssignGeneratorVariables)) has only been available since GAP 4.3.

4.3 Testing p-Groups for Isomorphism

4.3-1 IsPqIsomorphicPGroup
‣ IsPqIsomorphicPGroup( G, H )( function )
‣ IsIsomorphicPGroup( G, H )( method )

each return true if G is isomorphic to H, where both G and H must be pc groups of prime power order. These functions compute and compare in GAP the fp groups given by standard presentations for G and H (see StandardPresentation (4.2-1)).

gap> G := Group( (1,2,3,4), (1,3) );
Group([ (1,2,3,4), (1,3) ])
gap> P1 := Image( IsomorphismPcGroup( G ) );
Group([ f1, f2, f3 ])
gap> P2 := SmallGroup( 8, 5 );
<pc group of size 8 with 3 generators>
gap> IsIsomorphicPGroup( P1, P2 );
false
gap> P3 := SmallGroup( 8, 4 );
<pc group of size 8 with 3 generators>
gap> IsIsomorphicPGroup( P1, P3 );
false
gap> P4 := SmallGroup( 8, 3 );
<pc group of size 8 with 3 generators>
gap> IsIsomorphicPGroup( P1, P4 );
true

Typing: PqExample( "IsIsomorphicPGroup" ); runs the above example in GAP (see PqExample (3.4-4)).

4.4 Computing Descendants of a p-Group

4.4-1 PqDescendants
‣ PqDescendants( G: options )( function )

returns, for the pc group G which must be of prime power order with a confluent pc presentation (see IsConfluent (Reference: IsConfluent for pc groups) in the GAP Reference Manual), a list of descendants (pc groups) of G. Following the colon options a selection of the options listed below should be given, separated by commas like record components (see Section Reference: Function Call With Options in the GAP Reference Manual). See Chapter ANUPQ Options for detailed descriptions of the options.

The automorphism group of each descendant D is also computed via a call to the AutomorphismGroupPGroup function of the AutPGrp package.

  • ClassBound := n

  • Relators := rels

  • OrderBound := n

  • StepSize := n, StepSize := list

  • RankInitialSegmentSubgroups := n

  • SpaceEfficient

  • CapableDescendants

  • AllDescendants := false

  • Exponent := n

  • Metabelian

  • GroupName := name

  • SubList := sub

  • BasicAlgorithm

  • CustomiseOutput := rec

  • SetupFile := filename

  • PqWorkspace := workspace

Notes: The function PqDescendants uses the automorphism group of G which it computes via the package AutPGrp. If this package is not installed an error may be raised. If the automorphism group of G is insoluble, the pq program will call GAP together with the AutPGrp package for certain orbit-stabilizer calculations. (So, in any case, one should ensure the AutPGrp package is installed.)

The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for each group of the list returned by PqDescendants (see Section Attributes and a Property for fp and pc p-groups).

The options options for PqDescendants may be passed in an alternative manner to that already described, namely you can pass PqDescendants a record as an argument, which contains as entries some (or all) of the above mentioned. Those parameters which do not occur in the record are set to their default values.

Note that you cannot set both OrderBound and StepSize.

In the first example we compute all descendants of the Klein four group which have exponent-2 class at most 5 and order at most 2^6.

gap> F := FreeGroup( "a", "b" );; a := F.1;; b := F.2;;
gap> G := PcGroupFpGroup( F / [ a^2, b^2, Comm(b, a) ] );
<pc group of size 4 with 2 generators>
gap> des := PqDescendants( G : OrderBound := 6, ClassBound := 5 );;
gap> Length(des);
83
gap> List(des, Size); 
[ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, 
  32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, 
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
  64, 64, 64, 64, 64, 64, 64 ]
gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 );
[ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 
  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
  4, 4, 4, 5, 5, 5, 5, 5 ]

Below, we compute all capable descendants of order 27 of the elementary abelian group of order 9.

gap> F := FreeGroup( 2, "g" );
<free group on the generators [ g1, g2 ]>
gap> G := PcGroupFpGroup( F / [ F.1^3, F.2^3, Comm(F.1, F.2) ] );
<pc group of size 9 with 2 generators>
gap> des := PqDescendants( G : OrderBound := 3, ClassBound := 2,
>                              CapableDescendants );
[ <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators> ]
gap> List(des, d -> Length( PCentralSeries( d, 3 ) ) - 1 );
[ 2, 2 ]
gap> # For comparison let us now compute all descendants
gap> PqDescendants( G : OrderBound := 3, ClassBound := 2);
[ <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators> ]

In the third example, we compute all capable descendants of the elementary abelian group of order 5^2 which have exponent-5 class at most 3, exponent 5, and are metabelian.

gap> F := FreeGroup( 2, "g" );;
gap> G := PcGroupFpGroup( F / [ F.1^5, F.2^5, Comm(F.2, F.1) ] );
<pc group of size 25 with 2 generators>
gap> des := PqDescendants( G : Metabelian, ClassBound := 3,
>                              Exponent := 5, CapableDescendants );
[ <pc group of size 125 with 3 generators>, 
  <pc group of size 625 with 4 generators>, 
  <pc group of size 3125 with 5 generators> ]
gap> List(des, d -> Length( PCentralSeries( d, 5 ) ) - 1 );
[ 2, 3, 3 ]
gap> List(des, d -> Length( DerivedSeries( d ) ) );
[ 3, 3, 3 ]
gap> List(des, d -> Maximum( List( d, Order ) ) );
[ 5, 5, 5 ]

The examples "PqDescendants-1", "PqDescendants-2" and "PqDescendants-3" (in order) are essentially the same as the above three examples (see PqExample (3.4-4)).

4.4-2 PqSupplementInnerAutomorphisms
‣ PqSupplementInnerAutomorphisms( D )( function )

returns a generating set for a supplement to the inner automorphisms of D, in the form of a record with fields agAutos, agOrder and glAutos, as provided by the pq program. One should be very careful in using these automorphisms for a descendant calculation.

Note: In principle there must be a way to use those automorphisms in order to compute descendants but there does not seem to be a way to hand back these automorphisms properly to the pq program.

gap> Q := Pq( FreeGroup(2) : Prime := 3, ClassBound := 1 );
<pc group of size 9 with 2 generators>
gap> des := PqDescendants( Q : StepSize := 1 );
[ <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators> ]
gap> S := PqSupplementInnerAutomorphisms( des[3] );
rec( agAutos := [  ], agOrder := [ 3, 2, 2, 2 ], 
  glAutos := [ Pcgs([ f1, f2, f3 ]) -> [ f1*f2^2, f2, f3 ], 
      Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ], 
      Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ] ] )
gap> A := AutomorphismGroupPGroup( des[3] );
rec( 
  agAutos := [ Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ], 
      Pcgs([ f1, f2, f3 ]) -> [ f1*f2^2, f2, f3 ], 
      Pcgs([ f1, f2, f3 ]) -> [ f1*f3, f2, f3 ], 
      Pcgs([ f1, f2, f3 ]) -> [ f1, f2*f3, f3 ] ], agOrder := [ 2, 3, 3, 3 ], 
  glAutos := [  ], glOper := [  ], glOrder := 1, 
  group := <pc group of size 27 with 3 generators>, 
  one := IdentityMapping( <pc group of size 27 with 3 generators> ), 
  size := 54 )

Typing: PqExample( "PqSupplementInnerAutomorphisms" ); runs the above example in GAP (see PqExample (3.4-4)).

Note that by also including PqStart as a second argument to PqExample one can see how it is possible, with the aid of PqSetPQuotientToGroup (see PqSetPQuotientToGroup (5.3-7)), to do the equivalent computations with the interactive versions of Pq and PqDescendants and a single pq process (recall pq is the name of the external C program).

4.4-3 PqList
‣ PqList( filename: [SubList := sub] )( function )

reads a file with name filename (a string) and returns the list L of pc groups (or with option SubList a sublist of L or a single pc group in L) defined in that file. If the option SubList is passed and has the value sub, then it has the same meaning as for PqDescendants, i.e. if sub is an integer then PqList returns L[sub]; otherwise, if sub is a list of integers PqList returns Sublist(L, sub ).

Both PqList and SavePqList (see SavePqList (4.4-4)) can be used to save and restore a list of descendants (see PqDescendants (4.4-1)).

4.4-4 SavePqList
‣ SavePqList( filename, list )( function )

writes a list of descendants list to a file with name filename (a string).

SavePqList and PqList (see PqList (4.4-3)) can be used to save and restore, respectively, the results of PqDescendants (see PqDescendants (4.4-1)).

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/nocolorprompt.css000644 000766 000024 00000000313 14355420744 017331 0ustar00mhornstaff000000 000000 /* colors for ColorPrompt like examples */ span.GAPprompt { color: #000000; font-weight: normal; } span.GAPbrkprompt { color: #000000; font-weight: normal; } span.GAPinput { color: #000000; } anupq-3.3.0/doc/lefttoc.css000644 000766 000024 00000000474 14355420744 016064 0ustar00mhornstaff000000 000000 /* leftmenu.css Frank Lübeck */ /* Change default CSS to show section menu on left side */ body { padding-left: 28%; } body.chap0 { padding-left: 2%; } div.ChapSects div.ContSect:hover div.ContSSBlock { left: 15%; } div.ChapSects { left: 1%; width: 25%; } anupq-3.3.0/doc/intro.xml000644 000766 000024 00000015745 14355420571 015574 0ustar00mhornstaff000000 000000 Introduction
Overview ANUPQ The &GAP; 4 package &ANUPQ; provides an interface to the ANU pq C program written by Eamonn O'Brien, making the functionality of the C program available to &GAP;. Henceforth, we shall refer to the &ANUPQ; package when referring to the &GAP; interface, and to the ANU pq program or just pq when referring to that C program.

The pq program consists of implementations of the following algorithms:

A p-quotient algorithm to compute pc-presentations for p-factor groups of finitely presented groups.

A p-group generation algorithm to generate pc presentations of groups of prime power order.

A standard presentation algorithm used to compute a canonical pc-presentation of a p-group.

An algorithm which can be used to compute the automorphism group of a p-group.

This part of the pq program is not accessible through the &ANUPQ; package. Instead, users are advised to consider the &GAP; 4 package &AutPGrp; by Bettina Eick and Eamonn O'Brien, which implements a better algorithm in &GAP; for the computation of automorphism groups of p-groups. The current version of the &ANUPQ; package requires &GAP; 4.5, and version 1.5 of the &AutPGrp; package. All code that made the package compatible with earlier versions of &GAP; has been removed. If you must use an older &GAP; version and cannot upgrade, then you may try using an older &ANUPQ; version. However, you should not use versions of the &ANUPQ; package older than 2.2, since they are known to have bugs.

How to read this manual It is not expected that readers of this manual will read it in a linear fashion from cover to cover; some sections contain material that is far too technical to be absorbed on a first reading.

Firstly, installers of the &ANUPQ; package will need to read Chapter , if they have not already gleaned these details from the README file.

Once the &ANUPQ; package is installed, users of the &ANUPQ; package will benefit most by first reading Chapter , which gives a brief description of the background and terminology used (this chapter also cites a number of references for further reading), and the introduction of Chapter  (skip the remainder of the chapter on a first reading).

Then the user/reader should pursue Chapter  in detail, delving into Chapter  as necessary for the options of the functions that are described. The user will become best acquainted with the &ANUPQ; package by trying the examples. This chapter describes the non-interactive functions of the &ANUPQ; package, i.e. one-shot functions that invoke the pq program in such a way that once &GAP; has got what it needs, the pq is allowed to exit. It is expected that most of the time, users will only need these functions.

Advanced users will want to explore Chapter  which describes all the interactive functions of the &ANUPQ; package; these are functions that extract information via a dialogue with a running pq process. Occasionally, a user needs the next step; the functions provided in this chapter make use of data from previous steps retained by the pq program, thus allowing the user to interact with the pq program like one can when one uses the pq program as a stand-alone (see guide.dvi in the standalone-doc directory).

After having read Chapters  and , cross-references will have taken the reader into Chapter ; by this stage, the reader need only read the introduction of Chapter .

After the reader has developed some facility with the &ANUPQ; package, she should explore the examples described in Appendix .

If you run into trouble using the &ANUPQ; functions, some troubleshooting hints are given in Section . If the troubleshooting hints don't help, Section  below, gives contact details for the authors of the components of the &ANUPQ; package.

Authors and Acknowledgements The C implementation of the ANU pq standalone was developed by Eamonn O'Brien.

An interactive interface using iostreams was developed with the assistance of Werner Nickel by Greg Gamble.

The &GAP; 4 version of this package was adapted from the &GAP; 3 version by Werner Nickel.

A new co-maintainer, Max Horn, joined the team in November, 2011.

The authors would like to thank Joachim Neubüser for his careful proof-reading and advice, and for formulating Chapter .

We would also like to thank Bettina Eick who by her testing and provision of examples helped us to eliminate a number of bugs and who provided a number of valuable suggestions for extensions of the package beyond the &GAP; 3 capabilities.

bug reports If you find a bug, the last section of &ANUPQ;'s README describes the information we need and where to send us a bug report; please take the time to read this (i.e. help us to help you).

anupq-3.3.0/doc/chap2_mj.html000644 000766 000024 00000071232 14355420744 016263 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 2: Mathematical Background and Terminology
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

2 Mathematical Background and Terminology

In this chapter we will give a brief description of the mathematical notions used in the algorithms implemented in the ANU pq program that are made accessible from GAP through this package. For proofs and details we will point to relevant places in the published literature. Also we will try to give some explanation of terminology that may help to use the "low-level" interactive functions described in Section Low-level Interactive ANUPQ functions based on menu items of the pq program. However, users who intend to use these functions are strongly advised to acquire a thorough understanding of the algorithms from the quoted literature. There is little or no checking done in these functions and naive use may result in incorrect results.

2.1 Basic notions

2.1-1 pc Presentations and Consistency

For details, see e.g. [NNN98].

Every finite \(p\)-group \(G\) has a presentation of the form:

\[ \{a_1,\dots,a_n \mid a_i^p = v_{ii}, 1 \le i \le n, [a_k, a_j] = v_{jk}, 1 \le j < k \le n \}. \]

where \(v_{jk}\) is a word in the elements \(a_{k+1},\dots,a_n\) for \(1 \le j \leq k \le n\).

This is called a power-commutator presentation (or pc presentation or pcp) of \(G\), generators from such a presentation will be referred to as pc generators. In terms of such pc generators every element of \(G\) can be written in a "normal form" \(a_1^{e_1}\dots a_n^{e_n}\) with \(0 \le e_i < p\). Moreover any given product of the generators can be brought into such a normal form using the defining relations in the above presentation as rewrite rules. Any such process is called collection. For the discussion of various collection methods see [LGS90] and [VL90b].

Every \(p\)-group of order \(p^n\) has such a pcp on \(n\) generators and conversely every such presentation defines a \(p\)-group. However a \(p\)-group defined by a pcp on \(n\) generators can be of smaller order \(p^m\) with \(m<n\). A pcp on \(n\) generators that does in fact define a \(p\)-group of order \(p^n\) is called consistent in this manual, in line with most of the literature on the algorithms occurring here. A consistent pcp determines a confluent rewriting system (see IsConfluent (Reference: IsConfluent) of the GAP Reference Manual) for the group it defines and for this reason often (in particular in the GAP Reference Manual) such a pcp presentation is also called confluent.

Consistency of a pcp is tantamount to the fact that for any given word in the generators any two collections will yield the same normal form.

Consistency of a pcp can be checked by a finite set of consistency conditions, demanding that collection of the left hand side and of the right hand side of certain equations, starting with subproducts indicated by bracketing, will result in the same normal form. There are 3 types of such equations (that will be referred to in the manual):

\[ \begin{array}{rclrl} (a^n)a &=& a(a^n) &&{\rm (Type 1)} \\ (b^n)a &=& b^{(n-1)}(ba), b(a^n) = (ba)a^{(n-1)} &&{\rm (Type 2)} \\ c(ba) &=& (cb)a &&{\rm (Type 3)} \\ \end{array} \]

See [VL84] for a description of a sufficient set of consistency conditions in the context of the \(p\)-quotient algorithm.

2.1-2 Exponent-\(p\) Central Series and Weighted pc Presentations

For details, see [NNN98].

The (descending or lower) (exponent-)\(p\)-central series of an arbitrary group \(G\) is defined by

\[ P_0(G) := G, P_i(G) := [G, P_{i-1}(G)] P_{i-1}(G)^p. \]

For a \(p\)-group \(G\) this series terminates with the trivial group. \(G\) has \(p\)-class \(c\) if \(c\) is the smallest integer such that \(P_c(G)\) is the trivial group. In this manual, as well as in much of the literature about the pq- and related algorithms, the \(p\)-class is often referred to simply by class.

Let the \(p\)-group \(G\) have a consistent pcp as above. Then the subgroups

\[ \langle1\rangle < {\langle}a_n\rangle < {\langle}a_n, a_{n-1}\rangle < \dots < {\langle}a_n,\dots,a_i\rangle < \dots < G \]

form a central series of \(G\). If this refines the \(p\)-central series, we can define the weight function \(w\) for the pc generators by \(w(a_i) = k\), if \(a_i\) is contained in \(P_{k-1}(G)\) but not in \(P_k(G)\).

The pair of such a weight function and a pcp allowing it, is called a weighted pcp.

2.1-3 \(p\)-Cover, \(p\)-Multiplicator

For details, see [NNN98].

Let \(d\) be the minimal number of generators of the \(p\)-group \(G\) of \(p\)-class \(c\). Then \(G\) is isomorphic to a factor group \(F/R\) of a free group \(F\) of rank \(d\). We denote \([F, R] R^p\) by \(R^*\). It can be proved (see e.g. [O'B90]) that the isomorphism type of \(G^* := F/R^*\) depends only on \(G\). \(G^*\) is called the \(p\)-covering group or \(p\)-cover of \(G\), and \(R/R^*\) the \(p\)-multiplicator of \(G\). The \(p\)-multiplicator is, of course, an elementary abelian \(p\)-group; its minimal number of generators is called the (\(p\)-)multiplicator rank.

2.1-4 Descendants, Capable, Terminal, Nucleus

For details, see [New77] and [O'B90].

Let again \(G\) be a \(p\)-group of \(p\)-class \(c\) and \(d\) the minimal number of generators of \(G\). A \(p\)-group \(H\) is a descendant of \(G\) if the minimal number of generators of \(H\) is \(d\) and \(H/P_c(H)\) is isomorphic to \(G\). A descendant \(H\) of \(G\) is an immediate descendant if it has \(p\)-class \(c+1\). \(G\) is called capable if it has immediate descendants; otherwise it is terminal.

Let \(G^* = F/R^*\) again be the \(p\)-cover of \(G\). Then the group \(P_c(G^*)\) is called the nucleus of \(G\). Note that \(P_c(G^*)\) is contained in the \(p\)-multiplicator \(R/R^*\).

It is proved (e.g. in [O'B90]) that the immediate descendants of \(G\) are obtained as factor groups of the \(p\)-cover by (proper) supplements of the nucleus in the (elementary abelian) \(p\)-multiplicator. These are also called allowable.

It is further proved there that every automorphism \(\alpha\) of \(F/R\) extends to an automorphism \(\alpha^*\) of the \(p\)-cover \(F/R^*\) and that the restriction of \(\alpha^*\) to the multiplicator \(R/R^*\) is uniquely determined by \(\alpha\). Each extended automorphism \(\alpha^*\) induces a permutation of the allowable subgroups. Thus the extended automorphisms determine a group \(P\) of permutations on the set \(A\) of allowable subgroups (The group \(P\) of permutations will appear in the description of some interactive functions). Choosing a representative \(S\) from each orbit of \(P\) on \(A\), the set of factor groups \(F/S\) contains each (isomorphism type of) immediate descendant of \(G\) exactly once. For each immediate descendant, the procedure of computing the \(p\)-cover, extending the automorphisms and computing the orbits on allowable subgroups can be repeated. Iteration of this procedure can in principle be used to determine all descendants of a \(p\)-group.

2.1-5 Laws

Let \(l(x_1, \dots, x_n)\) be a word in the free generators \(x_1, \dots, x_n\) of a free group of rank \(n\). Then \(l(x_1, \dots, x_n) = 1\) is called a law or identical relation in a group \(G\) if \(l(g_1, \dots, g_n) = 1\) for any choice of elements \(g_1, \dots, g_n\) in \(G\). In particular, \(x^e = 1\) is called an exponent law, \([[x,y],[u,v]] = 1\) the metabelian law, and \([\dots [[x_1,x_2],x_2],\dots, x_2] = 1\) an Engel identity.

2.2 The p-quotient Algorithm

For details, see [HN80], [NO96] and [VL84]. Other descriptions of the algorithm are given in [Sim94].

The pq algorithm successively determines the factor groups of the groups of the \(p\)-central series of a finitely presented (fp) group \(G\). If a bound \(b\) for the \(p\)-class is given, the algorithm will determine those factor groups up to at most \(p\)-class \(b\). If the \(p\)-central series terminates with a subgroup \(P_k(G)\) with \(k < b\), the algorithm will stop with that group. If no such bound is given, it will try to find the biggest such factor group.

\(G/P_1(G)\) is the largest elementary abelian \(p\)-factor group of \(G\) and this can be found from the relation matrix of \(G\) using matrix diagonalisation modulo \(p\). So it suffices to explain how \(G/P_{i+1}(G)\) is found from \(G\) and \(G/P_i(G)\) for some \(i \ge 1\).

This is done, in principle, in two steps: first the \(p\)-cover of \(G_i := G/P_i(G)\) is determined (which depends only on \(G_i\), not on \(G\)) and then \(G/P_{i+1}(G)\) as a factor group of this \(p\)-cover.

2.2-1 Finding the \(p\)-cover

A very detailed description of the first step is given in [NNN98], from which we just extract some passages in order to point to some terms occurring in this manual.

Let \(H\) be a \(p\)-group and \(p^{d(b)}\) be the order of \(H/P_b(H)\). So \(d := d(1)\) is the minimal number of generators of \(H\). A weighted pcp of \(H\) will be called labelled if for each generator \(a_k\), \(k > d\) one relation, having this generator as its right hand side, is marked as definition of this generator.

As described in [NNN98], a weighted labelled pcp of a \(p\)-group can be obtained stepping down its \(p\)-central series.

So let us assume that a weighted labelled pcp of \(G_i\) is given. A straightforward way of of writing down a (not necessarily consistent) pcp for its \(p\)-cover is to add generators, one for each relation which is not a definition, and modify the right hand side of each such relation by multiplying it on the right by one of the new generators -- a different generator for each such relation. Further relations are then added to make the new generators central and of order \(p\). This procedure is called adding tails. A more formal description of it is again given in [NNN98].

It is important to realise that the "new" generators will generate an elementary abelian group, that is, in additive notation, a vector space over the field of \(p\) elements. As said, the pcp of the \(p\)-cover obtained in this way need not be consistent. Since the pcp of \(G_i\) was consistent, applying the consistency conditions to the pcp of the \(p\)-cover, in case the presentation obtained for \(p\)-cover is not consistent, will produce a set of equations between the new generators, that, written additively, are linear equations over the field of \(p\) elements and can hence be used to remove redundant generators until a consistent pcp is obtained.

In reality, to follow this straightforward procedure would be forbiddingly inefficient except for very small examples. There are many ways of a priori reducing the number of "new generators" to be introduced, using e.g. the weights attached to the generators, and the main part of [NNN98] is devoted to a detailed discussion with proofs of these possibilities.

2.2-2 Imposing the Relations of the fp Group

In order to obtain \(G/P_{i+1}(G)\) from the pcp of the \(p\)-cover of \(G_i = G/P_i(G)\), the defining relations from the original presentation of \(G\) must be imposed. Since \(G_i\) is a homomorphic image of \(G\), these relations again yield relations between the "new generators" in the presentation of the \(p\)-cover of \(G_i\).

2.2-3 Imposing Laws

While we have so far only considered the computation of the factor groups of a given fp group by the groups of its descending \(p\)-central series, the \(p\)-quotient algorithm allows a very important variant of this idea: laws can be prescribed that should be fulfilled by the \(p\)-factor groups computed by the algorithm. The key observation here is the fact that at each step down the descending \(p\)-central series it suffices to impose these laws only for a finite number of words. Again for efficiency of the method it is crucial to keep the number of such words small, and much of [NO96] and the literature quoted in this paper is devoted to this problem.

In this form, starting with a free group and imposing an exponent law (also referred to as an exponent check) the pq program has, in fact, found its most noted application in the determination of (restricted) Burnside groups (as reported in e.g. [HN80], [NO96] and [VL90a]).

Via a GAP program using the "local" interactive functions of the pq program made available through this interface also arbitrary laws can be imposed via the option Identities (see 6.2).

2.3 The p-group generation Algorithm, Standard Presentation, Isomorphism Testing

For details, see [New77] and [O'B90].

The \(p\)-group generation algorithm determines the immediate descendants of a given \(p\)-group \(G\) up to isomorphism. From what has been explained in Section Basic notions, it is clear that this amounts to the construction of the \(p\)-cover, the extension of the automorphisms of \(G\) to the \(p\)-cover and the determination of representatives of the orbits of the action of these automorphisms on the set of supplements of the nucleus in the \(p\)-multiplicator.

The main practical problem here is the determination of these representatives. [O'B90] describes methods for this and the pq program allows choices according to whether space or time limitations must be met.

As well as the descendants of \(G\), the pq program determines their automorphism groups from that of \(G\) (see [O'B95]), which is important for an iteration of the process; this has been used by Eamonn O'Brien, e.g. in the classification of the \(2\)-groups that are now also part of the Small Groups library available through GAP.

A variant of the \(p\)-group generation algorithm is also used to define a standard presentation of a given \(p\)-group. This is done by constructing an isomorphic copy of the given group through a chain of descendants and at each step making a choice of a particular representative for the respective orbit of capable groups. In a fairly delicate process, subgroups of the \(p\)-multiplicator are represented by echelonised matrices and a first among the labels for standard matrices is chosen (this is described in detail in [O'B94]).

Finally, the standard presentation provides a way of testing if two given \(p\)-groups are isomorphic: the standard presentations of the groups are computed, for practical purposes compacted and the results compared for being identical, i.e. the groups are isomorphic if and only if their standard presentations are identical.

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/chap5.html000644 000766 000024 00000530111 14355420744 015574 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 5: Interactive ANUPQ functions
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

5 Interactive ANUPQ functions

5 Interactive ANUPQ functions

Here we describe the interactive functions defined by the ANUPQ package, i.e. the functions that manipulate and initiate interactive ANUPQ processes. These are functions that extract information via a dialogue with a running pq process (process used in the UNIX sense). Occasionally, a user needs the "next step"; the functions provided in this chapter make use of data from previous steps retained by the pq program, thus allowing the user to interact with the pq program like one can when one uses the pq program as a stand-alone (see guide.dvi in the standalone-doc directory).

An interactive ANUPQ process is initiated by PqStart and terminated via PqQuit; these functions are described in ection Starting and Stopping Interactive ANUPQ Processes.

Each interactive ANUPQ function that manipulates an already started interactive ANUPQ process, has a form where the first argument is the integer i returned by the initiating PqStart command, and a second form with one argument fewer (where the integer i is discovered by a default mechanism, namely by determining the least integer i for which there is a currently active interactive ANUPQ process). We will thus commonly say that "for the ith (or default) interactive ANUPQ process" a certain function performs a given action. In each case, it is an error if i is not the index of an active interactive process, or there are no current active interactive processes.

Notes: The global method of passing options (via PushOptions), should not be used with any of the interactive functions. In fact, the OptionsStack should be empty at the time any of the interactive functions is called.

On quitting GAP, PqQuitAll(); is executed, which terminates all active interactive ANUPQ processes. If GAP is killed without quitting, before all interactive ANUPQ processes are terminated, zombie processes (still living child processes whose parents have died), may result. Since zombie processes do consume resources, in such an event, the responsible computer user should seek out and terminate those zombie processes (e.g. on Linux: ps xw | grep pq gives you information on the pq processes corresponding to any interactive ANUPQ processes started in a GAP session; you can then do kill N for each number N appearing in the first column of this output).

5.1 Starting and Stopping Interactive ANUPQ Processes

5.1-1 PqStart
‣ PqStart( G, workspace: options )( function )
‣ PqStart( G: options )( function )
‣ PqStart( workspace: options )( function )
‣ PqStart( : options )( function )

activate an iostream for an interactive ANUPQ process (i.e. PqStart starts up a pq process and opens a GAP iostream to "talk" to that process) and returns an integer i that can be used to identify that process. The argument G should be an fp group or pc group that the user intends to manipulate using interactive ANUPQ functions. If the function is called without specifying G, a group can be read in by using the function PqRestorePcPresentation (see PqRestorePcPresentation (5.6-3)). If PqStart is given an integer argument workspace, then the pq program is started up with a workspace (an integer array) of size workspace (i.e. 4 × workspace bytes in a 32-bit environment); otherwise, the pq program sets a default workspace of 10000000.

The only options currently recognised by PqStart are Prime, Exponent and Relators (see Chapter ANUPQ Options for detailed descriptions of these options) and if provided they are essentially global for the interactive ANUPQ process, except that any interactive function interacting with the process and passing new values for these options will over-ride the global values.

5.1-2 PqQuit
‣ PqQuit( i )( function )
‣ PqQuit( )( function )

closes the stream of the ith or default interactive ANUPQ process and unbinds its ANUPQData.io record.

Note: It can happen that the pq process, and hence the GAP iostream assigned to communicate with it, can die, e.g. by the user typing a Ctrl-C while the pq process is engaged in a long calculation. IsPqProcessAlive (see IsPqProcessAlive (5.2-3)) is provided to check the status of the GAP iostream (and hence the status of the pq process it was communicating with).

5.1-3 PqQuitAll
‣ PqQuitAll( )( function )

is provided as a convenience, to terminate all active interactive ANUPQ processes with a single command. It is equivalent to executing PqQuit(i) for all active interactive ANUPQ processes i (see PqQuit (5.1-2)).

5.2 Interactive ANUPQ Process Utility Functions

5.2-1 PqProcessIndex
‣ PqProcessIndex( i )( function )
‣ PqProcessIndex( )( function )

With argument i, which must be a positive integer, PqProcessIndex returns i if it corresponds to an active interactive process, or raises an error. With no arguments it returns the default active interactive process or returns fail and emits a warning message to Info at InfoANUPQ or InfoWarning level 1.

Note: Essentially, an interactive ANUPQ process i is "active" if ANUPQData.io[i] is bound (i.e. we still have some data telling us about it). Also see PqStart (5.1-1).

5.2-2 PqProcessIndices
‣ PqProcessIndices( )( function )

returns the list of integer indices of all active interactive ANUPQ processes (see PqProcessIndex (5.2-1) for the meaning of "active").

5.2-3 IsPqProcessAlive
‣ IsPqProcessAlive( i )( function )
‣ IsPqProcessAlive( )( function )

return true if the GAP iostream of the ith (or default) interactive ANUPQ process started by PqStart is alive (i.e. can still be written to), or false, otherwise. (See the notes for PqStart (5.1-1) and PqQuit (5.1-2).)

If the user does not yet have a gap> prompt then usually the pq program is still away doing something and an ANUPQ interface function is still waiting for a reply. Typing a Ctrl-C (i.e. holding down the Ctrl key and typing c) will stop the waiting and send GAP into a break-loop, from which one has no option but to quit;. The typing of Ctrl-C, in such a circumstance, usually causes the stream of the interactive ANUPQ process to die; to check this we provide IsPqProcessAlive (see IsPqProcessAlive).

The GAP iostream of an interactive ANUPQ process will also die if the pq program has a segmentation fault. We do hope that this never happens to you, but if it does and the failure is reproducible, then it's a bug and we'd like to know about it. Please read the README that comes with the ANUPQ package to find out what to include in a bug report and who to email it to.

5.3 Interactive Versions of Non-interactive ANUPQ Functions

5.3-1 Pq
‣ Pq( i: options )( function )
‣ Pq( : options )( function )

return, for the fp or pc group (let us call it F), of the ith or default interactive ANUPQ process, the p-quotient of F specified by options, as a pc group; F must previously have been given (as first argument) to PqStart to start the interactive ANUPQ process (see PqStart (5.1-1)) or restored from file using the function PqRestorePcPresentation (see PqRestorePcPresentation (5.6-3)). Following the colon options is a selection of the options listed for the non-interactive Pq function (see Pq (4.1-1)), separated by commas like record components (see Section Reference: Function Call With Options in the GAP Reference Manual), except that the options SetupFile or PqWorkspace are ignored by the interactive Pq, and RedoPcp is an option only recognised by the interactive Pq i.e. the following options are recognised by the interactive Pq function:

  • Prime := p

  • ClassBound := n

  • Exponent := n

  • Relators := rels

  • Metabelian

  • Identities := funcs

  • GroupName := name

  • OutputLevel := n

  • RedoPcp

Detailed descriptions of the above options may be found in Chapter ANUPQ Options.

As a minimum the Pq function must have a value for the Prime option, though Prime need not be passed again in the case it has previously been provided, e.g. to PqStart (see PqStart (5.1-1)) when starting the interactive process.

The behaviour of the interactive Pq function depends on the current state of the pc presentation stored by the pq program:

  1. If no pc presentation has yet been computed (the case immediately after the PqStart call initiating the process) then the quotient group of the input group of the process of largest lower exponent-p class bounded by the value of the ClassBound option (see 6.2) is returned.

  2. If the current pc presentation of the process was determined by a previous call to Pq or PqEpimorphism, and the current call has a larger value ClassBound then the class is extended as much as is possible and the quotient group of the input group of the process of the new lower exponent-p class is returned.

  3. If the current pc presentation of the process was determined by a previous call to PqPCover then a consistent pc presentation of a quotient for the current class is determined before proceeding as in 2.

  4. If the RedoPcp option is supplied the current pc presentation is scrapped, all options must be re-supplied (in particular, Prime must be supplied) and then the Pq function proceeds as in 1.

See Section Attributes and a Property for fp and pc p-groups for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the group returned by Pq.

The following is one of the examples for the non-interactive Pq redone with the interactive version. Also, we set the option OutputLevel to 1 (see 6.2), in order to see the orders of the quotients of all the classes determined, and we set the InfoANUPQ level to 2 (see InfoANUPQ (3.3-1)), so that we catch the timing information.

gap> F := FreeGroup("a", "b");; a := F.1;; b := F.2;;
gap> G := F / [a^4, b^4];
<fp group on the generators [ a, b ]>
gap> PqStart(G);
1
gap> SetInfoLevel(InfoANUPQ, 2); #To see timing information
gap> Pq(: Prime := 2, ClassBound := 3, OutputLevel := 1 );
#I  Lower exponent-2 central series for [grp]
#I  Group: [grp] to lower exponent-2 central class 1 has order 2^2
#I  Group: [grp] to lower exponent-2 central class 2 has order 2^5
#I  Group: [grp] to lower exponent-2 central class 3 has order 2^8
#I  Computation of presentation took 0.00 seconds
<pc group of size 256 with 8 generators>

5.3-2 PqEpimorphism
‣ PqEpimorphism( i: options )( function )
‣ PqEpimorphism( : options )( function )

return, for the fp or pc group (let us call it F), of the ith or default interactive ANUPQ process, an epimorphism from F onto the p-quotient of F specified by options; F must previously have been given (as first argument) to PqStart to start the interactive ANUPQ process (see PqStart (5.1-1)). Since the underlying interactions with the pq program effected by the interactive PqEpimorphism are identical to those effected by the interactive Pq, everything said regarding the requirements and behaviour of the interactive Pq function (see Pq (5.3-1)) is also the case for the interactive PqEpimorphism.

Note: See Section Attributes and a Property for fp and pc p-groups for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the image group of the epimorphism returned by PqEpimorphism.

5.3-3 PqPCover
‣ PqPCover( i: options )( function )
‣ PqPCover( : options )( function )

return, for the fp or pc group of the ith or default interactive ANUPQ process, the p-covering group of the p-quotient Pq(i : options) or Pq(: options), modulo the following:

  1. If no pc presentation has yet been computed (the case immediately after the PqStart call initiating the process) and the group F of the process is already a p-group, in the sense that HasIsPGroup(F) and IsPGroup(F) is true, then

    Prime

    defaults to PrimePGroup(F), if not supplied and HasPrimePGroup(F) = true; and

    ClassBound

    defaults to PClassPGroup(F) if HasPClassPGroup(F) = true if not supplied, or to the usual default of 63, otherwise.

  2. If a pc presentation has been computed and none of options is RedoPcp or if no pc presentation has yet been computed but 1. does not apply then PqPCover(i : options); is equivalent to:

    Pq(i : options);
    PqPCover(i);
    
  3. If the RedoPcp option is supplied the current pc presentation is scrapped, and PqPCover proceeds as in 1. or 2. but without the RedoPcp option.

5.3-4 PqStandardPresentation
‣ PqStandardPresentation( [i]: options )( function )
‣ StandardPresentation( [i]: options )( function )

return, for the ith or default interactive ANUPQ process, the p-quotient of the group F of the process, specified by options, as an fp group which has a standard presentation. Here options is a selection of the options from the following list (see Chapter ANUPQ Options for detailed descriptions); this list is the same as for the non-interactive version of PqStandardPresentation except for the omission of options SetupFile and PqWorkspace (see PqStandardPresentation (4.2-1)).

  • Prime := p

  • pQuotient := Q

  • ClassBound := n

  • Exponent := n

  • Metabelian

  • GroupName := name

  • OutputLevel := n

  • StandardPresentationFile := filename

Unless F is a pc p-group, or the option Prime has been passed to a previous interactive function for the process to compute a p-quotient for F, the user must supply either the option Prime or the option pQuotient (if both Prime and pQuotient are supplied, the prime p is determined by applying PrimePGroup (see PrimePGroup (Reference: PrimePGroup) in the Reference Manual) to the value of pQuotient).

Taking one of the examples for the non-interactive version of StandardPresentation (see StandardPresentation (4.2-1)) that required two separate calls to the pq program, we now show how it can be done by setting up a dialogue with just the one pq process, using the interactive version of StandardPresentation:

gap> F4 := FreeGroup( "a", "b", "c", "d" );;
gap> a := F4.1;; b := F4.2;; c := F4.3;; d := F4.4;;
gap> G4 := F4 / [ b^4, b^2 / Comm(Comm (b, a), a), d^16,
>                 a^16 / (c * d), b^8 / (d * c^4) ];
<fp group on the generators [ a, b, c, d ]>
gap> SetInfoLevel(InfoANUPQ, 1); #Only essential Info please
gap> PqStart(G4); #Start a new interactive process for a new group
2
gap> K := Pq( 2 : Prime := 2, ClassBound := 1 ); #`pq' process no. is 2
<pc group of size 4 with 2 generators>
gap> StandardPresentation( 2 : pQuotient := K, ClassBound := 14 );
<fp group with 53 generators>

Notes

In contrast to the function Pq (see Pq (4.1-1)) which returns a pc group, PqStandardPresentation or StandardPresentation returns an fp group. This is because the output is mainly used for isomorphism testing for which an fp group is enough. However, the presentation is a polycyclic presentation and if you need to do any further computation with this group (e.g. to find the order) you can use the function PcGroupFpGroup (see PcGroupFpGroup (Reference: PcGroupFpGroup) in the GAP Reference Manual) to form a pc group.

If the user does not supply a p-quotient Q via the pQuotient option, and the prime p is either supplied, stored, or F is a pc p-group, then a p-quotient Q is computed. (The value of the prime p is stored if passed initially to PqStart or to a subsequent interactive process.) Note that a stored value for pQuotient (from a prior call to Pq) does not have precedence over a value for the prime p. If the user does supply a p-quotient Q via the pQuotient option, the package AutPGrp is called to compute the automorphism group of Q; an error will occur that asks the user to install the package AutPGrp if the automorphism group cannot be computed.

If any of the interactive functions PqStandardPresentation, StandardPresentation, EpimorphismPqStandardPresentation or EpimorphismStandardPresentation has been called previously for an interactive process, a subsequent call to any of these functions for the same process returns the previously computed value. Note that all these functions compute both an epimorphism and an fp group and store the results in the SPepi and SP fields of the data record associated with the process. See the example for the interactive EpimorphismStandardPresentation (EpimorphismStandardPresentation (5.3-5)).

The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for the group returned by PqStandardPresentation or StandardPresentation (see Section Attributes and a Property for fp and pc p-groups).

5.3-5 EpimorphismPqStandardPresentation
‣ EpimorphismPqStandardPresentation( [i]: options )( function )
‣ EpimorphismStandardPresentation( [i]: options )( method )

Each of the above functions accepts the same arguments and options as the interactive form of StandardPresentation (see StandardPresentation (5.3-4)) and returns an epimorphism from the fp or pc group F of the ith or default interactive ANUPQ process onto the finitely presented group given by a standard presentation, i.e. if S is the standard presentation computed for the p-quotient of F by StandardPresentation then EpimorphismStandardPresentation returns the epimorphism from F to the group with presentation S. The group F must have been given (as first argument) to PqStart to start the interactive ANUPQ process (see PqStart (5.1-1)).

Taking our earlier non-interactive example (see EpimorphismPqStandardPresentation (4.2-2)) and modifying it a little, we illustrate, as for the interactive StandardPresentation (see StandardPresentation (5.3-4)), how something that required two separate calls to the pq program can now be achieved with a dialogue with just one pq process. Also, observe that calls to one of the standard presentation functions (as mentioned in the notes of StandardPresentation (5.3-4)) computes and stores both an fp group with a standard presentation and an epimorphism; subsequent calls to a standard presentation function for the same process simply return the appropriate stored value.

gap> F := FreeGroup(6, "F");;
gap> x := F.1;; y := F.2;; z := F.3;; w := F.4;; a := F.5;; b := F.6;;
gap> R := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b,
>          Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ];
[ F1^3*F4^-1, F2^3*F4^-1*F5^2*F6^2, F4^3*F6^-1, F2^-1*F1^-1*F2*F1*F3^-1, 
  F3^-1*F1^-1*F3*F1, F3^-1*F2^-1*F3*F2*F5^-1, F3^3 ]
gap> Q := F / R;
<fp group on the generators [ F1, F2, F3, F4, F5, F6 ]>
gap> PqStart( Q );
3
gap> G := Pq( 3 : Prime := 3, ClassBound := 3 );
<pc group of size 729 with 6 generators>
gap> lev := InfoLevel(InfoANUPQ);; # Save current InfoANUPQ level
gap> SetInfoLevel(InfoANUPQ, 2); # To see computation times
gap> # It is not necessary to pass the `Prime' option to
gap> # `EpimorphismStandardPresentation' since it was previously
gap> # passed to `Pq':
gap> phi := EpimorphismStandardPresentation( 3 : ClassBound := 3 );
#I  Class 1 3-quotient and its 3-covering group computed in 0.00 seconds
#I  Order of GL subgroup is 48
#I  No. of soluble autos is 0
#I    dim U = 1  dim N = 3  dim M = 3
#I    nice stabilizer with perm rep
#I  Computing standard presentation for class 2 took 0.00 seconds
#I  Computing standard presentation for class 3 took 0.01 seconds
[ F1, F2, F3, F4, F5, F6 ] -> [ f1*f2^2*f3*f4^2*f5^2, f1*f2*f3*f5, f3^2, 
  f4*f6^2, f5, f6 ]
gap> # Image of phi should be isomorphic to G ...
gap> # let's check the order is correct:
gap> Size( Image(phi) );
729
gap> # `StandardPresentation' and `EpimorphismStandardPresentation'
gap> # behave like attributes, so no computation is done when
gap> # either is called again for the same process ...
gap> StandardPresentation( 3 : ClassBound := 3 );
<fp group of size 729 on the generators [ f1, f2, f3, f4, f5, f6 ]>
gap> # No timing data was Info-ed since no computation was done
gap> SetInfoLevel(InfoANUPQ, lev); # Restore previous InfoANUPQ level

A very similar (essential details are the same) example to the above may be executed live, by typing: PqExample( "EpimorphismStandardPresentation-i" );.

Note: The notes for PqStandardPresentation or StandardPresentation (see PqStandardPresentation (5.3-4)) apply also to EpimorphismPqStandardPresentation or EpimorphismStandardPresentation except that their return value is an epimorphism onto an fp group, i.e. one should interpret the phrase "returns an fp group" as "returns an epimorphism onto an fp group" etc.

5.3-6 PqDescendants
‣ PqDescendants( i: options )( function )
‣ PqDescendants( : options )( function )

return for the pc group G of the ith or default interactive ANUPQ process, which must be of prime power order with a confluent pc presentation (see IsConfluent (Reference: IsConfluent for pc groups) in the GAP Reference Manual), a list of descendants (pc groups) of G. The group G is usually given as first argument to PqStart when starting the interactive ANUPQ process (see PqStart (5.1-1)). Alternatively, one may initiate the process with an fp group, use Pq interactively (see Pq (5.3-1)) to create a pc group and use PqSetPQuotientToGroup (see PqSetPQuotientToGroup (5.3-7)), which involves no computation, to set the pc group returned by Pq as the group of the process. Note that repeating a call to PqDescendants for the same interactive ANUPQ process simply returns the list of descendants originally calculated; a warning is emitted at InfoANUPQ level 1 reminding you of this should you do this.

After the colon, options a selection of the options listed for the non-interactive PqDescendants function (see PqDescendants (4.4-1)), should be given, separated by commas like record components (see Section Reference: Function Call With Options in the GAP Reference Manual), except that the options SetupFile or PqWorkspace are ignored by the interactive PqDescendants, i.e. the following options are recognised by the interactive PqDescendants function:

  • ClassBound := n

  • Relators := rels

  • OrderBound := n

  • StepSize := n, StepSize := list

  • RankInitialSegmentSubgroups := n

  • SpaceEfficient

  • CapableDescendants

  • AllDescendants := false

  • Exponent := n

  • Metabelian

  • GroupName := name

  • SubList := sub

  • BasicAlgorithm

  • CustomiseOutput := rec

Notes: The function PqDescendants uses the automorphism group of G which it computes via the package AutPGrp if the automorphism group of G is not already present. If AutPGrp is not installed an error may be raised. If the automorphism group of G is insoluble the pq program will call GAP together with the AutPGrp package for certain orbit-stabilizer calculations.

The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for each group of the list returned by PqDescendants (see Section Attributes and a Property for fp and pc p-groups).

Let us now repeat the examples previously given for the non-interactive PqDescendants, but this time with the interactive version of PqDescendants:

gap> F := FreeGroup( "a", "b" );; a := F.1;; b := F.2;;
gap> G := PcGroupFpGroup( F / [ a^2, b^2, Comm(b, a) ] );
<pc group of size 4 with 2 generators>
gap> PqStart(G); #This will now be the 4th interactive process running
4
gap> des := PqDescendants( 4 : OrderBound := 6, ClassBound := 5 );;
gap> Length(des);
83
gap> List(des, Size);
[ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, 
  32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, 
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
  64, 64, 64, 64, 64, 64, 64 ]
gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 );
[ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 
  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
  4, 4, 4, 5, 5, 5, 5, 5 ]

In the second example we compute all capable descendants of order 27 of the elementary abelian group of order 9.

gap> F := FreeGroup( 2, "g" );;
gap> G := PcGroupFpGroup( F / [ F.1^3, F.2^3, Comm(F.1, F.2) ] );
<pc group of size 9 with 2 generators>
gap> PqStart(G); #This will now be the 5th interactive process running
5
gap> des := PqDescendants( 5 : OrderBound := 3, ClassBound := 2,
>                              CapableDescendants );
[ <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators> ]
gap> List(des, d -> Length( PCentralSeries( d, 3 ) ) - 1 );
[ 2, 2 ]
gap> # For comparison let us now compute all descendants
gap> # (using the non-interactive Pq function)
gap> PqDescendants( G : OrderBound := 3, ClassBound := 2);
[ <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators> ]

In the third example, we compute all capable descendants of the elementary abelian group of order 5^2 which have exponent-5 class at most 3, exponent 5, and are metabelian.

gap> F := FreeGroup( 2, "g" );;
gap> G := PcGroupFpGroup( F / [ F.1^5, F.2^5, Comm(F.2, F.1) ] );
<pc group of size 25 with 2 generators>
gap> PqStart(G); #This will now be the 6th interactive process running
6
gap> des := PqDescendants( 6 : Metabelian, ClassBound := 3,
>                              Exponent := 5, CapableDescendants );
[ <pc group of size 125 with 3 generators>, 
  <pc group of size 625 with 4 generators>, 
  <pc group of size 3125 with 5 generators> ]
gap> List(des, d -> Length( PCentralSeries( d, 5 ) ) - 1 );
[ 2, 3, 3 ]
gap> List(des, d -> Length( DerivedSeries( d ) ) );
[ 3, 3, 3 ]
gap> List(des, d -> Maximum( List( d, Order ) ) );
[ 5, 5, 5 ]

5.3-7 PqSetPQuotientToGroup
‣ PqSetPQuotientToGroup( i )( function )
‣ PqSetPQuotientToGroup( )( function )

for the ith or default interactive ANUPQ process, set the p-quotient previously computed by the interactive Pq function (see Pq (5.3-1)) to be the group of the process. This function is supplied to enable the computation of descendants of a p-quotient that is already known to the pq program, via the interactive PqDescendants function (see PqDescendants (5.3-6)), thus avoiding the need to re-submit it and have the pq program recompute it.

Note: See the function PqPGSetDescendantToPcp (PqPGSetDescendantToPcp (5.9-4)) for a mechanism to make (the p-cover of) a particular descendants the current group of the process.

The following example of the usage of PqSetPQuotientToGroup, which is essentially equivalent to what is obtained by running PqExample("PqDescendants-1-i");, redoes the first example of PqDescendants (5.3-6) (which computes the descendants of the Klein four group).

gap> F := FreeGroup( "a", "b" );
<free group on the generators [ a, b ]>
gap> procId := PqStart( F : Prime := 2 );
7
gap> Pq( procId : ClassBound := 1 );
<pc group of size 4 with 2 generators>
gap> PqSetPQuotientToGroup( procId );
gap> des := PqDescendants( procId : OrderBound := 6, ClassBound := 5 );;
gap> Length(des);
83
gap> List(des, Size);
[ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, 
  32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, 
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
  64, 64, 64, 64, 64, 64, 64 ]
gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 );
[ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 
  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
  4, 4, 4, 5, 5, 5, 5, 5 ]

5.4 Low-level Interactive ANUPQ functions based on menu items of the pq program

The pq program has 5 menus, the details of which the reader will not normally need to know, but if she wishes to know the details they may be found in the standalone manual: guide.dvi. Both guide.dvi and the pq program refer to the items of these 5 menus as "options", which do not correspond in any way to the options used by any of the GAP functions that interface with the pq program.

Warning: The commands provided in this section are intended to provide something like the interactive functionality one has when running the standalone, from within GAP. The pq standalone (in particular, its "advanced" menus) assumes some expertise of the user; doing the "wrong" thing can cause the program to crash. While a number of safeguards have been provided in the GAP interface to the pq program, these are not foolproof, and the user should exercise care and ensure pre-requisites of the various commands are met.

5.5 General commands

The following commands either use a menu item from whatever menu is "current" for the pq program, or have general application and are not associated with just one menu item of the pq program.

5.5-1 PqNrPcGenerators
‣ PqNrPcGenerators( i )( function )
‣ PqNrPcGenerators( )( function )

for the ith or default interactive ANUPQ process, return the number of pc generators of the lower exponent p-class quotient of the group currently determined by the process. This also applies if the pc presentation is not consistent.

5.5-2 PqFactoredOrder
‣ PqFactoredOrder( i )( function )
‣ PqFactoredOrder( )( function )

for the ith or default interactive ANUPQ process, return an integer pair [p, n] where p is a prime and n is the number of pc generators (see PqNrPcGenerators (5.5-1)) in the pc presentation of the quotient group currently determined by the process. If this presentation is consistent, then p^n is the order of the quotient group. Otherwise (if tails have been added but the necessary consistency checks, relation collections, exponent law checks and redundant generator eliminations have not yet been done), p^n is an upper bound for the order of the group.

5.5-3 PqOrder
‣ PqOrder( i )( function )
‣ PqOrder( )( function )

for the ith or default interactive ANUPQ process, return p^n where [p, n] is the pair as returned by PqFactoredOrder (see PqFactoredOrder (5.5-2)).

5.5-4 PqPClass
‣ PqPClass( i )( function )
‣ PqPClass( )( function )

for the ith or default interactive ANUPQ process, return the lower exponent p-class of the quotient group currently determined by the process.

5.5-5 PqWeight
‣ PqWeight( i, j )( function )
‣ PqWeight( j )( function )

for the ith or default interactive ANUPQ process, return the weight of the jth pc generator of the lower exponent p-class quotient of the group currently determined by the process, or fail if there is no such numbered pc generator.

5.5-6 PqCurrentGroup
‣ PqCurrentGroup( i )( function )
‣ PqCurrentGroup( )( function )

for the ith or default interactive ANUPQ process, return the group whose pc presentation is determined by the process as a GAP pc group (either a lower exponent p-class quotient of the start group or the p-cover of such a quotient).

Notes: See Section Attributes and a Property for fp and pc p-groups for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the group returned by PqCurrentGroup.

5.5-7 PqDisplayPcPresentation
‣ PqDisplayPcPresentation( i: [OutputLevel := lev] )( function )
‣ PqDisplayPcPresentation( : [OutputLevel := lev] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to display the pc presentation of the lower exponent p-class quotient of the group currently determined by the process.

Except if the last command communicating with the pq program was a p-group generation command (for which there is only a verbose output level), to set the amount of information this command displays you may wish to call PqSetOutputLevel first (see PqSetOutputLevel (5.5-8)), or equivalently pass the option OutputLevel (see 6.2).

Note: For those familiar with the pq program, PqDisplayPcPresentation performs menu item 4 of the current menu of the pq program.

5.5-8 PqSetOutputLevel
‣ PqSetOutputLevel( i, lev )( function )
‣ PqSetOutputLevel( lev )( function )

for the ith or default interactive ANUPQ process, direct the pq program to set the output level of the pq program to lev.

Note: For those familiar with the pq program, PqSetOutputLevel performs menu item 5 of the main (or advanced) p-Quotient menu, or the Standard Presentation menu.

5.5-9 PqEvaluateIdentities
‣ PqEvaluateIdentities( i: [Identities := funcs] )( function )
‣ PqEvaluateIdentities( : [Identities := funcs] )( function )

for the ith or default interactive ANUPQ process, invoke the evaluation of identities defined by the Identities option, and eliminate any redundant pc generators formed. Since a previous value of Identities is saved in the data record of the process, it is unnecessary to pass the Identities if set previously.

Note: This function is mainly implemented at the GAP level. It does not correspond to a menu item of the pq program.

5.6 Commands from the Main p-Quotient menu

5.6-1 PqPcPresentation
‣ PqPcPresentation( i: options )( function )
‣ PqPcPresentation( : options )( function )

for the ith or default interactive ANUPQ process, direct the pq program to compute the pc presentation of the quotient (determined by options) of the group of the process, which for process i is stored as ANUPQData.io[i].group.

The possible options are the same as for the interactive Pq (see Pq (5.3-1)) function, except for RedoPcp (which, in any case, would be superfluous), namely: Prime, ClassBound, Exponent, Relators, GroupName, Metabelian, Identities and OutputLevel (see Chapter ANUPQ Options for a detailed description for these options). The option Prime is required unless already provided to PqStart.

Notes

The pc presentation is held by the pq program. In contrast to Pq (see Pq (5.3-1)), no GAP pc group is returned; see PqCurrentGroup (PqCurrentGroup (5.5-6)) if you need the corresponding GAP pc group.

PqPcPresentation(i: options); is roughly equivalent to the following sequence of low-level commands:

PqPcPresentation(i: opts); #class 1 call
for c in [2 .. class] do
    PqNextClass(i);
od;

where opts is options except with the ClassBound option set to 1, and class is either the maximum class of a p-quotient of the group of the process or the user-supplied value of the option ClassBound (whichever is smaller). If the Identities option has been set, both the first PqPcPresentation class 1 call and the PqNextClass calls invoke PqEvaluateIdentities(i); as their final step.

For those familiar with the pq program, PqPcPresentation performs menu item 1 of the main p-Quotient menu.

5.6-2 PqSavePcPresentation
‣ PqSavePcPresentation( i, filename )( function )
‣ PqSavePcPresentation( filename )( function )

for the ith or default interactive ANUPQ process, direct the pq program to save the pc presentation previously computed for the quotient of the group of that process to the file with name filename. If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which GAP was started. A saved file may be restored by PqRestorePcPresentation (see PqRestorePcPresentation (5.6-3)).

Note: For those familiar with the pq program, PqSavePcPresentation performs menu item 2 of the main p-Quotient menu.

5.6-3 PqRestorePcPresentation
‣ PqRestorePcPresentation( i, filename )( function )
‣ PqRestorePcPresentation( filename )( function )

for the ith or default interactive ANUPQ process, direct the pq program to restore the pc presentation previously saved to filename, by PqSavePcPresentation (see PqSavePcPresentation (5.6-2)). If the first character of the string filename is not /, filename is assumed to be the path of a readable file relative to the directory in which GAP was started.

Note: For those familiar with the pq program, PqRestorePcPresentation performs menu item 3 of the main p-Quotient menu.

5.6-4 PqNextClass
‣ PqNextClass( i: [QueueFactor] )( function )
‣ PqNextClass( : [QueueFactor] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to calculate the next class of ANUPQData.io[i].group.

PqNextClass accepts the option QueueFactor (see also 6.2) which should be a positive integer if automorphisms have been previously supplied. If the pq program requires a queue factor and none is supplied via the option QueueFactor a default of 15 is taken.

Notes

The single command: PqNextClass(i); is equivalent to executing

PqComputePCover(i);
PqCollectDefiningRelations(i);
PqDoExponentChecks(i);
PqEliminateRedundantGenerators(i);

If the Identities option is set the PqEliminateRedundantGenerators(i); step is essentially replaced by PqEvaluateIdentities(i); (which invokes its own elimination of redundant generators).

For those familiar with the pq program, PqNextClass performs menu item 6 of the main p-Quotient menu.

5.6-5 PqComputePCover
‣ PqComputePCover( i )( function )
‣ PqComputePCover( )( function )

for the ith or default interactive ANUPQ processi, directi, the pq program to compute the p-covering group of ANUPQData.io[i].group. In contrast to the function PqPCover (see PqPCover (4.1-3)), this function does not return a GAP pc group.

Notes

The single command: PqComputePCover(i); is equivalent to executing

PqSetupTablesForNextClass(i);
PqTails(i, 0);
PqDoConsistencyChecks(i, 0, 0);
PqEliminateRedundantGenerators(i);

For those familiar with the pq program, PqComputePCover performs menu item 7 of the main p-Quotient menu.

5.7 Commands from the Advanced p-Quotient menu

5.7-1 PqCollect
‣ PqCollect( i, word )( function )
‣ PqCollect( word )( function )

for the ith or default interactive ANUPQ process, instruct the pq program to do a collection on word, a word in the current pc generators (the form of word required is described below). PqCollect returns the resulting word of the collection as a list of generator number, exponent pairs (the same form as the second allowed input form of word; see below).

The argument word may be input in either of the following ways:

  1. word may be a string, where the ith pc generator is represented by xi, e.g. "x3*x2^2*x1". This way is quite versatile as parentheses and left-normed commutators -- using square brackets, in the same way as PqGAPRelators (see PqGAPRelators (3.4-2)) -- are permitted; word is checked for correct syntax via PqParseWord (see PqParseWord (3.4-3)).

  2. Otherwise, word must be a list of generator number, exponent pairs of integers, i.e.  each pair represents a "syllable" so that [ [3, 1], [2, 2], [1, 1] ] represents the same word as that of the example given for the first allowed form of word.

Note: For those familiar with the pq program, PqCollect performs menu item 1 of the Advanced p-Quotient menu.

5.7-2 PqSolveEquation
‣ PqSolveEquation( i, a, b )( function )
‣ PqSolveEquation( a, b )( function )

for the ith or default interactive ANUPQ process, direct the pq program to solve a * x = b for x, where a and b are words in the pc generators. For the representation of these words see the description of the function PqCollect (PqCollect (5.7-1)).

Note: For those familiar with the pq program, PqSolveEquation performs menu item 2 of the Advanced p-Quotient menu.

5.7-3 PqCommutator
‣ PqCommutator( i, words, pow )( function )
‣ PqCommutator( words, pow )( function )

for the ith or default interactive ANUPQ process, instruct the pq program to compute the left normed commutator of the list words of words in the current pc generators raised to the integer power pow, and return the resulting word as a list of generator number, exponent pairs. The form required for each word of words is the same as that required for the word argument of PqCollect (see PqCollect (5.7-1)). The form of the output word is also the same as for PqCollect.

Note: For those familiar with the pq program, PqCommutator performs menu item 3 of the Advanced p-Quotient menu.

5.7-4 PqSetupTablesForNextClass
‣ PqSetupTablesForNextClass( i )( function )
‣ PqSetupTablesForNextClass( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to set up tables for the next class. As as side-effect, after PqSetupTablesForNextClass(i) the value returned by PqPClass(i) will be one more than it was previously.

Note: For those familiar with the pq program, PqSetupTablesForNextClass performs menu item 6 of the Advanced p-Quotient menu.

5.7-5 PqTails
‣ PqTails( i, weight )( function )
‣ PqTails( weight )( function )

for the ith or default interactive ANUPQ process, direct the pq program to compute and add tails of weight weight if weight is in the integer range [2 .. PqPClass(i)] (assuming i is the number of the process, even in the default case) or for all weights if weight = 0.

If weight is non-zero, then tails that introduce new generators for only weight weight are computed and added, and in this case and if weight < PqPClass(i), it is assumed that the tails that introduce new generators for each weight from PqPClass(i) down to weight weight + 1 have already been added. You may wish to call PqSetMetabelian (see PqSetMetabelian (5.7-16)) prior to calling PqTails.

Notes

For its use in the context of finding the next class see PqNextClass (5.6-4); in particular, a call to PqSetupTablesForNextClass (see PqSetupTablesForNextClass (5.7-4)) needs to have been made prior to calling PqTails.

The single command: PqTails(i, weight); is equivalent to

PqComputeTails(i, weight);
PqAddTails(i, weight);

For those familiar with the pq program, PqTails uses menu item 7 of the Advanced p-Quotient menu.

5.7-6 PqComputeTails
‣ PqComputeTails( i, weight )( function )
‣ PqComputeTails( weight )( function )

for the ith or default interactive ANUPQ process, direct the pq program to compute tails of weight weight if weight is in the integer range [2 .. PqPClass(i)] (assuming i is the number of the process, even in the default case) or for all weights if weight = 0. See PqTails (PqTails (5.7-5)) for more details.

Note: For those familiar with the pq program, PqComputeTails uses menu item 7 of the Advanced p-Quotient menu.

5.7-7 PqAddTails
‣ PqAddTails( i, weight )( function )
‣ PqAddTails( weight )( function )

for the ith or default interactive ANUPQ process, direct the pq program to add the tails of weight weight, previously computed by PqComputeTails (see PqComputeTails (5.7-6)), if weight is in the integer range [2 .. PqPClass(i)] (assuming i is the number of the process, even in the default case) or for all weights if weight = 0. See PqTails (PqTails (5.7-5)) for more details.

Note: For those familiar with the pq program, PqAddTails uses menu item 7 of the Advanced p-Quotient menu.

5.7-8 PqDoConsistencyChecks
‣ PqDoConsistencyChecks( i, weight, type )( function )
‣ PqDoConsistencyChecks( weight, type )( function )

for the ith or default interactive ANUPQ process, do consistency checks for weight weight if weight is in the integer range [3 .. PqPClass(i)] (assuming i is the number of the process) or for all weights if weight = 0, and for type type if type is in the range [1, 2, 3] (see below) or for all types if type = 0. (For its use in the context of finding the next class see PqNextClass (5.6-4).)

The type of a consistency check is defined as follows. PqDoConsistencyChecks(i, weight, type) for weight in [3 .. PqPClass(i)] and the given value of type invokes the equivalent of the following PqDoConsistencyCheck calls (see PqDoConsistencyCheck (5.7-17)):

type = 1:

PqDoConsistencyCheck(i, a, a, a) checks 2 * PqWeight(i, a) + 1 = weight, for pc generators of index a.

type = 2:

PqDoConsistencyCheck(i, b, b, a) checks for pc generators of indices b, a satisfyingx both b > a and PqWeight(i, b) + PqWeight(i, a) + 1 = weight.

type = 3:

PqDoConsistencyCheck(i, c, b, a) checks for pc generators of indices c, b, a satisfying c > b > a and the sum of the weights of these generators equals weight.

Notes

PqWeight(i, j) returns the weight of the jth pc generator, for process i (see PqWeight (5.5-5)).

It is assumed that tails for the given weight (or weights) have already been added (see PqTails (5.7-5)).

For those familiar with the pq program, PqDoConsistencyChecks performs menu item 8 of the Advanced p-Quotient menu.

5.7-9 PqCollectDefiningRelations
‣ PqCollectDefiningRelations( i )( function )
‣ PqCollectDefiningRelations( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to collect the images of the defining relations of the original fp group of the process, with respect to the current pc presentation, in the context of finding the next class (see PqNextClass (5.6-4)). If the tails operation is not complete then the relations may be evaluated incorrectly.

Note: For those familiar with the pq program, PqCollectDefiningRelations performs menu item 9 of the Advanced p-Quotient menu.

5.7-10 PqCollectWordInDefiningGenerators
‣ PqCollectWordInDefiningGenerators( i, word )( function )
‣ PqCollectWordInDefiningGenerators( word )( function )

for the ith or default interactive ANUPQ process, take a user-defined word word in the defining generators of the original presentation of the fp or pc group of the process. Each generator is mapped into the current pc presentation, and the resulting word is collected with respect to the current pc presentation. The result of the collection is returned as a list of generator number, exponent pairs.

The word argument may be input in either of the two ways described for PqCollect (see PqCollect (5.7-1)).

Note: For those familiar with the pq program, PqCollectDefiningGenerators performs menu item 23 of the Advanced p-Quotient menu.

5.7-11 PqCommutatorDefiningGenerators
‣ PqCommutatorDefiningGenerators( i, words, pow )( function )
‣ PqCommutatorDefiningGenerators( words, pow )( function )

for the ith or default interactive ANUPQ process, take a list words of user-defined words in the defining generators of the original presentation of the fp or pc group of the process, and an integer power pow. Each generator is mapped into the current pc presentation. The list words is interpreted as a left-normed commutator which is then raised to pow and collected with respect to the current pc presentation. The result of the collection is returned as a list of generator number, exponent pairs.

Note For those familiar with the pq program, PqCommutatorDefiningGenerators performs menu item 24 of the Advanced p-Quotient menu.

5.7-12 PqDoExponentChecks
‣ PqDoExponentChecks( i: [Bounds := list] )( function )
‣ PqDoExponentChecks( : [Bounds := list] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to do exponent checks for weights (inclusively) between the bounds of Bounds or for all weights if Bounds is not given. The value list of Bounds (assuming the interactive process is numbered i) should be a list of two integers low, high satisfying 1 ≤ lowhigh PqPClass(i) (see PqPClass (5.5-4)). If no exponent law has been specified, no exponent checks are performed.

Note: For those familiar with the pq program, PqDoExponentChecks performs menu item 10 of the Advanced p-Quotient menu.

5.7-13 PqEliminateRedundantGenerators
‣ PqEliminateRedundantGenerators( i )( function )
‣ PqEliminateRedundantGenerators( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to eliminate redundant generators of the current p-quotient.

Note: For those familiar with the pq program, PqEliminateRedundantGenerators performs menu item 11 of the Advanced p-Quotient menu.

5.7-14 PqRevertToPreviousClass
‣ PqRevertToPreviousClass( i )( function )
‣ PqRevertToPreviousClass( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to abandon the current class and revert to the previous class.

Note: For those familiar with the pq program, PqRevertToPreviousClass performs menu item 12 of the Advanced p-Quotient menu.

5.7-15 PqSetMaximalOccurrences
‣ PqSetMaximalOccurrences( i, noccur )( function )
‣ PqSetMaximalOccurrences( noccur )( function )

for the ith or default interactive ANUPQ process, direct the pq program to set maximal occurrences of the weight 1 generators in the definitions of pcp generators of the group of the process. This can be used to avoid the definition of generators of which one knows for theoretical reasons that they would be eliminated later on.

The argument noccur must be a list of non-negative integers of length the number of weight 1 generators (i.e. the rank of the class 1 p-quotient of the group of the process). An entry of 0 for a particular generator indicates that there is no limit on the number of occurrences for the generator.

Note: For those familiar with the pq program, PqSetMaximalOccurrences performs menu item 13 of the Advanced p-Quotient menu.

5.7-16 PqSetMetabelian
‣ PqSetMetabelian( i )( function )
‣ PqSetMetabelian( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to enforce metabelian-ness.

Note: For those familiar with the pq program, PqSetMetabelian performs menu item 14 of the Advanced p-Quotient menu.

5.7-17 PqDoConsistencyCheck
‣ PqDoConsistencyCheck( i, c, b, a )( function )
‣ PqDoConsistencyCheck( c, b, a )( function )
‣ PqJacobi( i, c, b, a )( function )
‣ PqJacobi( c, b, a )( function )

for the ith or default interactive ANUPQ process, direct the pq program to do the consistency check for the pc generators with indices c, b, a which should be non-increasing positive integers, i.e. cba.

There are 3 types of consistency checks:

\begin{array}{rclrl} (a^n)a &=& a(a^n) && {\rm (Type\ 1)} \\ (b^n)a &=& b^{(n-1)}(ba), b(a^n) = (ba)a^{(n-1)} && {\rm (Type\ 2)} \\ c(ba) &=& (cb)a && {\rm (Type\ 3)} \\ \end{array}

The reason some people talk about Jacobi relations instead of consistency checks becomes clear when one looks at the consistency check of type 3:

\begin{array}{rcl} c(ba) &=& a c[c,a] b[b,a] = acb [c,a][c,a,b][b,a] = \dots \\ (cb)a &=& b c[c,b] a = a b[b,a] c[c,a] [c,b][c,b,a] \\ &=& abc [b,a] [b,a,c] [c,a] [c,b] [c,b,a] = \dots \\ \end{array}

Each collection would normally carry on further. But one can see already that no other commutators of weight 3 will occur. After all terms of weight one and weight two have been moved to the left we end up with:

\begin{array}{rcl} & &abc [b,a] [c,a] [c,b] [c,a,b] \dots \\ &=&abc [b,a] [c,a] [c,b] [c,b,a] [b,a,c] \dots \\ \end{array}

Modulo terms of weight 4 this is equivalent to

[c,a,b] [b,c,a] [a,b,c] = 1

which is the Jacobi identity.

See also PqDoConsistencyChecks (PqDoConsistencyChecks (5.7-8)).

Note: For those familiar with the pq program, PqDoConsistencyCheck and PqJacobi perform menu item 15 of the Advanced p-Quotient menu.

5.7-18 PqCompact
‣ PqCompact( i )( function )
‣ PqCompact( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to do a compaction of its work space. This function is safe to perform only at certain points in time.

Note: For those familiar with the pq program, PqCompact performs menu item 16 of the Advanced p-Quotient menu.

5.7-19 PqEchelonise
‣ PqEchelonise( i )( function )
‣ PqEchelonise( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to echelonise the word most recently collected by PqCollect or PqCommutator against the relations of the current pc presentation, and return the number of the generator made redundant or fail if no generator was made redundant. A call to PqCollect (see PqCollect (5.7-1)) or PqCommutator (see PqCommutator (5.7-3)) needs to be performed prior to using this command.

Note: For those familiar with the pq program, PqEchelonise performs menu item 17 of the Advanced p-Quotient menu.

5.7-20 PqSupplyAutomorphisms
‣ PqSupplyAutomorphisms( i, mlist )( function )
‣ PqSupplyAutomorphisms( mlist )( function )

for the ith or default interactive ANUPQ process, supply the automorphism data provided by the list mlist of matrices with non-negative integer coefficients. Each matrix in mlist describes one automorphism in the following way.

  • The rows of each matrix correspond to the pc generators of weight one.

  • Each row is the exponent vector of the image of the corresponding weight one generator under the respective automorphism.

Note: For those familiar with the pq program, PqSupplyAutomorphisms uses menu item 18 of the Advanced p-Quotient menu.

5.7-21 PqExtendAutomorphisms
‣ PqExtendAutomorphisms( i )( function )
‣ PqExtendAutomorphisms( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to extend automorphisms of the p-quotient of the previous class to the p-quotient of the present class.

Note: For those familiar with the pq program, PqExtendAutomorphisms uses menu item 18 of the Advanced p-Quotient menu.

5.7-22 PqApplyAutomorphisms
‣ PqApplyAutomorphisms( i, qfac )( function )
‣ PqApplyAutomorphisms( qfac )( function )

for the ith or default interactive ANUPQ process, direct the pq program to apply automorphisms; qfac is the queue factor e.g. 15.

Note: For those familiar with the pq program, PqCloseRelations performs menu item 19 of the Advanced p-Quotient menu.

5.7-23 PqDisplayStructure
‣ PqDisplayStructure( i: [Bounds := list] )( function )
‣ PqDisplayStructure( : [Bounds := list] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to display the structure for the pcp generators numbered (inclusively) between the bounds of Bounds or for all generators if Bounds is not given. The value list of Bounds (assuming the interactive process is numbered i) should be a list of two integers low, high satisfying 1 ≤ lowhigh PqNrPcGenerators(i) (see PqNrPcGenerators (5.5-1)). PqDisplayStructure also accepts the option OutputLevel (see 6.2).

Explanation of output

New generators are defined as commutators of previous generators and generators of class 1 or as p-th powers of generators that have themselves been defined as p-th powers. A generator is never defined as p-th power of a commutator.

Therefore, there are two cases: all the numbers on the righthand side are either the same or they differ. Below, gi refers to the ith defining generator.

  • If the righthand side numbers are all the same, then the generator is a p-th power (of a p-th power of a p-th power, etc.). The number of repeated digits say how often a p-th power has to be taken.

    In the following example, the generator number 31 is the eleventh power of generator 17 which in turn is an eleventh power and so on:

    \begintt #I 31 is defined on 17^11 = 1 1 1 1 1 \endtt So generator 31 is obtained by taking the eleventh power of generator 1 five times.

  • If the numbers are not all the same, the generator is defined by a commutator. If the first two generator numbers differ, the generator is defined as a left-normed commutator of the weight one generators, e.g.

    \begintt #I 19 is defined on [11, 1] = 2 1 1 1 1 \endtt Here, generator 19 is defined as the commutator of generator 11 and generator 1 which is the same as the left-normed commutator [x2, x1, x1, x1, x1]. One can check this by tracing back the definition of generator 11 until one gets to a generator of class 1.

  • If the first two generator numbers are identical, then the left most component of the left-normed commutator is a p-th power, e.g.

    \begintt #I 25 is defined on [14, 1] = 1 1 2 1 1 \endtt

    In this example, generator 25 is defined as commutator of generator 14 and generator 1. The left-normed commutator is

    [(x1^{11})^{11}, x2, x1, x1]

    Again, this can be verified by tracing back the definitions.

Note: For those familiar with the pq program, PqDisplayStructure performs menu item 20 of the Advanced p-Quotient menu.

5.7-24 PqDisplayAutomorphisms
‣ PqDisplayAutomorphisms( i: [Bounds := list] )( function )
‣ PqDisplayAutomorphisms( : [Bounds := list] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to display the automorphism actions on the pcp generators numbered (inclusively) between the bounds of Bounds or for all generators if Bounds is not given. The value list of Bounds (assuming the interactive process is numbered i) should be a list of two integers low, high satisfying 1 ≤ lowhigh PqNrPcGenerators(i) (see PqNrPcGenerators (5.5-1)). PqDisplayStructure also accepts the option OutputLevel (see 6.2).

Note: For those familiar with the pq program, PqDisplayAutomorphisms performs menu item 21 of the Advanced p-Quotient menu.

5.7-25 PqWritePcPresentation
‣ PqWritePcPresentation( i, filename )( function )
‣ PqWritePcPresentation( filename )( function )

for the ith or default interactive ANUPQ process, direct the pq program to write a pc presentation of a previously-computed quotient of the group of that process, to the file with name filename. Here the group of a process is the one given as first argument when PqStart was called to initiate that process (for process i the group is stored as ANUPQData.io[i].group). If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which GAP was started. If a pc presentation has not been previously computed by the pq program, then pq is called to compute it first, effectively invoking PqPcPresentation (see PqPcPresentation (5.6-1)).

Note: For those familiar with the pq program, PqPcWritePresentation performs menu item 25 of the Advanced p-Quotient menu.

5.8 Commands from the Standard Presentation menu

5.8-1 PqSPComputePcpAndPCover
‣ PqSPComputePcpAndPCover( i: options )( function )
‣ PqSPComputePcpAndPCover( : options )( function )

for the ith or default interactive ANUPQ process, directs the pq program to compute for the group of that process a pc presentation up to the p-quotient of maximum class or the value of the option ClassBound and the p-cover of that quotient, and sets up tabular information required for computation of a standard presentation. Here the group of a process is the one given as first argument when PqStart was called to initiate that process (for process i the group is stored as ANUPQData.io[i].group).

The possible options are Prime, ClassBound, Relators, Exponent, Metabelian and OutputLevel (see Chapter ANUPQ Options for detailed descriptions of these options). The option Prime is normally determined via PrimePGroup, and so is not required unless the group doesn't know it's a p-group and HasPrimePGroup returns false.

Note: For those familiar with the pq program, PqSPComputePcpAndPCover performs option 1 of the Standard Presentation menu.

5.8-2 PqSPStandardPresentation
‣ PqSPStandardPresentation( i[, mlist]: [options] )( function )
‣ PqSPStandardPresentation( [mlist]: [options] )( function )

for the ith or default interactive ANUPQ process, inputs data given by options to compute a standard presentation for the group of that process. If argument mlist is given it is assumed to be the automorphism group data required. Otherwise it is assumed that a call to either Pq (see Pq (5.3-1)) or PqEpimorphism (see PqEpimorphism (5.3-2)) has generated a p-quotient and that GAP can compute its automorphism group from which the necessary automorphism group data can be derived. The group of the process is the one given as first argument when PqStart was called to initiate the process (for process i the group is stored as ANUPQData.io[i].group and the p-quotient if existent is stored as ANUPQData.io[i].pQuotient). If mlist is not given and a p-quotient of the group has not been previously computed a class 1 p-quotient is computed.

PqSPStandardPresentation accepts three options, all optional:

  • ClassBound := n

  • PcgsAutomorphisms

  • StandardPresentationFile := filename

If ClassBound is omitted it defaults to 63.

Detailed descriptions of the above options may be found in Chapter ANUPQ Options.

Note: For those familiar with the pq program, PqSPPcPresentation performs menu item 2 of the Standard Presentation menu.

5.8-3 PqSPSavePresentation
‣ PqSPSavePresentation( i, filename )( function )
‣ PqSPSavePresentation( filename )( function )

for the ith or default interactive ANUPQ process, directs the pq program to save the standard presentation previously computed for the group of that process to the file with name filename, where the group of a process is the one given as first argument when PqStart was called to initiate that process. If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which GAP was started.

Note: For those familiar with the pq program, PqSPSavePresentation performs menu item 3 of the Standard Presentation menu.

5.8-4 PqSPCompareTwoFilePresentations
‣ PqSPCompareTwoFilePresentations( i, f1, f2 )( function )
‣ PqSPCompareTwoFilePresentations( f1, f2 )( function )

for the ith or default interactive ANUPQ process, direct the pq program to compare the presentations in the files with names f1 and f2 and returns true if they are identical and false otherwise. For each of the strings f1 and f2, if the first character is not a / then it is assumed to be the path of a readable file relative to the directory in which GAP was started.

Notes

The presentations in files f1 and f2 must have been generated by the pq program but they do not need to be standard presentations. If If the presentations in files f1 and f2 have been generated by PqSPStandardPresentation (see PqSPStandardPresentation (5.8-2)) then a false response from PqSPCompareTwoFilePresentations says the groups defined by those presentations are not isomorphic.

For those familiar with the pq program, PqSPCompareTwoFilePresentations performs menu item 6 of the Standard Presentation menu.

5.8-5 PqSPIsomorphism
‣ PqSPIsomorphism( i )( function )
‣ PqSPIsomorphism( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to compute the isomorphism mapping from the p-group of the process to its standard presentation. This function provides a description only; for a GAP object, use EpimorphismStandardPresentation (see EpimorphismStandardPresentation (5.3-5)).

Note: For those familiar with the pq program, PqSPIsomorphism performs menu item 8 of the Standard Presentation menu.

5.9 Commands from the Main p-Group Generation menu

Note that the p-group generation commands can only be applied once the pq program has produced a pc presentation of some quotient group of the "group of the process".

5.9-1 PqPGSupplyAutomorphisms
‣ PqPGSupplyAutomorphisms( i[, mlist]: options )( function )
‣ PqPGSupplyAutomorphisms( [mlist]: options )( function )

for the ith or default interactive ANUPQ process, supply the pq program with the automorphism group data needed for the current quotient of the group of that process (for process i the group is stored as ANUPQData.io[i].group). For a description of the format of mlist see PqSupplyAutomorphisms (5.7-20). The options possible are NumberOfSolubleAutomorphisms and RelativeOrders. (Detailed descriptions of these options may be found in Chapter ANUPQ Options.)

If mlist is omitted, the automorphism data is determined from the group of the process which must have been a p-group in pc presentation.

Note: For those familiar with the pq program, PqPGSupplyAutomorphisms performs menu item 1 of the main p-Group Generation menu.

5.9-2 PqPGExtendAutomorphisms
‣ PqPGExtendAutomorphisms( i )( function )
‣ PqPGExtendAutomorphisms( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to compute the extensions of the automorphisms of the p-quotient of the previous class to the p-quotient of the current class. You may wish to set the InfoLevel of InfoANUPQ to 2 (or more) in order to see the output from the pq program (see InfoANUPQ (3.3-1)).

Note: For those familiar with the pq program, PqPGExtendAutomorphisms performs menu item 2 of the main or advanced p-Group Generation menu.

5.9-3 PqPGConstructDescendants
‣ PqPGConstructDescendants( i: options )( function )
‣ PqPGConstructDescendants( : options )( function )

for the ith or default interactive ANUPQ process, direct the pq program to construct descendants prescribed by options, and return the number of descendants constructed (compare function PqDescendants (4.4-1) which returns the list of descendants). The options possible are ClassBound, OrderBound, StepSize, PcgsAutomorphisms, RankInitialSegmentSubgroups, SpaceEfficient, CapableDescendants, AllDescendants, Exponent, Metabelian, BasicAlgorithm, CustomiseOutput. (Detailed descriptions of these options may be found in Chapter ANUPQ Options.)

PqPGConstructDescendants requires that the pq program has previously computed a pc presentation and a p-cover for a p-quotient of some class of the group of the process.

Note: For those familiar with the pq program, PqPGConstructDescendants performs menu item 5 of the main p-Group Generation menu.

5.9-4 PqPGSetDescendantToPcp
‣ PqPGSetDescendantToPcp( i, cls, n )( function )
‣ PqPGSetDescendantToPcp( cls, n )( function )
‣ PqPGSetDescendantToPcp( i: [Filename := name] )( function )
‣ PqPGSetDescendantToPcp( : [Filename := name] )( function )
‣ PqPGRestoreDescendantFromFile( i, cls, n )( function )
‣ PqPGRestoreDescendantFromFile( cls, n )( function )
‣ PqPGRestoreDescendantFromFile( i: [Filename := name] )( function )
‣ PqPGRestoreDescendantFromFile( : [Filename := name] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to restore group n of class cls from a temporary file, where cls and n are positive integers, or the group stored in name. PqPGSetDescendantToPcp and PqPGRestoreDescendantFromFile are synonyms; they make sense only after a prior call to construct descendants by say PqPGConstructDescendants (see PqPGConstructDescendants (5.9-3)) or the interactive PqDescendants (see PqDescendants (5.3-6)). In the Filename option forms, the option defaults to the last filename in which a presentation was stored by the pq program.

Notes

Since the PqPGSetDescendantToPcp and PqPGRestoreDescendantFromFile are intended to be used in calculation of further descendants the pq program computes the p-cover of the restored descendant. Hence, PqCurrentGroup used immediately after one of these commands returns the p-cover of the restored descendant rather than the descendant itself.

For those familiar with the pq program, PqPGSetDescendantToPcp and PqPGRestoreDescendantFromFile perform menu item 3 of the main or advanced p-Group Generation menu.

5.10 Commands from the Advanced p-Group Generation menu

The functions below perform the component algorithms of PqPGConstructDescendants (see PqPGConstructDescendants (5.9-3)). You can get some idea of their usage by trying PqExample("Nott-APG-Rel-i");. You can get some idea of the breakdown of PqPGConstructDescendants into these functions by comparing the previous output with PqExample("Nott-PG-Rel-i");.

These functions are intended for use only by "experts"; please contact the authors of the package if you genuinely have a need for them and need any amplified descriptions.

5.10-1 PqAPGDegree
‣ PqAPGDegree( i, step, rank: [Exponent := n] )( function )
‣ PqAPGDegree( step, rank: [Exponent := n] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to invoke menu item 6 of the Advanced p-Group Generation menu. Here the step-size step and the rank rank are positive integers and are the arguments required by the pq program. See 6.2 for the one recognised option Exponent.

5.10-2 PqAPGPermutations
‣ PqAPGPermutations( i: options )( function )
‣ PqAPGPermutations( : options )( function )

for the ith or default interactive ANUPQ process, direct the pq program to perform menu item 7 of the Advanced p-Group Generation menu. Here the options options recognised are PcgsAutomorphisms, SpaceEfficient, PrintAutomorphisms and PrintPermutations (see Chapter ANUPQ Options for details).

5.10-3 PqAPGOrbits
‣ PqAPGOrbits( i: options )( function )
‣ PqAPGOrbits( : options )( function )

for the ith or default interactive ANUPQ process, direct the pq to perform menu item 8 of the Advanced p-Group Generation menu.

Here the options options recognised are PcgsAutomorphisms, SpaceEfficient and CustomiseOutput (see Chapter ANUPQ Options for details). For the CustomiseOutput option only the setting of the orbit is recognised (all other fields if set are ignored).

5.10-4 PqAPGOrbitRepresentatives
‣ PqAPGOrbitRepresentatives( i: options )( function )
‣ PqAPGOrbitRepresentatives( : options )( function )

for the ith or default interactive ANUPQ process, direct the pq to perform item 9 of the Advanced p-Group Generation menu.

The options options may be any selection of the following: PcgsAutomorphisms, SpaceEfficient, Exponent, Metabelian, CapableDescendants (or AllDescendants), CustomiseOutput (where only the group and autgroup fields are recognised) and Filename (see Chapter ANUPQ Options for details). If Filename is omitted the reduced p-cover is written to the file "redPCover" in the temporary directory whose name is stored in ANUPQData.tmpdir.

5.10-5 PqAPGSingleStage
‣ PqAPGSingleStage( i: options )( function )
‣ PqAPGSingleStage( : options )( function )

for the ith or default interactive ANUPQ process, direct the pq to perform option 5 of the Advanced p-Group Generation menu.

The possible options are StepSize, PcgsAutomorphisms, RankInitialSegmentSubgroups, SpaceEfficient, CapableDescendants, AllDescendants, Exponent, Metabelian, BasicAlgorithm and CustomiseOutput. (Detailed descriptions of these options may be found in Chapter ANUPQ Options.)

5.11 Primitive Interactive ANUPQ Process Read/Write Functions

For those familiar with using the pq program as a standalone we provide primitive read/write tools to communicate directly with an interactive ANUPQ process, started via PqStart. For the most part, it is up to the user to translate the output strings from pq program into a form useful in GAP.

5.11-1 PqRead
‣ PqRead( i )( function )
‣ PqRead( )( function )

read a complete line of ANUPQ output, from the ith or default interactive ANUPQ process, if there is output to be read and returns fail otherwise. When successful, the line is returned as a string complete with trailing newline, colon, or question-mark character. Please note that it is possible to be "too quick" (i.e. the return can be fail purely because the output from ANUPQ is not there yet), but if PqRead finds any output at all, it waits for a complete line. PqRead also writes the line read via Info at InfoANUPQ level 2. It doesn't try to distinguish banner and menu output from other output of the pq program.

5.11-2 PqReadAll
‣ PqReadAll( i )( function )
‣ PqReadAll( )( function )

read and return as many complete lines of ANUPQ output, from the ith or default interactive ANUPQ process, as there are to be read, at the time of the call, as a list of strings with any trailing newlines removed and returns the empty list otherwise. PqReadAll also writes each line read via Info at InfoANUPQ level 2. It doesn't try to distinguish banner and menu output from other output of the pq program. Whenever PqReadAll finds only a partial line, it waits for the complete line, thus increasing the probability that it has captured all the output to be had from ANUPQ.

5.11-3 PqReadUntil
‣ PqReadUntil( i, IsMyLine )( function )
‣ PqReadUntil( IsMyLine )( function )
‣ PqReadUntil( i, IsMyLine, Modify )( function )
‣ PqReadUntil( IsMyLine, Modify )( function )

read complete lines of ANUPQ output, from the ith or default interactive ANUPQ process, "chomps" them (i.e. removes any trailing newline character), emits them to Info at InfoANUPQ level 2 (without trying to distinguish banner and menu output from other output of the pq program), and applies the function Modify (where Modify is just the identity map/function for the first two forms) until a "chomped" line line for which IsMyLine( Modify(line) ) is true. PqReadUntil returns the list of Modify-ed "chomped" lines read.

Notes: When provided by the user, Modify should be a function that accepts a single string argument.

IsMyLine should be a function that is able to accept the output of Modify (or take a single string argument when Modify is not provided) and should return a boolean.

If IsMyLine( Modify(line) ) is never true, PqReadUntil will wait indefinitely.

5.11-4 PqWrite
‣ PqWrite( i, string )( function )
‣ PqWrite( string )( function )

write string to the ith or default interactive ANUPQ process; string must be in exactly the form the ANUPQ standalone expects. The command is echoed via Info at InfoANUPQ level 3 (with a "ToPQ> " prompt); i.e. do SetInfoLevel(InfoANUPQ, 3); to see what is transmitted to the pq program. PqWrite returns true if successful in writing to the stream of the interactive ANUPQ process, and fail otherwise.

Note: If PqWrite returns fail it means that the ANUPQ process has died.

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/examples.xml000644 000766 000024 00000073053 14355420571 016253 0ustar00mhornstaff000000 000000 Examples There are a large number of examples provided with the &ANUPQ; package. These may be executed or displayed via the function PqExample (see ). Each example resides in a file of the same name in the directory examples. Most of the examples are translations to &GAP; of examples provided for the pq standalone by Eamonn O'Brien; the standalone examples are found in directories standalone/examples (p-quotient and p-group generation examples) and standalone/isom (standard presentation examples). The first line of each example indicates its origin. All the examples seen in earlier chapters of this manual are also available as examples, in a slightly modified form (the example which one can run in order to see something very close to the text example live is always indicated near -- usually immediately after -- the text example). The format of the (PqExample) examples is such that they can be read by the standard Read function of &GAP;, but certain features and comments are interpreted by the function PqExample to do somewhat more than Read does. In particular, any function without a -i, -ni or .g suffix has both a non-interactive and interactive form; in these cases, the default form is the non-interactive form, and giving PqStart as second argument generates the interactive form.

Running PqExample without an argument or with a non-existent example Infos the available examples and some hints on usage: PqExample(); #I PqExample Index (Table of Contents) #I ----------------------------------- #I This table of possible examples is displayed when calling `PqExample' #I with no arguments, or with the argument: "index" (meant in the sense #I of ``list''), or with a non-existent example name. #I #I Examples that have a name ending in `-ni' are non-interactive only. #I Examples that have a name ending in `-i' are interactive only. #I Examples with names ending in `.g' also have only one form. Other #I examples have both a non-interactive and an interactive form; call #I `PqExample' with 2nd argument `PqStart' to get the interactive form #I of the example. The substring `PG' in an example name indicates a #I p-Group Generation example, `SP' indicates a Standard Presentation #I example, `Rel' indicates it uses the `Relators' option, and `Id' #I indicates it uses the `Identities' option. #I #I The following ANUPQ examples are available: #I #I p-Quotient examples: #I general: #I "Pq" "Pq-ni" "PqEpimorphism" #I "PqPCover" "PqSupplementInnerAutomorphisms" #I 2-groups: #I "2gp-Rel" "2gp-Rel-i" "2gp-a-Rel-i" #I "B2-4" "B2-4-Id" "B2-8-i" #I "B4-4-i" "B4-4-a-i" "B5-4.g" #I 3-groups: #I "3gp-Rel-i" "3gp-a-Rel" "3gp-a-Rel-i" #I "3gp-a-x-Rel-i" "3gp-maxoccur-Rel-i" #I 5-groups: #I "5gp-Rel-i" "5gp-a-Rel-i" "5gp-b-Rel-i" #I "5gp-c-Rel-i" "5gp-metabelian-Rel-i" "5gp-maxoccur-Rel-i" #I "F2-5-i" "B2-5-i" "R2-5-i" #I "R2-5-x-i" "B5-5-Engel3-Id" #I 7-groups: #I "7gp-Rel-i" #I 11-groups: #I "11gp-i" "11gp-Rel-i" "11gp-a-Rel-i" #I "11gp-3-Engel-Id" "11gp-3-Engel-Id-i" #I #I p-Group Generation examples: #I general: #I "PqDescendants-1" "PqDescendants-2" "PqDescendants-3" #I "PqDescendants-1-i" #I 2-groups: #I "2gp-PG-i" "2gp-PG-2-i" "2gp-PG-3-i" #I "2gp-PG-4-i" "2gp-PG-e4-i" #I "PqDescendantsTreeCoclassOne-16-i" #I 3-groups: #I "3gp-PG-i" "3gp-PG-4-i" "3gp-PG-x-i" #I "3gp-PG-x-1-i" "PqDescendants-treetraverse-i" #I "PqDescendantsTreeCoclassOne-9-i" #I 5-groups: #I "5gp-PG-i" "Nott-PG-Rel-i" "Nott-APG-Rel-i" #I "PqDescendantsTreeCoclassOne-25-i" #I 7,11-groups: #I "7gp-PG-i" "11gp-PG-i" #I #I Standard Presentation examples: #I general: #I "StandardPresentation" "StandardPresentation-i" #I "EpimorphismStandardPresentation" #I "EpimorphismStandardPresentation-i" "IsIsomorphicPGroup-ni" #I 2-groups: #I "2gp-SP-Rel-i" "2gp-SP-1-Rel-i" "2gp-SP-2-Rel-i" #I "2gp-SP-3-Rel-i" "2gp-SP-4-Rel-i" "2gp-SP-d-Rel-i" #I "gp-256-SP-Rel-i" "B2-4-SP-i" "G2-SP-Rel-i" #I 3-groups: #I "3gp-SP-Rel-i" "3gp-SP-1-Rel-i" "3gp-SP-2-Rel-i" #I "3gp-SP-3-Rel-i" "3gp-SP-4-Rel-i" "G3-SP-Rel-i" #I 5-groups: #I "5gp-SP-Rel-i" "5gp-SP-a-Rel-i" "5gp-SP-b-Rel-i" #I "5gp-SP-big-Rel-i" "5gp-SP-d-Rel-i" "G5-SP-Rel-i" #I "G5-SP-a-Rel-i" "Nott-SP-Rel-i" #I 7-groups: #I "7gp-SP-Rel-i" "7gp-SP-a-Rel-i" "7gp-SP-b-Rel-i" #I 11-groups: #I "11gp-SP-a-i" "11gp-SP-a-Rel-i" "11gp-SP-a-Rel-1-i" #I "11gp-SP-b-i" "11gp-SP-b-Rel-i" "11gp-SP-c-Rel-i" #I #I Notes #I ----- #I 1. The example (first) argument of `PqExample' is a string; each #I example above is in double quotes to remind you to include them. #I 2. Some examples accept options. To find out whether a particular #I example accepts options, display it first (by including `Display' #I as last argument) which will also indicate how `PqExample' #I interprets the options, e.g. `PqExample("11gp-SP-a-i", Display);'. #I 3. Try `SetInfoLevel(InfoANUPQ, );' for some in [2 .. 4] #I before calling PqExample, to see what's going on behind the scenes. #I ]]> If on your terminal you are unable to scroll back, an alternative to typing PqExample(); to see the displayed examples is to use on-line help, i.e.  you may type: ?anupq:examples ]]> which will display this appendix in a &GAP; session. If you are not fussed about the order in which the examples are organised, AllPqExamples(); lists the available examples relatively compactly (see ).

In the remainder of this appendix we will discuss particular aspects related to the Relators (see ) and Identities (see ) options, and the construction of the Burnside group B(5, 4).

The Relators Option The Relators option was included because computations involving words containing commutators that are pre-expanded by &GAP; before being passed to the pq program may run considerably more slowly, than the same computations being run with &GAP; pre-expansions avoided. The following examples demonstrate a case where the performance hit due to pre-expansion of commutators by &GAP; is a factor of order 100 (in order to see timing information from the pq program, we set the InfoANUPQ level to 2).

Firstly, we run the example that allows pre-expansion of commutators (the function PqLeftNormComm is provided by the &ANUPQ; package; see ). Note that since the two commutators of this example are very long (taking more than an page to print), we have edited the output at this point. SetInfoLevel(InfoANUPQ, 2); #to see timing information gap> PqExample("11gp-i"); #I #Example: "11gp-i" . . . based on: examples/11gp #I F, a, b, c, R, procId are local to `PqExample' gap> F := FreeGroup("a", "b", "c"); a := F.1; b := F.2; c := F.3; a b c gap> R := [PqLeftNormComm([b, a, a, b, c])^11, > PqLeftNormComm([a, b, b, a, b, c])^11, (a * b)^11];; gap> procId := PqStart(F/R : Prime := 11); 1 gap> PqPcPresentation(procId : ClassBound := 7, > OutputLevel := 1); #I Lower exponent-11 central series for [grp] #I Group: [grp] to lower exponent-11 central class 1 has order 11^3 #I Group: [grp] to lower exponent-11 central class 2 has order 11^8 #I Group: [grp] to lower exponent-11 central class 3 has order 11^19 #I Group: [grp] to lower exponent-11 central class 4 has order 11^42 #I Group: [grp] to lower exponent-11 central class 5 has order 11^98 #I Group: [grp] to lower exponent-11 central class 6 has order 11^228 #I Group: [grp] to lower exponent-11 central class 7 has order 11^563 #I Computation of presentation took 27.04 seconds gap> PqSavePcPresentation(procId, ANUPQData.outfile); #I Variables used in `PqExample' are saved in `ANUPQData.example.vars'. ]]> Now we do the same calculation using the Relators option. In this way, the commutators are passed directly as strings to the pq program, so that &GAP; does not see them and pre-expand them. PqExample("11gp-Rel-i"); #I #Example: "11gp-Rel-i" . . . based on: examples/11gp #I #(equivalent to "11gp-i" example but uses `Relators' option) #I F, rels, procId are local to `PqExample' gap> F := FreeGroup("a", "b", "c"); gap> rels := ["[b, a, a, b, c]^11", "[a, b, b, a, b, c]^11", "(a * b)^11"]; [ "[b, a, a, b, c]^11", "[a, b, b, a, b, c]^11", "(a * b)^11" ] gap> procId := PqStart(F : Prime := 11, Relators := rels); 2 gap> PqPcPresentation(procId : ClassBound := 7, > OutputLevel := 1); #I Relators parsed ok. #I Lower exponent-11 central series for [grp] #I Group: [grp] to lower exponent-11 central class 1 has order 11^3 #I Group: [grp] to lower exponent-11 central class 2 has order 11^8 #I Group: [grp] to lower exponent-11 central class 3 has order 11^19 #I Group: [grp] to lower exponent-11 central class 4 has order 11^42 #I Group: [grp] to lower exponent-11 central class 5 has order 11^98 #I Group: [grp] to lower exponent-11 central class 6 has order 11^228 #I Group: [grp] to lower exponent-11 central class 7 has order 11^563 #I Computation of presentation took 0.27 seconds gap> PqSavePcPresentation(procId, ANUPQData.outfile); #I Variables used in `PqExample' are saved in `ANUPQData.example.vars'. ]]>

The Identities Option and PqEvaluateIdentities Function Please pay heed to the warnings given for the Identities option (see ); it is written mainly at the &GAP; level and is not particularly optimised. The Identities option allows one to compute p-quotients that satisfy an identity. A trivial example better done using the Exponent option, but which nevertheless demonstrates the usage of the Identities option, is as follows: SetInfoLevel(InfoANUPQ, 1); gap> PqExample("B2-4-Id"); #I #Example: "B2-4-Id" . . . alternative way to generate B(2, 4) #I #Generates B(2, 4) by using the `Identities' option #I #... this is not as efficient as using `Exponent' but #I #demonstrates the usage of the `Identities' option. #I F, f, procId are local to `PqExample' gap> F := FreeGroup("a", "b"); gap> # All words w in the pc generators of B(2, 4) satisfy f(w) = 1 gap> f := w -> w^4; function( w ) ... end gap> Pq( F : Prime := 2, Identities := [ f ] ); #I Class 1 with 2 generators. #I Class 2 with 5 generators. #I Class 3 with 7 generators. #I Class 4 with 10 generators. #I Class 5 with 12 generators. #I Class 5 with 12 generators. #I Variables used in `PqExample' are saved in `ANUPQData.example.vars'. gap> time; 1400 ]]> Note that the time statement gives the time in milliseconds spent by &GAP; in executing the PqExample("B2-4-Id"); command (i.e. everything up to the Info-ing of the variables used), but over 90% of that time is spent in the final Pq statement. The time spent by the pq program, which is negligible anyway (you can check this by running the example while the InfoANUPQ level is set to 2), is not counted by time.

Since the identity used in the above construction of B(2, 4) is just an exponent law, the right way to compute it is via the Exponent option (see ), which is implemented at the C level and is highly optimised. Consequently, the Exponent option is significantly faster, generally by several orders of magnitude: SetInfoLevel(InfoANUPQ, 2); # to see time spent by the `pq' program gap> PqExample("B2-4"); #I #Example: "B2-4" . . . the ``right'' way to generate B(2, 4) #I #Generates B(2, 4) by using the `Exponent' option #I F, procId are local to `PqExample' gap> F := FreeGroup("a", "b"); gap> Pq( F : Prime := 2, Exponent := 4 ); #I Computation of presentation took 0.00 seconds #I Variables used in `PqExample' are saved in `ANUPQData.example.vars'. gap> time; # time spent by GAP in executing `PqExample("B2-4");' 50 ]]> The following example uses the Identities option to compute a 3-Engel group for the prime 11. As is the case for the example "B2-4-Id", the example has both a non-interactive and an interactive form; below, we demonstrate the interactive form. SetInfoLevel(InfoANUPQ, 1); # reset InfoANUPQ to default level gap> PqExample("11gp-3-Engel-Id", PqStart); #I #Example: "11gp-3-Engel-Id" . . . 3-Engel group for prime 11 #I #Non-trivial example of using the `Identities' option #I F, a, b, G, f, procId, Q are local to `PqExample' gap> F := FreeGroup("a", "b"); a := F.1; b := F.2; a b gap> G := F/[ a^11, b^11 ]; gap> # All word pairs u, v in the pc generators of the 11-quotient Q of G gap> # must satisfy the Engel identity: [u, v, v, v] = 1. gap> f := function(u, v) return PqLeftNormComm( [u, v, v, v] ); end; function( u, v ) ... end gap> procId := PqStart( G ); 3 gap> Q := Pq( procId : Prime := 11, Identities := [ f ] ); #I Class 1 with 2 generators. #I Class 2 with 3 generators. #I Class 3 with 5 generators. #I Class 3 with 5 generators. gap> # We do a ``sample'' check that pairs of elements of Q do satisfy gap> # the given identity: gap> f( Random(Q), Random(Q) ); of ... gap> f( Q.1, Q.2 ); of ... #I Variables used in `PqExample' are saved in `ANUPQData.example.vars'. ]]> The (interactive) call to Pq above is essentially equivalent to a call to PqPcPresentation with the same arguments and options followed by a call to PqCurrentGroup. Moreover, the call to PqPcPresentation (as described in ) is equivalent to a class 1 call to PqPcPresentation followed by the requisite number of calls to PqNextClass, and with the Identities option set, both PqPcPresentation and PqNextClass quietly perform the equivalent of a PqEvaluateIdentities call. In the following example we break down the Pq call into its low-level equivalents, and set and unset the Identities option to show where PqEvaluateIdentities fits into this scheme. PqExample("11gp-3-Engel-Id-i"); #I #Example: "11gp-3-Engel-Id-i" . . . 3-Engel grp for prime 11 #I #Variation of "11gp-3-Engel-Id" broken down into its lower-level component #I #command parts. #I F, a, b, G, f, procId, Q are local to `PqExample' gap> F := FreeGroup("a", "b"); a := F.1; b := F.2; a b gap> G := F/[ a^11, b^11 ]; gap> # All word pairs u, v in the pc generators of the 11-quotient Q of G gap> # must satisfy the Engel identity: [u, v, v, v] = 1. gap> f := function(u, v) return PqLeftNormComm( [u, v, v, v] ); end; function( u, v ) ... end gap> procId := PqStart( G : Prime := 11 ); 4 gap> PqPcPresentation( procId : ClassBound := 1); gap> PqEvaluateIdentities( procId : Identities := [f] ); #I Class 1 with 2 generators. gap> for c in [2 .. 4] do > PqNextClass( procId : Identities := [] ); #reset `Identities' option > PqEvaluateIdentities( procId : Identities := [f] ); > od; #I Class 2 with 3 generators. #I Class 3 with 5 generators. #I Class 3 with 5 generators. gap> Q := PqCurrentGroup( procId ); gap> # We do a ``sample'' check that pairs of elements of Q do satisfy gap> # the given identity: gap> f( Random(Q), Random(Q) ); of ... gap> f( Q.1, Q.2 ); of ... #I Variables used in `PqExample' are saved in `ANUPQData.example.vars'. ]]>

A Large Example B(5,4) An example demonstrating how a large computation can be organised with the &ANUPQ; package is the computation of the Burnside group B(5, 4), the largest group of exponent 4 generated by 5 elements. It has order 2^{2728} and lower exponent-p central class 13. The example "B5-4.g" computes B(5, 4); it is based on a pq standalone input file written by M. F. Newman.

To be able to do examples like this was part of the motivation to provide access to the low-level functions of the standalone program from within &GAP;.

Please note that the construction uses the knowledge gained by Newman and O'Brien in their initial construction of B(5, 4), in particular, insight into the commutator structure of the group and the knowledge of the p-central class and the order of B(5, 4). Therefore, the construction cannot be used to prove that B(5, 4) has the order and class mentioned above. It is merely a reconstruction of the group. More information is contained in the header of the file examples/B5-4.g. [] then # recalculate automorphisms PqExtendAutomorphisms( procId ); for r in Relations[ w ] do Print( "Collecting ", r, "\n" ); PqCommutator( procId, r, 1 ); PqEchelonise( procId ); PqApplyAutomorphisms( procId, 15 ); #queue factor = 15 od; PqEliminateRedundantGenerators( procId ); fi; PqComputeTails( procId, w ); od; PqDisplayPcPresentation( procId ); smallclass := Minimum( class, 6 ); for w in [ smallclass, smallclass-1 .. 2 ] do PqTails( procId, w ); od; # recalculate automorphisms PqExtendAutomorphisms( procId ); PqCollect( procId, "x5^4" ); PqEchelonise( procId ); PqApplyAutomorphisms( procId, 15 ); #queue factor = 15 PqEliminateRedundantGenerators( procId ); PqDisplayPcPresentation( procId ); od; ]]>

Developing descendants trees In the following example we will explore the 3-groups of rank 2 and 3-coclass 1 up to 3-class 5. This will be done using the p-group generation machinery of the package. We start with the elementary abelian 3-group of rank 2. From within &GAP;, run the example "PqDescendants-treetraverse-i" via PqExample (see ). G := ElementaryAbelianGroup( 9 ); gap> procId := PqStart( G ); 5 gap> # gap> # Below, we use the option StepSize in order to construct descendants gap> # of coclass 1. This is equivalent to setting the StepSize to 1 in gap> # each descendant calculation. gap> # gap> # The elementary abelian group of order 9 has 3 descendants of gap> # 3-class 2 and 3-coclass 1, as the result of the next command gap> # shows. gap> # gap> PqDescendants( procId : StepSize := 1 ); [ , , ] gap> # gap> # Now we will compute the descendants of coclass 1 for each of the gap> # groups above. Then we will compute the descendants of coclass 1 gap> # of each descendant and so on. Note that the pq program keeps gap> # one file for each class at a time. For example, the descendants gap> # calculation for the second group of class 2 overwrites the gap> # descendant file obtained from the first group of class 2. gap> # Hence, we have to traverse the descendants tree in depth first gap> # order. gap> # gap> PqPGSetDescendantToPcp( procId, 2, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 2 gap> PqPGSetDescendantToPcp( procId, 3, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 2 gap> PqPGSetDescendantToPcp( procId, 4, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 2 gap> # gap> # At this point we stop traversing the ``left most'' branch of the gap> # descendants tree and move upwards. gap> # gap> PqPGSetDescendantToPcp( procId, 4, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> PqPGSetDescendantToPcp( procId, 3, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> # gap> # The computations above indicate that the descendants subtree under gap> # the first descendant of the elementary abelian group of order 9 gap> # will have only one path of infinite length. gap> # gap> PqPGSetDescendantToPcp( procId, 2, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 4 gap> # gap> # We get four descendants here, three of which will turn out to be gap> # incapable, i.e., they have no descendants and are terminal nodes gap> # in the descendants tree. gap> # gap> PqPGSetDescendantToPcp( procId, 2, 3 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> # gap> # The third descendant of class three is incapable. Let us return gap> # to the second descendant of class 2. gap> # gap> PqPGSetDescendantToPcp( procId, 2, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 4 gap> PqPGSetDescendantToPcp( procId, 3, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> PqPGSetDescendantToPcp( procId, 3, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> # gap> # We skip the third descendant for the moment ... gap> # gap> PqPGSetDescendantToPcp( procId, 3, 4 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> # gap> # ... and look at it now. gap> # gap> PqPGSetDescendantToPcp( procId, 3, 3 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 6 gap> # gap> # In this branch of the descendant tree we get 6 descendants of class gap> # three. Of those 5 will turn out to be incapable and one will have gap> # 7 descendants. gap> # gap> PqPGSetDescendantToPcp( procId, 4, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> PqPGSetDescendantToPcp( procId, 4, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 7 gap> PqPGSetDescendantToPcp( procId, 4, 3 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 ]]> To automate the above procedure to some extent we provide: for the ith or default interactive &ANUPQ; process, generate a descendant tree for the group of the process (which must be a pc p-group) consisting of descendants of p-coclass 1 and extending to the class determined by the option TreeDepth (or 6 if the option is omitted). In an &XGAP; session, a graphical representation of the descendants tree appears in a separate window. Subsequent calls to PqDescendantsTreeCoclassOne for the same process may be used to extend the descendant tree from the last descendant computed that itself has more than one descendant. PqDescendantsTreeCoclassOne also accepts the options CapableDescendants (or AllDescendants) and any options accepted by the interactive PqDescendants function (see ).

Notes PqDescendantsTreeCoclassOne first calls PqDescendants. If PqDescendants has already been called for the process, the previous value computed is used and a warning is Info-ed at InfoANUPQ level 1. As each descendant is processed its unique label defined by the pq program and number of descendants is Info-ed at InfoANUPQ level 1. PqDescendantsTreeCoclassOne is an experimental function that is included to demonstrate the sort of things that are possible with the p-group generation machinery. Ignoring the extra functionality provided in an &XGAP; session, PqDescendantsTreeCoclassOne, with one argument that is the index of an interactive &ANUPQ; process, is approximately equivalent to:

where RecurseDescendants is (approximately) defined as follows: ValueOption("TreeDepth") then return; fi; for i in [1..n] do PqPGSetDescendantToPcp( procId, class, i ); PqPGExtendAutomorphisms( procId ); nr := PqPGConstructDescendants( procId : StepSize := 1 ); Print( "Number of descendants of group ", i, " at class ", class, ": ", nr, "\n" ); RecurseDescendants( procId, class+1, nr ); od; return; end; ]]> The following examples (executed via PqExample; see ), demonstrate the use of PqDescendantsTreeCoclassOne: "PqDescendantsTreeCoclassOne-9-i" approximately does example "PqDescendants-treetraverse-i" again using PqDescendantsTreeCoclassOne; "PqDescendantsTreeCoclassOne-16-i" uses the option CapableDescendants; and "PqDescendantsTreeCoclassOne-25-i" calculates all descendants by omitting the CapableDescendants option. The numbers 9, 16 and 25 respectively, indicate the order of the elementary abelian group to which PqDescendantsTreeCoclassOne is applied for these examples.
anupq-3.3.0/doc/non-interact.xml000644 000766 000024 00000103145 14355420571 017032 0ustar00mhornstaff000000 000000 Non-interactive ANUPQ functions Here we describe all the non-interactive functions of the &ANUPQ; package; i.e. one-shot functions that invoke the pq program in such a way that once &GAP; has got what it needs, the pq program is allowed to exit. It is expected that most of the time users will only need these functions. The functions interface with three of the four algorithms (see Chapter ) provided by the ANU pq C program, and are mainly grouped according to the algorithm of the pq program they relate to.

In Section , we describe the functions that give access to the p-quotient algorithm.

Section  describe functions that give access to the standard presentation algorithm.

Section  describe functions that implement an isomorphism test for p-groups using the standard presentation algorithm.

In Section , we describe functions that give access to the p-group generation algorithm.

To use any of the functions one must have at some stage previously typed: LoadPackage("anupq"); ]]> (the response of which we have omitted; see ).

It is strongly recommended that the user try the examples provided. To save typing there is a PqExample equivalent for each manual example. We also suggest that to start with you may find the examples more instructive if you set the InfoANUPQ level to 2 (see ).

Computing p-Quotients returns for the fp or pc group F, the p-quotient of F specified by options, as a pc group. Following the colon, options is a selection of the options from the following list, separated by commas like record components (see Section  in the &GAP; Reference Manual). As a minimum the user must supply a value for the Prime option. Below we list the options recognised by Pq (see Chapter  for detailed descriptions). Prime := poption Prime ClassBound := noption ClassBound Exponent := noption Exponent Relators := relsoption Relators Metabelianoption Metabelian Identities := funcsoption Identities GroupName := nameoption GroupName OutputLevel := noption OutputLevel SetupFile := filenameoption SetupFile PqWorkspace := workspaceoption PqWorkspace Notes: Pq may also be called with no arguments or one integer argument, in which case it is being used interactively (see ); the same options may be used, except that SetupFile and PqWorkspace are ignored by the interactive Pq function.

See Section  for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the group returned by Pq.

See also PqEpimorphism ().

We now give a few examples of the use of Pq. Except for the addition of a few comments and the non-suppression of output (by not using duplicated semicolons) the next 3 examples may be run by typing: PqExample( "Pq" ); (see ). LoadPackage("anupq");; # does nothing if ANUPQ is already loaded gap> # First we get a p-quotient of a free group of rank 2 gap> F := FreeGroup("a", "b");; a := F.1;; b := F.2;; gap> Pq( F : Prime := 2, ClassBound := 3 ); gap> # Now let us get a p-quotient of an fp group gap> G := F / [a^4, b^4]; gap> Pq( G : Prime := 2, ClassBound := 3 ); gap> # Now let's get a different p-quotient of the same group gap> Pq( G : Prime := 2, ClassBound := 3, Exponent := 4 ); gap> # Now we'll get a p-quotient of another fp group gap> # which we will redo using the `Relators' option gap> R := [ a^25, Comm(Comm(b, a), a), b^5 ]; [ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ] gap> H := F / R; gap> Pq( H : Prime := 5, ClassBound := 5, Metabelian ); ]]> option Relators Now we redo the last example to show how one may use the Relators option. Observe that Comm(Comm(b, a), a) is a left normed commutator which must be written in square bracket notation for the pq program and embedded in a pair of double quotes. The function PqGAPRelators (see ) can be used to translate a list of strings prepared for the Relators option into &GAP; format. Below we use it. Observe that the value of R is the same as before. F := FreeGroup("a", "b");; gap> # `F' was defined for `Relators'. We use the same strings that GAP uses gap> # for printing the free group generators. It is *not* necessary to gap> # predefine: a := F.1; etc. (as it was above). gap> rels := [ "a^25", "[b, a, a]", "b^5" ]; [ "a^25", "[b, a, a]", "b^5" ] gap> R := PqGAPRelators(F, rels); [ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ] gap> H := F / R; gap> Pq( H : Prime := 5, ClassBound := 5, Metabelian, > Relators := rels ); ]]> In fact, above we could have just passed F (rather than H), i.e. we could have done: F := FreeGroup("a", "b");; gap> rels := [ "a^25", "[b, a, a]", "b^5" ]; [ "a^25", "[b, a, a]", "b^5" ] gap> Pq( F : Prime := 5, ClassBound := 5, Metabelian, > Relators := rels ); ]]> The non-interactive Pq function also allows the options to be passed in two other ways; these alternatives have been included for those familiar with the &GAP; 3 version of the &ANUPQ; package; the preferred method of passing options is the one already described. Firstly, they may be passed in a record as a second argument; note that any boolean options must be set explicitly e.g. Pq( H, rec( Prime := 5, ClassBound := 5, Metabelian := true ) ); ]]> It is also possible to pass them as extra arguments, where each option name appears as a string followed immediately by its value (if not a boolean option) e.g. Pq( H, "Prime", 5, "ClassBound", 5, "Metabelian" ); ]]> The preceding two examples can be run from &GAP; via PqExample( "Pq-ni" ); (see ).

This method of passing options permits abbreviation; the only restriction is that the abbreviation must be unique. So "Pr" may be used for "Prime", "Class" or even just "C" for "ClassBound", etc.

option Identities The following example illustrates the use of the option Identities. We compute the largest finite Burnside group of exponent 5 that also satisfies the 3-Engel identity. Each identity is defined by a function whose arguments correspond to the variables of the identity. The return value of each of those functions is the identity evaluated on the arguments of the function. F := FreeGroup(2); gap> Burnside5 := x->x^5; function( x ) ... end gap> Engel3 := function( x,y ) return PqLeftNormComm( [x,y,y,y] ); end; function( x, y ) ... end gap> Pq( F : Prime := 5, Identities := [ Burnside5, Engel3 ] ); #I Class 1 with 2 generators. #I Class 2 with 3 generators. #I Class 3 with 5 generators. #I Class 3 with 5 generators. ]]> The above example can be run from &GAP; via PqExample( "B5-5-Engel3-Id" ); (see ). returns for the fp or pc group F an epimorphism from F onto the p-quotient of F specified by options; the possible options options and required option ("Prime") are as for Pq (see ). PqEpimorphism only differs from Pq in what it outputs; everything about what must/may be passed as input to PqEpimorphism is the same as for Pq. The same alternative methods of passing options to the non-interactive Pq function are available to the non-interactive version of PqEpimorphism.

Notes: PqEpimorphism may also be called with no arguments or one integer argument, in which case it is being used interactively (see ), and the options SetupFile and PqWorkspace are ignored by the interactive PqEpimorphism function.

See Section  for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the image group of the epimorphism returned by PqEpimorphism. F := FreeGroup (2, "F"); gap> phi := PqEpimorphism( F : Prime := 5, ClassBound := 2 ); [ F1, F2 ] -> [ f1, f2 ] gap> Image( phi ); ]]> Typing: PqExample( "PqEpimorphism" ); runs the above example in &GAP; (see ). returns for the fp or pc group F, the p-covering group of the p-quotient of F specified by options, as a pc group, i.e. the p-covering group of the p-quotient Pq( F : options ). Thus the options that PqPCover accepts are exactly those expected for Pq (and hence as a minimum the user must supply a value for the Prime option; see  for more details), except in the following special case.

If F is already a p-group, in the sense that IsPGroup(F) is true, then Prime defaults to PrimePGroup(F), if not supplied and HasPrimePGroup(F) = true; and ClassBound defaults to PClassPGroup(F) if HasPClassPGroup(F) = true if not supplied, or to the usual default of 63, otherwise. The same alternative methods of passing options to the non-interactive Pq function are available to the non-interactive version of PqPCover.

We now give a few examples of the use of PqPCover. These examples are just a subset of the ones we gave for Pq (see ), except that in each instance the command Pq has been replaced with PqPCover. Essentially the same examples may be run by typing: PqExample( "PqPCover" ); (see ). F := FreeGroup("a", "b");; a := F.1;; b := F.2;; gap> PqPCover( F : Prime := 2, ClassBound := 3 ); gap> gap> # Now let's get a p-cover of a p-quotient of an fp group gap> G := F / [a^4, b^4]; gap> PqPCover( G : Prime := 2, ClassBound := 3 ); gap> gap> # Now let's get a p-cover of a different p-quotient of the same group gap> PqPCover( G : Prime := 2, ClassBound := 3, Exponent := 4 ); gap> gap> # Now we'll get a p-cover of a p-quotient of another fp group gap> # which we will redo using the `Relators' option gap> R := [ a^25, Comm(Comm(b, a), a), b^5 ]; [ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ] gap> H := F / R; gap> PqPCover( H : Prime := 5, ClassBound := 5, Metabelian ); gap> gap> # Now we redo the previous example using the `Relators' option gap> F := FreeGroup("a", "b");; gap> rels := [ "a^25", "[b, a, a]", "b^5" ]; [ "a^25", "[b, a, a]", "b^5" ] gap> PqPCover( F : Prime := 5, ClassBound := 5, Metabelian, > Relators := rels ); ]]>

Computing Standard Presentations automorphismsof p-groups return the p-quotient specified by options of the fp or pc p-group F, as an fp group which has a standard presentation. Here options is a selection of the options from the following list (see Chapter  for detailed descriptions). Section  gives some important hints and warnings regarding option usage, and Section  in the &GAP; Reference Manual describes their record-like syntax. Prime := poption Prime pQuotient := Qoption pQuotient ClassBound := noption ClassBound Exponent := noption Exponent Metabelianoption Metabelian GroupName := nameoption GroupName OutputLevel := noption OutputLevel StandardPresentationFile := filenameoption StandardPresentationFile SetupFile := filenameoption SetupFile PqWorkspace := workspaceoption PqWorkspace Unless F is a pc p-group, the user must supply either the option Prime or the option pQuotient (if both Prime and pQuotient are supplied, the prime p is determined by applying PrimePGroup (see  in the Reference Manual) to the value of pQuotient).

The options for PqStandardPresentation may also be passed in the two other alternative ways described for Pq (see ). StandardPresentation does not provide these alternative ways of passing options.

Notes: In contrast to the function Pq (see ) which returns a pc group, PqStandardPresentation or StandardPresentation returns an fp group. This is because the output is mainly used for isomorphism testing for which an fp group is enough. However, the presentation is a polycyclic presentation and if you need to do any further computation with this group (e.g. to find the order) you can use the function PcGroupFpGroup (see  in the &GAP; Reference Manual) to form a pc group.

If the user does not supply a p-quotient Q via the pQuotient option and the prime p is either supplied or F is a pc p-group, then a p-quotient Q is computed. If the user does supply a p-quotient Q via the pQuotient option, the package &AutPGrp; is called to compute the automorphism group of Q; an error will occur that asks the user to install the package &AutPGrp; if the automorphism group cannot be computed.

The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for the group returned by PqStandardPresentation or StandardPresentation (see Section ).

We illustrate the method with the following examples. F := FreeGroup( "a", "b" );; a := F.1;; b := F.2;; gap> G := F / [a^25, Comm(Comm(b, a), a), b^5]; gap> S := StandardPresentation( G : Prime := 5, ClassBound := 10 ); gap> IsPcGroup( S ); false gap> # if we need to compute with S we should convert it to a pc group gap> Spc := PcGroupFpGroup( S ); gap> gap> H := F / [ a^625, Comm(Comm(Comm(Comm(b, a), a), a), a)/Comm(b, a)^5, > Comm(Comm(b, a), b), b^625 ];; gap> StandardPresentation( H : Prime := 5, ClassBound := 15, Metabelian ); gap> gap> F4 := FreeGroup( "a", "b", "c", "d" );; gap> a := F4.1;; b := F4.2;; c := F4.3;; d := F4.4;; gap> G4 := F4 / [ b^4, b^2 / Comm(Comm (b, a), a), d^16, > a^16 / (c * d), b^8 / (d * c^4) ]; gap> K := Pq( G4 : Prime := 2, ClassBound := 1 ); gap> StandardPresentation( G4 : pQuotient := K, ClassBound := 14 ); ]]> Typing: PqExample( "StandardPresentation" ); runs the above example in &GAP; (see ). Each of the above functions accepts the same arguments and options as the function StandardPresentation (see ) and returns an epimorphism from the fp or pc group F onto the finitely presented group given by a standard presentation, i.e. if S is the standard presentation computed for the p-quotient of F by StandardPresentation then EpimorphismStandardPresentation returns the epimorphism from F to the group with presentation S.

Note: The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for the image group of the epimorphism returned by EpimorphismPqStandardPresentation or EpimorphismStandardPresentation (see Section ).

We illustrate the function with the following example. F := FreeGroup(6, "F"); gap> # For printing GAP uses the symbols F1, ... for the generators of F gap> x := F.1;; y := F.2;; z := F.3;; w := F.4;; a := F.5;; b := F.6;; gap> R := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b, > Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ];; gap> Q := F / R; gap> # For printing GAP also uses the symbols F1, ... for the generators of Q gap> # (the same as used for F) ... but the gen'rs of Q and F are different: gap> GeneratorsOfGroup(F) = GeneratorsOfGroup(Q); false gap> G := Pq( Q : Prime := 3, ClassBound := 3 ); gap> phi := EpimorphismStandardPresentation( Q : Prime := 3, > ClassBound := 3 ); [ F1, F2, F3, F4, F5, F6 ] -> [ f1*f2^2*f3*f4^2*f5^2, f1*f2*f3*f5, f3^2, f4*f6^2, f5, f6 ] gap> Source(phi); # This is the group Q (GAP uses F1, ... for gen'r symbols) gap> Range(phi); # This is the group G (GAP uses f1, ... for gen'r symbols) gap> AssignGeneratorVariables(G); #I Assigned the global variables [ f1, f2, f3, f4, f5, f6 ] gap> # Just to see that the images of [F1, ..., F6] do generate G gap> Group([ f1*f2^2*f3, f1*f2*f3*f4*f5^2*f6^2, f3^2, f4, f5, f6 ]) = G; true gap> Size( Image(phi) ); 729 ]]> Typing: PqExample( "EpimorphismStandardPresentation" ); runs the above example in &GAP; (see ). Note that AssignGeneratorVariables (see ) has only been available since &GAP; 4.3.

Testing p-Groups for Isomorphism each return true if G is isomorphic to H, where both G and H must be pc groups of prime power order. These functions compute and compare in &GAP; the fp groups given by standard presentations for G and H (see ). G := Group( (1,2,3,4), (1,3) ); Group([ (1,2,3,4), (1,3) ]) gap> P1 := Image( IsomorphismPcGroup( G ) ); Group([ f1, f2, f3 ]) gap> P2 := SmallGroup( 8, 5 ); gap> IsIsomorphicPGroup( P1, P2 ); false gap> P3 := SmallGroup( 8, 4 ); gap> IsIsomorphicPGroup( P1, P3 ); false gap> P4 := SmallGroup( 8, 3 ); gap> IsIsomorphicPGroup( P1, P4 ); true ]]> Typing: PqExample( "IsIsomorphicPGroup" ); runs the above example in &GAP; (see ).
Computing Descendants of a p-Group returns, for the pc group G which must be of prime power order with a confluent pc presentation (see  in the &GAP; Reference Manual), a list of descendants (pc groups) of G. Following the colon options a selection of the options listed below should be given, separated by commas like record components (see Section  in the &GAP; Reference Manual). See Chapter  for detailed descriptions of the options.

The automorphism group of each descendant D is also computed via a call to the AutomorphismGroupPGroup function of the &AutPGrp; package. ClassBound := noption ClassBound Relators := relsoption Relators OrderBound := noption OrderBound StepSize := n, StepSize := list option StepSize RankInitialSegmentSubgroups := noption RankInitialSegmentSubgroups SpaceEfficientoption SpaceEfficient CapableDescendantsoption CapableDescendants AllDescendants := falseoption AllDescendants Exponent := noption Exponent Metabelianoption Metabelian GroupName := nameoption GroupName SubList := suboption SubList BasicAlgorithmoption BasicAlgorithm CustomiseOutput := recoption CustomiseOutput SetupFile := filenameoption SetupFile PqWorkspace := workspaceoption PqWorkspace Notes: The function PqDescendants uses the automorphism group of G which it computes via the package &AutPGrp;. If this package is not installed an error may be raised. If the automorphism group of G is insoluble, the pq program will call &GAP; together with the &AutPGrp; package for certain orbit-stabilizer calculations. (So, in any case, one should ensure the &AutPGrp; package is installed.)

The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for each group of the list returned by PqDescendants (see Section ).

The options options for PqDescendants may be passed in an alternative manner to that already described, namely you can pass PqDescendants a record as an argument, which contains as entries some (or all) of the above mentioned. Those parameters which do not occur in the record are set to their default values.

Note that you cannot set both OrderBound and StepSize.

In the first example we compute all descendants of the Klein four group which have exponent-2 class at most 5 and order at most 2^6. F := FreeGroup( "a", "b" );; a := F.1;; b := F.2;; gap> G := PcGroupFpGroup( F / [ a^2, b^2, Comm(b, a) ] ); gap> des := PqDescendants( G : OrderBound := 6, ClassBound := 5 );; gap> Length(des); 83 gap> List(des, Size); [ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 ] gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 ); [ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5 ] ]]> Below, we compute all capable descendants of order 27 of the elementary abelian group of order 9. F := FreeGroup( 2, "g" ); gap> G := PcGroupFpGroup( F / [ F.1^3, F.2^3, Comm(F.1, F.2) ] ); gap> des := PqDescendants( G : OrderBound := 3, ClassBound := 2, > CapableDescendants ); [ , ] gap> List(des, d -> Length( PCentralSeries( d, 3 ) ) - 1 ); [ 2, 2 ] gap> # For comparison let us now compute all descendants gap> PqDescendants( G : OrderBound := 3, ClassBound := 2); [ , , ] ]]> In the third example, we compute all capable descendants of the elementary abelian group of order 5^2 which have exponent-5 class at most 3, exponent 5, and are metabelian. F := FreeGroup( 2, "g" );; gap> G := PcGroupFpGroup( F / [ F.1^5, F.2^5, Comm(F.2, F.1) ] ); gap> des := PqDescendants( G : Metabelian, ClassBound := 3, > Exponent := 5, CapableDescendants ); [ , , ] gap> List(des, d -> Length( PCentralSeries( d, 5 ) ) - 1 ); [ 2, 3, 3 ] gap> List(des, d -> Length( DerivedSeries( d ) ) ); [ 3, 3, 3 ] gap> List(des, d -> Maximum( List( d, Order ) ) ); [ 5, 5, 5 ] ]]> The examples "PqDescendants-1", "PqDescendants-2" and "PqDescendants-3" (in order) are essentially the same as the above three examples (see ). returns a generating set for a supplement to the inner automorphisms of D, in the form of a record with fields agAutos, agOrder and glAutos, as provided by the pq program. One should be very careful in using these automorphisms for a descendant calculation.

Note: In principle there must be a way to use those automorphisms in order to compute descendants but there does not seem to be a way to hand back these automorphisms properly to the pq program. Q := Pq( FreeGroup(2) : Prime := 3, ClassBound := 1 ); gap> des := PqDescendants( Q : StepSize := 1 ); [ , , ] gap> S := PqSupplementInnerAutomorphisms( des[3] ); rec( agAutos := [ ], agOrder := [ 3, 2, 2, 2 ], glAutos := [ Pcgs([ f1, f2, f3 ]) -> [ f1*f2^2, f2, f3 ], Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ], Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ] ] ) gap> A := AutomorphismGroupPGroup( des[3] ); rec( agAutos := [ Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ], Pcgs([ f1, f2, f3 ]) -> [ f1*f2^2, f2, f3 ], Pcgs([ f1, f2, f3 ]) -> [ f1*f3, f2, f3 ], Pcgs([ f1, f2, f3 ]) -> [ f1, f2*f3, f3 ] ], agOrder := [ 2, 3, 3, 3 ], glAutos := [ ], glOper := [ ], glOrder := 1, group := , one := IdentityMapping( ), size := 54 ) ]]> Typing: PqExample( "PqSupplementInnerAutomorphisms" ); runs the above example in &GAP; (see ).

Note that by also including PqStart as a second argument to PqExample one can see how it is possible, with the aid of PqSetPQuotientToGroup (see ), to do the equivalent computations with the interactive versions of Pq and PqDescendants and a single pq process (recall pq is the name of the external C program). reads a file with name filename (a string) and returns the list L of pc groups (or with option SubList a sublist of L or a single pc group in L) defined in that file. If the option SubList is passed and has the value sub, then it has the same meaning as for PqDescendants, i.e. if sub is an integer then PqList returns L[sub]; otherwise, if sub is a list of integers PqList returns Sublist(L, sub ).

Both PqList and SavePqList (see ) can be used to save and restore a list of descendants (see ). writes a list of descendants list to a file with name filename (a string).

SavePqList and PqList (see ) can be used to save and restore, respectively, the results of PqDescendants (see ).

anupq-3.3.0/doc/manual.lab000644 000766 000024 00000065003 14355420744 015646 0ustar00mhornstaff000000 000000 \GAPDocLabFile{anupq} \makelabel{anupq:Title page}{}{X7D2C85EC87DD46E5} \makelabel{anupq:Copyright}{}{X81488B807F2A1CF1} \makelabel{anupq:Table of Contents}{}{X8537FEB07AF2BEC8} \makelabel{anupq:Introduction}{1}{X7DFB63A97E67C0A1} \makelabel{anupq:Overview}{1.1}{X8389AD927B74BA4A} \makelabel{anupq:How to read this manual}{1.2}{X8416D2657E7831A1} \makelabel{anupq:Authors and Acknowledgements}{1.3}{X79D2480A7810A7CC} \makelabel{anupq:Mathematical Background and Terminology}{2}{X7E7F3B617F42EF03} \makelabel{anupq:Basic notions}{2.1}{X79A052C47C92AF09} \makelabel{anupq:pc Presentations and Consistency}{2.1.1}{X7BD675838609D547} \makelabel{anupq:Exponent-p Central Series and Weighted pc Presentations}{2.1.2}{X7944DB037F2277A6} \makelabel{anupq:p-Cover, p-Multiplicator}{2.1.3}{X7C43ACA37D391EBD} \makelabel{anupq:Descendants, Capable, Terminal, Nucleus}{2.1.4}{X801A27A08462AFAB} \makelabel{anupq:Laws}{2.1.5}{X81FBE7ED79EFF5EF} \makelabel{anupq:The p-quotient Algorithm}{2.2}{X7C8CE96D80FC3614} \makelabel{anupq:Finding the p-cover}{2.2.1}{X791EB6F77899CB3D} \makelabel{anupq:Imposing the Relations of the fp Group}{2.2.2}{X804CF5C97F7BB880} \makelabel{anupq:Imposing Laws}{2.2.3}{X7F1A8CCD84462775} \makelabel{anupq:The p-group generation Algorithm, Standard Presentation, Isomorphism Testing}{2.3}{X807FB2EC85E6648D} \makelabel{anupq:Infrastructure}{3}{X7917EFDF7AC06F04} \makelabel{anupq:Loading the ANUPQ Package}{3.1}{X833D58248067E13B} \makelabel{anupq:The ANUPQData Record}{3.2}{X83DE155A79C38DBE} \makelabel{anupq:Setting the Verbosity of ANUPQ via Info and InfoANUPQ}{3.3}{X83E5C7CF7D8739DF} \makelabel{anupq:Utility Functions}{3.4}{X810FFB1C8035C8BE} \makelabel{anupq:Attributes and a Property for fp and pc p-groups}{3.5}{X818175EF85CAA807} \makelabel{anupq:Hints and Warnings regarding the use of Options}{3.6}{X7BA20FA07B166B37} \makelabel{anupq:Non-interactive ANUPQ functions}{4}{X7C51F26D839279FF} \makelabel{anupq:Computing p-Quotients}{4.1}{X80406BD47EB186E9} \makelabel{anupq:Computing Standard Presentations}{4.2}{X7F05F8DC79733A8E} \makelabel{anupq:Testing p-Groups for Isomorphism}{4.3}{X8030FAE586423615} \makelabel{anupq:Computing Descendants of a p-Group}{4.4}{X8450C72580D91245} \makelabel{anupq:Interactive ANUPQ functions}{5}{X842C13C27B941744} \makelabel{anupq:Starting and Stopping Interactive ANUPQ Processes}{5.1}{X7935CDAD7936CA0A} \makelabel{anupq:Interactive ANUPQ Process Utility Functions}{5.2}{X7EE8000A800CEE2D} \makelabel{anupq:Interactive Versions of Non-interactive ANUPQ Functions}{5.3}{X823D2BBF7C4515D4} \makelabel{anupq:Low-level Interactive ANUPQ functions based on menu items of the pq program}{5.4}{X857F050C832A1FE4} \makelabel{anupq:General commands}{5.5}{X868B10557D470CF6} \makelabel{anupq:Commands from the Main p-Quotient menu}{5.6}{X7BDD5B278719C630} \makelabel{anupq:Commands from the Advanced p-Quotient menu}{5.7}{X7D27BE937B1DE16E} \makelabel{anupq:Commands from the Standard Presentation menu}{5.8}{X7B94EDA385FDD904} \makelabel{anupq:Commands from the Main p-Group Generation menu}{5.9}{X8490031B7AA7F237} \makelabel{anupq:Commands from the Advanced p-Group Generation menu}{5.10}{X7E8FBC2D83C43481} \makelabel{anupq:ANUPQ Options}{6}{X7B0946E97E7EB359} \makelabel{anupq:Overview}{6.1}{X8389AD927B74BA4A} \makelabel{anupq:Detailed descriptions of ANUPQ Options}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:Installing the ANUPQ Package}{7}{X7FB487238298CF42} \makelabel{anupq:Testing your ANUPQ installation}{7.1}{X854577C8800DC7C2} \makelabel{anupq:Running the pq program as a standalone}{7.2}{X82906B5184C61063} \makelabel{anupq:Examples}{A}{X7A489A5D79DA9E5C} \makelabel{anupq:The Relators Option}{A.1}{X80676E317BF4DF13} \makelabel{anupq:The Identities Option and PqEvaluateIdentities Function}{A.2}{X80B2AA7084C57F5D} \makelabel{anupq:A Large Example}{A.3}{X7A997D1A8532A84B} \makelabel{anupq:Developing descendants trees}{A.4}{X7FB6DA8D7BB90D8C} \makelabel{anupq:Bibliography}{Bib}{X7A6F98FD85F02BFE} \makelabel{anupq:References}{Bib}{X7A6F98FD85F02BFE} \makelabel{anupq:Index}{Ind}{X83A0356F839C696F} \makelabel{anupq:ANUPQ}{1.1}{X8389AD927B74BA4A} \makelabel{anupq:bug reports}{1.3}{X79D2480A7810A7CC} \makelabel{anupq:power-commutator presentation}{2.1.1}{X7BD675838609D547} \makelabel{anupq:pc presentation}{2.1.1}{X7BD675838609D547} \makelabel{anupq:pcp}{2.1.1}{X7BD675838609D547} \makelabel{anupq:pc generators}{2.1.1}{X7BD675838609D547} \makelabel{anupq:collection}{2.1.1}{X7BD675838609D547} \makelabel{anupq:consistent}{2.1.1}{X7BD675838609D547} \makelabel{anupq:confluent rewriting system}{2.1.1}{X7BD675838609D547} \makelabel{anupq:confluent}{2.1.1}{X7BD675838609D547} \makelabel{anupq:consistency conditions}{2.1.1}{X7BD675838609D547} \makelabel{anupq:exponent-p central series}{2.1.2}{X7944DB037F2277A6} \makelabel{anupq:class}{2.1.2}{X7944DB037F2277A6} \makelabel{anupq:p-class}{2.1.2}{X7944DB037F2277A6} \makelabel{anupq:weight function}{2.1.2}{X7944DB037F2277A6} \makelabel{anupq:weighted pcp}{2.1.2}{X7944DB037F2277A6} \makelabel{anupq:p-covering group}{2.1.3}{X7C43ACA37D391EBD} \makelabel{anupq:p-cover}{2.1.3}{X7C43ACA37D391EBD} \makelabel{anupq:p-multiplicator}{2.1.3}{X7C43ACA37D391EBD} \makelabel{anupq:p-multiplicator rank}{2.1.3}{X7C43ACA37D391EBD} \makelabel{anupq:multiplicator rank}{2.1.3}{X7C43ACA37D391EBD} \makelabel{anupq:descendant}{2.1.4}{X801A27A08462AFAB} \makelabel{anupq:immediate descendant}{2.1.4}{X801A27A08462AFAB} \makelabel{anupq:nucleus}{2.1.4}{X801A27A08462AFAB} \makelabel{anupq:capable}{2.1.4}{X801A27A08462AFAB} \makelabel{anupq:terminal}{2.1.4}{X801A27A08462AFAB} \makelabel{anupq:nucleus}{2.1.4}{X801A27A08462AFAB} \makelabel{anupq:allowable subgroup}{2.1.4}{X801A27A08462AFAB} \makelabel{anupq:extended automorphism}{2.1.4}{X801A27A08462AFAB} \makelabel{anupq:permutations}{2.1.4}{X801A27A08462AFAB} \makelabel{anupq:law}{2.1.5}{X81FBE7ED79EFF5EF} \makelabel{anupq:identical relation}{2.1.5}{X81FBE7ED79EFF5EF} \makelabel{anupq:exponent law}{2.1.5}{X81FBE7ED79EFF5EF} \makelabel{anupq:metabelian law}{2.1.5}{X81FBE7ED79EFF5EF} \makelabel{anupq:Engel identity}{2.1.5}{X81FBE7ED79EFF5EF} \makelabel{anupq:labelled pcp}{2.2.1}{X791EB6F77899CB3D} \makelabel{anupq:definition of generator}{2.2.1}{X791EB6F77899CB3D} \makelabel{anupq:tails}{2.2.1}{X791EB6F77899CB3D} \makelabel{anupq:exponent check}{2.2.3}{X7F1A8CCD84462775} \makelabel{anupq:p-group generation}{2.3}{X807FB2EC85E6648D} \makelabel{anupq:orbits}{2.3}{X807FB2EC85E6648D} \makelabel{anupq:standard presentation}{2.3}{X807FB2EC85E6648D} \makelabel{anupq:echelonised matrix}{2.3}{X807FB2EC85E6648D} \makelabel{anupq:label of standard matrix}{2.3}{X807FB2EC85E6648D} \makelabel{anupq:isomorphism testing}{2.3}{X807FB2EC85E6648D} \makelabel{anupq:compaction}{2.3}{X807FB2EC85E6648D} \makelabel{anupq:banner}{3.1}{X833D58248067E13B} \makelabel{anupq:ANUPQData}{3.2.1}{X7B90E89782BDA6D7} \makelabel{anupq:ANUPQDirectoryTemporary}{3.2.2}{X7FBB2F457E4BD6AB} \makelabel{anupq:InfoANUPQ}{3.3.1}{X7CBC9B458497BFF1} \makelabel{anupq:PqLeftNormComm}{3.4.1}{X8771393B7F53F534} \makelabel{anupq:PqGAPRelators}{3.4.2}{X7A567432879510A6} \makelabel{anupq:PqParseWord}{3.4.3}{X7F3C5D1C7EC36EAE} \makelabel{anupq:PqExample no arguments}{3.4.4}{X7BB0EB607F337265} \makelabel{anupq:PqExample}{3.4.4}{X7BB0EB607F337265} \makelabel{anupq:PqExample with filename}{3.4.4}{X7BB0EB607F337265} \makelabel{anupq:AllPqExamples}{3.4.5}{X823C93FC7B87F5BC} \makelabel{anupq:GrepPqExamples}{3.4.6}{X7E3E4B047DC2E323} \makelabel{anupq:ToPQLog}{3.4.7}{X8104B2BA872EFCCB} \makelabel{anupq:NuclearRank}{3.5.1}{X87DC922A78EB0DD6} \makelabel{anupq:MultiplicatorRank}{3.5.1}{X87DC922A78EB0DD6} \makelabel{anupq:IsCapable}{3.5.1}{X87DC922A78EB0DD6} \makelabel{anupq:menu item of pq program}{3.6}{X7BA20FA07B166B37} \makelabel{anupq:option of pq program is a menu item}{3.6}{X7BA20FA07B166B37} \makelabel{anupq:troubleshooting tips}{3.6}{X7BA20FA07B166B37} \makelabel{anupq:ANUPQWarnOfOtherOptions}{3.6.1}{X81F4AAE084C34B4B} \makelabel{anupq:Pq}{4.1.1}{X86DD32D5803CF2C8} \makelabel{anupq:option Prime}{4.1.1}{X86DD32D5803CF2C8} \makelabel{anupq:option ClassBound}{4.1.1}{X86DD32D5803CF2C8} \makelabel{anupq:option Exponent}{4.1.1}{X86DD32D5803CF2C8} \makelabel{anupq:option Relators}{4.1.1}{X86DD32D5803CF2C8} \makelabel{anupq:option Metabelian}{4.1.1}{X86DD32D5803CF2C8} \makelabel{anupq:option Identities}{4.1.1}{X86DD32D5803CF2C8} \makelabel{anupq:option GroupName}{4.1.1}{X86DD32D5803CF2C8} \makelabel{anupq:option OutputLevel}{4.1.1}{X86DD32D5803CF2C8} \makelabel{anupq:option SetupFile}{4.1.1}{X86DD32D5803CF2C8} \makelabel{anupq:option PqWorkspace}{4.1.1}{X86DD32D5803CF2C8} \makelabel{anupq:option Relators example of usage}{4.1.1}{X86DD32D5803CF2C8} \makelabel{anupq:option Identities example of usage}{4.1.1}{X86DD32D5803CF2C8} \makelabel{anupq:PqEpimorphism}{4.1.2}{X7ADE5DDB87B99CC0} \makelabel{anupq:PqPCover}{4.1.3}{X81C3CE1E850DA252} \makelabel{anupq:automorphisms of p-groups}{4.2}{X7F05F8DC79733A8E} \makelabel{anupq:PqStandardPresentation}{4.2.1}{X86C9575D7CB65FBB} \makelabel{anupq:StandardPresentation}{4.2.1}{X86C9575D7CB65FBB} \makelabel{anupq:option Prime}{4.2.1}{X86C9575D7CB65FBB} \makelabel{anupq:option pQuotient}{4.2.1}{X86C9575D7CB65FBB} \makelabel{anupq:option ClassBound}{4.2.1}{X86C9575D7CB65FBB} \makelabel{anupq:option Exponent}{4.2.1}{X86C9575D7CB65FBB} \makelabel{anupq:option Metabelian}{4.2.1}{X86C9575D7CB65FBB} \makelabel{anupq:option GroupName}{4.2.1}{X86C9575D7CB65FBB} \makelabel{anupq:option OutputLevel}{4.2.1}{X86C9575D7CB65FBB} \makelabel{anupq:option StandardPresentationFile}{4.2.1}{X86C9575D7CB65FBB} \makelabel{anupq:option SetupFile}{4.2.1}{X86C9575D7CB65FBB} \makelabel{anupq:option PqWorkspace}{4.2.1}{X86C9575D7CB65FBB} \makelabel{anupq:EpimorphismPqStandardPresentation}{4.2.2}{X828C06D083C0D089} \makelabel{anupq:EpimorphismStandardPresentation}{4.2.2}{X828C06D083C0D089} \makelabel{anupq:IsPqIsomorphicPGroup}{4.3.1}{X854389FC780BB178} \makelabel{anupq:IsIsomorphicPGroup}{4.3.1}{X854389FC780BB178} \makelabel{anupq:PqDescendants}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option ClassBound}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option Relators}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option OrderBound}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option StepSize}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option RankInitialSegmentSubgroups}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option SpaceEfficient}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option CapableDescendants}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option AllDescendants}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option Exponent}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option Metabelian}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option GroupName}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option SubList}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option BasicAlgorithm}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option CustomiseOutput}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option SetupFile}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:option PqWorkspace}{4.4.1}{X80985CC479CD9FA3} \makelabel{anupq:PqSupplementInnerAutomorphisms}{4.4.2}{X8364566A80A8C24B} \makelabel{anupq:PqList}{4.4.3}{X79AD54E987FCACBA} \makelabel{anupq:SavePqList}{4.4.4}{X85ADB9E6870EC3D1} \makelabel{anupq:PqStart with group and workspace size}{5.1.1}{X83B2EC237F37623C} \makelabel{anupq:PqStart with group}{5.1.1}{X83B2EC237F37623C} \makelabel{anupq:PqStart with workspace size}{5.1.1}{X83B2EC237F37623C} \makelabel{anupq:PqStart}{5.1.1}{X83B2EC237F37623C} \makelabel{anupq:PqQuit}{5.1.2}{X79DB761185BAB9C8} \makelabel{anupq:PqQuit for default process}{5.1.2}{X79DB761185BAB9C8} \makelabel{anupq:PqQuitAll}{5.1.3}{X7FF8F2657B1B008E} \makelabel{anupq:PqProcessIndex}{5.2.1}{X8558B20A80B999AE} \makelabel{anupq:PqProcessIndex for default process}{5.2.1}{X8558B20A80B999AE} \makelabel{anupq:PqProcessIndices}{5.2.2}{X7E4A56D67C865291} \makelabel{anupq:IsPqProcessAlive}{5.2.3}{X7C103DF78435AEC7} \makelabel{anupq:IsPqProcessAlive for default process}{5.2.3}{X7C103DF78435AEC7} \makelabel{anupq:interruption}{5.2.3}{X7C103DF78435AEC7} \makelabel{anupq:Pq interactive}{5.3.1}{X85408C4C790439E7} \makelabel{anupq:Pq interactive, for default process}{5.3.1}{X85408C4C790439E7} \makelabel{anupq:option Prime}{5.3.1}{X85408C4C790439E7} \makelabel{anupq:option ClassBound}{5.3.1}{X85408C4C790439E7} \makelabel{anupq:option Exponent}{5.3.1}{X85408C4C790439E7} \makelabel{anupq:option Relators}{5.3.1}{X85408C4C790439E7} \makelabel{anupq:option Metabelian}{5.3.1}{X85408C4C790439E7} \makelabel{anupq:option Identities}{5.3.1}{X85408C4C790439E7} \makelabel{anupq:option GroupName}{5.3.1}{X85408C4C790439E7} \makelabel{anupq:option OutputLevel}{5.3.1}{X85408C4C790439E7} \makelabel{anupq:option RedoPcp}{5.3.1}{X85408C4C790439E7} \makelabel{anupq:PqEpimorphism interactive}{5.3.2}{X839E6F578227A8EA} \makelabel{anupq:PqEpimorphism interactive, for default process}{5.3.2}{X839E6F578227A8EA} \makelabel{anupq:PqPCover interactive}{5.3.3}{X7AA64A2F8509A39A} \makelabel{anupq:PqPCover interactive, for default process}{5.3.3}{X7AA64A2F8509A39A} \makelabel{anupq:automorphisms of p-groups}{5.3.3}{X7AA64A2F8509A39A} \makelabel{anupq:PqStandardPresentation interactive}{5.3.4}{X805F32618005C087} \makelabel{anupq:StandardPresentation interactive}{5.3.4}{X805F32618005C087} \makelabel{anupq:option Prime}{5.3.4}{X805F32618005C087} \makelabel{anupq:option pQuotient}{5.3.4}{X805F32618005C087} \makelabel{anupq:option ClassBound}{5.3.4}{X805F32618005C087} \makelabel{anupq:option Exponent}{5.3.4}{X805F32618005C087} \makelabel{anupq:option Metabelian}{5.3.4}{X805F32618005C087} \makelabel{anupq:option GroupName}{5.3.4}{X805F32618005C087} \makelabel{anupq:option OutputLevel}{5.3.4}{X805F32618005C087} \makelabel{anupq:option StandardPresentationFile}{5.3.4}{X805F32618005C087} \makelabel{anupq:EpimorphismPqStandardPresentation interactive}{5.3.5}{X791392977B2D692D} \makelabel{anupq:EpimorphismStandardPresentation interactive}{5.3.5}{X791392977B2D692D} \makelabel{anupq:PqDescendants interactive}{5.3.6}{X795817217C53AB89} \makelabel{anupq:PqDescendants interactive, for default process}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option ClassBound}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option Relators}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option OrderBound}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option StepSize}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option RankInitialSegmentSubgroups}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option SpaceEfficient}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option CapableDescendants}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option AllDescendants}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option Exponent}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option Metabelian}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option GroupName}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option SubList}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option BasicAlgorithm}{5.3.6}{X795817217C53AB89} \makelabel{anupq:option CustomiseOutput}{5.3.6}{X795817217C53AB89} \makelabel{anupq:PqSetPQuotientToGroup}{5.3.7}{X80CCF6D379E5A3B4} \makelabel{anupq:PqSetPQuotientToGroup for default process}{5.3.7}{X80CCF6D379E5A3B4} \makelabel{anupq:PqNrPcGenerators}{5.5.1}{X7DE2F6C686C672DD} \makelabel{anupq:PqNrPcGenerators for default process}{5.5.1}{X7DE2F6C686C672DD} \makelabel{anupq:PqFactoredOrder}{5.5.2}{X87FF98867E8FFB3C} \makelabel{anupq:PqFactoredOrder for default process}{5.5.2}{X87FF98867E8FFB3C} \makelabel{anupq:PqOrder}{5.5.3}{X7B4FC9E380001A71} \makelabel{anupq:PqOrder for default process}{5.5.3}{X7B4FC9E380001A71} \makelabel{anupq:PqPClass}{5.5.4}{X87C7F7EB7C10DC4B} \makelabel{anupq:PqPClass for default process}{5.5.4}{X87C7F7EB7C10DC4B} \makelabel{anupq:PqWeight}{5.5.5}{X7EA3B6917908C20A} \makelabel{anupq:PqWeight for default process}{5.5.5}{X7EA3B6917908C20A} \makelabel{anupq:PqCurrentGroup}{5.5.6}{X79862B83817E20E1} \makelabel{anupq:PqCurrentGroup for default process}{5.5.6}{X79862B83817E20E1} \makelabel{anupq:PqDisplayPcPresentation}{5.5.7}{X805A50687D82B9EC} \makelabel{anupq:PqDisplayPcPresentation for default process}{5.5.7}{X805A50687D82B9EC} \makelabel{anupq:PqSetOutputLevel}{5.5.8}{X80410979854280E1} \makelabel{anupq:PqSetOutputLevel for default process}{5.5.8}{X80410979854280E1} \makelabel{anupq:PqEvaluateIdentities}{5.5.9}{X7B8C72B37AE667F7} \makelabel{anupq:PqEvaluateIdentities for default process}{5.5.9}{X7B8C72B37AE667F7} \makelabel{anupq:PqPcPresentation}{5.6.1}{X7BF135DD84A781EB} \makelabel{anupq:PqPcPresentation for default process}{5.6.1}{X7BF135DD84A781EB} \makelabel{anupq:PqSavePcPresentation}{5.6.2}{X7D947CEA82C44898} \makelabel{anupq:PqSavePcPresentation for default process}{5.6.2}{X7D947CEA82C44898} \makelabel{anupq:PqRestorePcPresentation}{5.6.3}{X7FD001C0798EF219} \makelabel{anupq:PqRestorePcPresentation for default process}{5.6.3}{X7FD001C0798EF219} \makelabel{anupq:PqNextClass}{5.6.4}{X832F69597C095A27} \makelabel{anupq:PqNextClass for default process}{5.6.4}{X832F69597C095A27} \makelabel{anupq:option QueueFactor}{5.6.4}{X832F69597C095A27} \makelabel{anupq:PqComputePCover}{5.6.5}{X7CF9DF7A84D387CB} \makelabel{anupq:PqComputePCover for default process}{5.6.5}{X7CF9DF7A84D387CB} \makelabel{anupq:PqCollect}{5.7.1}{X8633356078CA4115} \makelabel{anupq:PqCollect for default process}{5.7.1}{X8633356078CA4115} \makelabel{anupq:PqSolveEquation}{5.7.2}{X86CCB77281FDC0FC} \makelabel{anupq:PqSolveEquation for default process}{5.7.2}{X86CCB77281FDC0FC} \makelabel{anupq:PqCommutator}{5.7.3}{X789B120B7E2F3017} \makelabel{anupq:PqCommutator for default process}{5.7.3}{X789B120B7E2F3017} \makelabel{anupq:PqSetupTablesForNextClass}{5.7.4}{X7A61A15E78F52743} \makelabel{anupq:PqSetupTablesForNextClass for default process}{5.7.4}{X7A61A15E78F52743} \makelabel{anupq:PqTails}{5.7.5}{X84F7DD8582B368D3} \makelabel{anupq:PqTails for default process}{5.7.5}{X84F7DD8582B368D3} \makelabel{anupq:PqComputeTails}{5.7.6}{X8389F6437ED634B8} \makelabel{anupq:PqComputeTails for default process}{5.7.6}{X8389F6437ED634B8} \makelabel{anupq:PqAddTails}{5.7.7}{X83CD6D888372DFB8} \makelabel{anupq:PqAddTails for default process}{5.7.7}{X83CD6D888372DFB8} \makelabel{anupq:PqDoConsistencyChecks}{5.7.8}{X82AA8FAE85826BB9} \makelabel{anupq:PqDoConsistencyChecks for default process}{5.7.8}{X82AA8FAE85826BB9} \makelabel{anupq:PqCollectDefiningRelations}{5.7.9}{X7A01EE0382689928} \makelabel{anupq:PqCollectDefiningRelations for default process}{5.7.9}{X7A01EE0382689928} \makelabel{anupq:PqCollectWordInDefiningGenerators}{5.7.10}{X7C2B4C1E7BEB19D5} \makelabel{anupq:PqCollectWordInDefiningGenerators for default process}{5.7.10}{X7C2B4C1E7BEB19D5} \makelabel{anupq:PqCommutatorDefiningGenerators}{5.7.11}{X7DB05AA587D7A052} \makelabel{anupq:PqCommutatorDefiningGenerators for default process}{5.7.11}{X7DB05AA587D7A052} \makelabel{anupq:PqDoExponentChecks}{5.7.12}{X80E563A97EDE083E} \makelabel{anupq:PqDoExponentChecks for default process}{5.7.12}{X80E563A97EDE083E} \makelabel{anupq:PqEliminateRedundantGenerators}{5.7.13}{X7BBAB2787B305516} \makelabel{anupq:PqEliminateRedundantGenerators for default process}{5.7.13}{X7BBAB2787B305516} \makelabel{anupq:PqRevertToPreviousClass}{5.7.14}{X783E53B5853F45E6} \makelabel{anupq:PqRevertToPreviousClass for default process}{5.7.14}{X783E53B5853F45E6} \makelabel{anupq:PqSetMaximalOccurrences}{5.7.15}{X8265A6DB81CD24DB} \makelabel{anupq:PqSetMaximalOccurrences for default process}{5.7.15}{X8265A6DB81CD24DB} \makelabel{anupq:PqSetMetabelian}{5.7.16}{X87A35ABB7E11595E} \makelabel{anupq:PqSetMetabelian for default process}{5.7.16}{X87A35ABB7E11595E} \makelabel{anupq:PqDoConsistencyCheck}{5.7.17}{X7C7D17F878AA1BAA} \makelabel{anupq:PqDoConsistencyCheck for default process}{5.7.17}{X7C7D17F878AA1BAA} \makelabel{anupq:PqJacobi}{5.7.17}{X7C7D17F878AA1BAA} \makelabel{anupq:PqJacobi for default process}{5.7.17}{X7C7D17F878AA1BAA} \makelabel{anupq:PqCompact}{5.7.18}{X843953F48319FDE1} \makelabel{anupq:PqCompact for default process}{5.7.18}{X843953F48319FDE1} \makelabel{anupq:PqEchelonise}{5.7.19}{X80344EEC78A09ACF} \makelabel{anupq:PqEchelonise for default process}{5.7.19}{X80344EEC78A09ACF} \makelabel{anupq:PqSupplyAutomorphisms}{5.7.20}{X852947327FC39DDF} \makelabel{anupq:PqSupplyAutomorphisms for default process}{5.7.20}{X852947327FC39DDF} \makelabel{anupq:PqExtendAutomorphisms}{5.7.21}{X7B919B537C042DAD} \makelabel{anupq:PqExtendAutomorphisms for default process}{5.7.21}{X7B919B537C042DAD} \makelabel{anupq:PqApplyAutomorphisms}{5.7.22}{X7CFD54657DE4BD39} \makelabel{anupq:PqApplyAutomorphisms for default process}{5.7.22}{X7CFD54657DE4BD39} \makelabel{anupq:PqDisplayStructure}{5.7.23}{X81A3D5BF87A34934} \makelabel{anupq:PqDisplayStructure for default process}{5.7.23}{X81A3D5BF87A34934} \makelabel{anupq:PqDisplayAutomorphisms}{5.7.24}{X853834B478C4EEE2} \makelabel{anupq:PqDisplayAutomorphisms for default process}{5.7.24}{X853834B478C4EEE2} \makelabel{anupq:PqWritePcPresentation}{5.7.25}{X80687A138626EB2D} \makelabel{anupq:PqWritePcPresentation for default process}{5.7.25}{X80687A138626EB2D} \makelabel{anupq:PqSPComputePcpAndPCover}{5.8.1}{X78D1963D85C71B7B} \makelabel{anupq:PqSPComputePcpAndPCover for default process}{5.8.1}{X78D1963D85C71B7B} \makelabel{anupq:PqSPStandardPresentation}{5.8.2}{X876F30187E89E467} \makelabel{anupq:PqSPStandardPresentation for default process}{5.8.2}{X876F30187E89E467} \makelabel{anupq:option ClassBound}{5.8.2}{X876F30187E89E467} \makelabel{anupq:option PcgsAutomorphisms}{5.8.2}{X876F30187E89E467} \makelabel{anupq:option StandardPresentationFile}{5.8.2}{X876F30187E89E467} \makelabel{anupq:PqSPSavePresentation}{5.8.3}{X7E1B2B088322F48A} \makelabel{anupq:PqSPSavePresentation for default process}{5.8.3}{X7E1B2B088322F48A} \makelabel{anupq:PqSPCompareTwoFilePresentations}{5.8.4}{X81D2F9FF7C241D1E} \makelabel{anupq:PqSPCompareTwoFilePresentations for default process}{5.8.4}{X81D2F9FF7C241D1E} \makelabel{anupq:PqSPIsomorphism}{5.8.5}{X7D1277E584590ECE} \makelabel{anupq:PqSPIsomorphism for default process}{5.8.5}{X7D1277E584590ECE} \makelabel{anupq:PqPGSupplyAutomorphisms}{5.9.1}{X794A8D667A9D725A} \makelabel{anupq:PqPGSupplyAutomorphisms for default process}{5.9.1}{X794A8D667A9D725A} \makelabel{anupq:PqPGExtendAutomorphisms}{5.9.2}{X87F251077C65B6DD} \makelabel{anupq:PqPGExtendAutomorphisms for default process}{5.9.2}{X87F251077C65B6DD} \makelabel{anupq:PqPGConstructDescendants}{5.9.3}{X82FD51A27D269E43} \makelabel{anupq:PqPGConstructDescendants for default process}{5.9.3}{X82FD51A27D269E43} \makelabel{anupq:PqPGSetDescendantToPcp with class}{5.9.4}{X7E9D511385D48A98} \makelabel{anupq:PqPGSetDescendantToPcp with class, for default process}{5.9.4}{X7E9D511385D48A98} \makelabel{anupq:PqPGSetDescendantToPcp}{5.9.4}{X7E9D511385D48A98} \makelabel{anupq:PqPGSetDescendantToPcp for default process}{5.9.4}{X7E9D511385D48A98} \makelabel{anupq:PqPGRestoreDescendantFromFile with class}{5.9.4}{X7E9D511385D48A98} \makelabel{anupq:PqPGRestoreDescendantFromFile with class, for default process}{5.9.4}{X7E9D511385D48A98} \makelabel{anupq:PqPGRestoreDescendantFromFile}{5.9.4}{X7E9D511385D48A98} \makelabel{anupq:PqPGRestoreDescendantFromFile for default process}{5.9.4}{X7E9D511385D48A98} \makelabel{anupq:PqAPGDegree}{5.10.1}{X7E539E4B78A6CE8D} \makelabel{anupq:PqAPGDegree for default process}{5.10.1}{X7E539E4B78A6CE8D} \makelabel{anupq:PqAPGPermutations}{5.10.2}{X7F1182A77AB7650C} \makelabel{anupq:PqAPGPermutations for default process}{5.10.2}{X7F1182A77AB7650C} \makelabel{anupq:PqAPGOrbits}{5.10.3}{X7DD9E7507AA888CC} \makelabel{anupq:PqAPGOrbits for default process}{5.10.3}{X7DD9E7507AA888CC} \makelabel{anupq:PqAPGOrbitRepresentatives}{5.10.4}{X795A756C78BE5923} \makelabel{anupq:PqAPGOrbitRepresentatives for default process}{5.10.4}{X795A756C78BE5923} \makelabel{anupq:PqAPGSingleStage}{5.10.5}{X7E5D6D5782FE190E} \makelabel{anupq:PqAPGSingleStage for default process}{5.10.5}{X7E5D6D5782FE190E} \makelabel{anupq:PqRead}{5.11.1}{X8464AF7E83A523C1} \makelabel{anupq:PqRead for default process}{5.11.1}{X8464AF7E83A523C1} \makelabel{anupq:PqReadAll}{5.11.2}{X7ADD82207D049A87} \makelabel{anupq:PqReadAll for default process}{5.11.2}{X7ADD82207D049A87} \makelabel{anupq:PqReadUntil}{5.11.3}{X7EBF3C3681671879} \makelabel{anupq:PqReadUntil for default process}{5.11.3}{X7EBF3C3681671879} \makelabel{anupq:PqReadUntil with modify map}{5.11.3}{X7EBF3C3681671879} \makelabel{anupq:PqReadUntil with modify map, for default process}{5.11.3}{X7EBF3C3681671879} \makelabel{anupq:PqWrite}{5.11.4}{X83CBE77F78057E21} \makelabel{anupq:PqWrite for default process}{5.11.4}{X83CBE77F78057E21} \makelabel{anupq:AllANUPQoptions}{6.1.1}{X7846E25D8065D78F} \makelabel{anupq:ANUPQoptions}{6.1.2}{X82D560C77D195089} \makelabel{anupq:option Prime}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option ClassBound}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option pQuotient}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option Exponent}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option Relators}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option Metabelian}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option GroupName}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option Identities}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option OutputLevel}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option RedoPcp}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option SetupFile}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option PqWorkspace}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option PcgsAutomorphisms}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option OrderBound}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option StepSize}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option RankInitialSegmentSubgroups}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option SpaceEfficient}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option CapableDescendants}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option AllDescendants}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option TreeDepth}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option SubList}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option NumberOfSolubleAutomorphisms}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option RelativeOrders}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option BasicAlgorithm}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option CustomiseOutput}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option StandardPresentationFile}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option QueueFactor}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option Bounds}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option PrintAutomorphisms}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option PrintPermutations}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:option Filename}{6.2}{X87EE6DD67C9996A3} \makelabel{anupq:ANUPQGAPEXEC environment variable}{7}{X7FB487238298CF42} \makelabel{anupq:ANUPQGAPEXEC environment variable}{7.1}{X854577C8800DC7C2} \makelabel{anupq:ANUPQGAPEXEC environment variable}{7.2}{X82906B5184C61063} \makelabel{anupq:B(5,4)}{A.3}{X7A997D1A8532A84B} \makelabel{anupq:PqDescendantsTreeCoclassOne}{A.4.1}{X805E6B418193CF2D} \makelabel{anupq:PqDescendantsTreeCoclassOne for default process}{A.4.1}{X805E6B418193CF2D} anupq-3.3.0/doc/chap6.html000644 000766 000024 00000111202 14355420744 015571 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 6: ANUPQ Options
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

6 ANUPQ Options

6.1 Overview

In this chapter we describe in detail all the options used by functions of the ANUPQ package. Note that by "options" we mean GAP options that are passed to functions after the arguments and separated from the arguments by a colon as described in Chapter Reference: Function Calls in the Reference Manual. The user is strongly advised to read Section Hints and Warnings regarding the use of Options.

6.1-1 AllANUPQoptions
‣ AllANUPQoptions( )( function )

lists all the GAP options defined for functions of the ANUPQ package:

gap> AllANUPQoptions();
[ "AllDescendants", "BasicAlgorithm", "Bounds", "CapableDescendants", 
  "ClassBound", "CustomiseOutput", "Exponent", "Filename", "GroupName", 
  "Identities", "Metabelian", "NumberOfSolubleAutomorphisms", "OrderBound", 
  "OutputLevel", "PcgsAutomorphisms", "PqWorkspace", "Prime", 
  "PrintAutomorphisms", "PrintPermutations", "QueueFactor", 
  "RankInitialSegmentSubgroups", "RedoPcp", "RelativeOrders", "Relators", 
  "SetupFile", "SpaceEfficient", "StandardPresentationFile", "StepSize", 
  "SubList", "TreeDepth", "pQuotient" ]

The following global variable gives a partial breakdown of where the above options are used.

6.1-2 ANUPQoptions
‣ ANUPQoptions( global variable )

is a record of lists of names of admissible ANUPQ options, such that each field is either the name of a "key" ANUPQ function or other (for a miscellaneous list of functions) and the corresponding value is the list of option names that are admissible for the function (or miscellaneous list of functions).

Also, from within a GAP session, you may use GAP's help browser (see Chapter Reference: The Help System in the GAP Reference Manual); to find out about any particular ANUPQ option, simply type: "?option option", where option is one of the options listed above without any quotes, e.g.

gap> ?option Prime

will display the sections in this manual that describe the Prime option. In fact the first 4 are for the functions that have Prime as an option and the last actually describes the option. So follow up by choosing

gap> ?5

This is also the pattern for other options (the last section of the list always describes the option; the other sections are the functions with which the option may be used).

In the section following we describe in detail all ANUPQ options. To continue onto the next section on-line using GAP's help browser, type:

gap> ?>

6.2 Detailed descriptions of ANUPQ Options

Prime := p

Specifies that the p-quotient for the prime p should be computed.

ClassBound := n

Specifies that the p-quotient to be computed has lower exponent-p class at most n. If this option is omitted a default of 63 (which is the maximum possible for the pq program) is taken, except for PqDescendants (see PqDescendants (4.4-1)) and in a special case of PqPCover (see PqPCover (4.1-3)). Let F be the argument (or start group of the process in the interactive case) for the function; then for PqDescendants the default is PClassPGroup(F) + 1, and for the special case of PqPCover the default is PClassPGroup(F).

pQuotient := Q

This option is only available for the standard presentation functions. It specifies that a p-quotient of the group argument of the function or group of the process is the pc p-group Q, where Q is of class less than the provided (or default) value of ClassBound. If pQuotient is provided, then the option Prime if also provided, is ignored; the prime p is discovered by computing PrimePGroup(Q).

Exponent := n

Specifies that the p-quotient to be computed has exponent n. For an interactive process, Exponent defaults to a previously supplied value for the process. Otherwise (and non-interactively), the default is 0, which means that no exponent law is enforced.

Relators := rels

Specifies that the relators sent to the pq program should be rels instead of the relators of the argument group F (or start group in the interactive case) of the calling function; rels should be a list of strings in the string representations of the generators of F, and F must be an fp group (even if the calling function accepts a pc group). This option provides a way of giving relators to the pq program, without having them pre-expanded by GAP, which can sometimes effect a performance loss of the order of 100 (see Section The Relators Option).

Notes

  1. The pq program does not use / to indicate multiplication by an inverse and uses square brackets to represent (left normed) commutators. Also, even though the pq program accepts relations, all elements of rels must be in relator form, i.e. a relation of form w1 = w2 must be written as w1*(w2)^-1 and then put in a pair of double-quotes to make it a string. See the example below.

  2. To ensure there are no syntax errors in rels, each relator is parsed for validity via PqParseWord (see PqParseWord (3.4-3)). If they are ok, a message to say so is Info-ed at InfoANUPQ level 2.

Metabelian

Specifies that the largest metabelian p-quotient subject to any other conditions specified by other options be constructed. By default this restriction is not enforced.

GroupName := name

Specifies that the pq program should refer to the group by the name name (a string). If GroupName is not set and the group has been assigned a name via SetName (see Reference: Name) it is set as the name the pq program should use. Otherwise, the "generic" name "[grp]" is set as a default.

Identities := funcs

Specifies that the pc presentation should satisfy the laws defined by each function in the list funcs. This option may be called by Pq, PqEpimorphism, or PqPCover (see Pq (4.1-1)). Each function in the list funcs must return a word in its arguments (there may be any number of arguments). Let identity be one such function in funcs. Then as each lower exponent p-class quotient is formed, instances identity(w1, dots, wn) are added as relators to the pc presentation, where w1, dots, wn are words in the pc generators of the quotient. At each class the class and number of pc generators is Info-ed at InfoANUPQ level 1, the number of instances is Info-ed at InfoANUPQ level 2, and the instances that are evaluated are Info-ed at InfoANUPQ level 3. As usual timing information is Info-ed at InfoANUPQ level 2; and details of the processing of each instance from the pq program (which is often quite voluminous) is Info-ed at InfoANUPQ level 3. Try the examples "B2-4-Id" and "11gp-3-Engel-Id" which demonstrate the usage of the Identities option; these are run using PqExample (see PqExample (3.4-4)). Take note of Note 1. below in relation to the example "B2-4-Id"; the companion example "B2-4" generates the same group using the Exponent option. These examples are discussed at length in Section The Identities Option and PqEvaluateIdentities Function.

Notes

  1. Setting the InfoANUPQ level to 3 or more when setting the Identities option may slow down the computation considerably, by overloading GAP with io operations.

  2. The Identities option is implemented at the GAP level. An identity that is just an exponent law should be specified using the Exponent option (see option Exponent), which is implemented at the C level and is highly optimised and so is much more efficient.

  3. The number of instances of each identity tends to grow combinatorially with the class. So care should be exercised in using the Identities option, by including other restrictions, e.g. by using the ClassBound option (see option ClassBound).

OutputLevel := n

Specifies the level of "verbosity" of the information output by the ANU pq program when computing a pc presentation; n must be an integer in the range 0 to 3. OutputLevel := 0 displays at most one line of output and is the default; OutputLevel := 1 displays (usually) slightly more output and OutputLevels of 2 and 3 are two levels of verbose output. To see these messages from the pq program, the InfoANUPQ level must be set to at least 1 (see InfoANUPQ (3.3-1)). See Section Hints and Warnings regarding the use of Options for an example of how OutputLevel can be used as a troubleshooting tool.

RedoPcp

Specifies that the current pc presentation (for an interactive process) stored by the pq program be scrapped and clears the current values stored for the options Prime, ClassBound, Exponent and Metabelian and also clears the pQuotient, pQepi and pCover fields of the data record of the process.

SetupFile := filename

Non-interactively, this option directs that pq should not be called and that an input file with name filename (a string), containing the commands necessary for the ANU pq standalone, be constructed. The commands written to filename are also Info-ed behind a "ToPQ> " prompt at InfoANUPQ level 4 (see InfoANUPQ (3.3-1)). Except in the case following, the calling function returns true. If the calling function is the non-interactive version of one of Pq, PqPCover or PqEpimorphism and the group provided as argument is trivial given with an empty set of generators, then no setup file is written and fail is returned (the pq program cannot do anything useful with such a group). Interactively, SetupFile is ignored.

Note: Since commands emitted to the pq program may depend on knowing what the "current state" is, to form a setup file some "close enough guesses" may sometimes be necessary; when this occurs a warning is Info-ed at InfoANUPQ or InfoWarning level 1. To determine whether the "close enough guesses" give an accurate setup file, it is necessary to run the command without the SetupFile option, after either setting the InfoANUPQ level to at least 4 (the setup file script can then be compared with the "ToPQ> " commands that are Info-ed) or setting a pq command log file by using ToPQLog (see ToPQLog (3.4-7)).

PqWorkspace := workspace

Non-interactively, this option sets the memory used by the pq program. It sets the maximum number of integer-sized elements to allocate in its main storage array. By default, the pq program sets this figure to 10000000. Interactively, PqWorkspace is ignored; the memory used in this case may be set by giving PqStart a second argument (see PqStart (5.1-1)).

PcgsAutomorphisms
PcgsAutomorphisms := false

Let G be the group associated with the calling function (or associated interactive process). Passing the option PcgsAutomorphisms without a value (or equivalently setting it to true), specifies that a polycyclic generating sequence for the automorphism group (which must be soluble) of G, be computed and passed to the pq program. This increases the efficiency of the computation; it also prevents the pq from calling GAP for orbit-stabilizer calculations. By default, PcgsAutomorphisms is set to the value returned by IsSolvable( AutomorphismGroup( G ) ), and uses the package AutPGrp to compute AutomorphismGroup( G ) if it is installed. This flag is set to true or false in the background according to the above criterion by the function PqDescendants (see PqDescendants (4.4-1) and PqDescendants (5.3-6)).

Note: If PcgsAutomorphisms is used when the automorphism group of G is insoluble, an error message occurs.

OrderBound := n

Specifies that only descendants of size at most p^n, where n is a non-negative integer, be generated. Note that you cannot set both OrderBound and StepSize.

StepSize := n
StepSize := list

For a positive integer n, StepSize specifies that only those immediate descendants which are a factor p^n bigger than their parent group be generated.

For a list list of positive integers such that the sum of the length of list and the exponent-p class of G is equal to the class bound defined by the option ClassBound, StepSize specifies that the integers of list are the step sizes for each additional class.

RankInitialSegmentSubgroups := n

Sets the rank of the initial segment subgroup chosen to be n. By default, this has value 0.

SpaceEfficient

Specifies that the pq program performs certain calculations of p-group generation more slowly but with greater space efficiency. This flag is frequently necessary for groups of large Frattini quotient rank. The space saving occurs because only one permutation is stored at any one time. This option is only available if the PcgsAutomorphisms flag is set to true (see option PcgsAutomorphisms). For an interactive process, SpaceEfficient defaults to a previously supplied value for the process. Otherwise (and non-interactively), SpaceEfficient is by default false.

CapableDescendants

By default, all (i.e. capable and terminal) descendants are computed. If this flag is set, only capable descendants are computed. Setting this option is equivalent to setting AllDescendants := false (see option AllDescendants), except if both CapableDescendants and AllDescendants are passed, AllDescendants is essentially ignored.

AllDescendants := false

By default, all descendants are constructed. If this flag is set to false, only capable descendants are computed. Passing AllDescendants without a value (which is equivalent to setting it to true) is superfluous. This option is provided only for backward compatibility with the GAP 3 version of the ANUPQ package, where by default AllDescendants was set to false (rather than true). It is preferable to use CapableDescendants (see option CapableDescendants).

TreeDepth := class

Specifies that the descendants tree developed by PqDescendantsTreeCoclassOne (see PqDescendantsTreeCoclassOne (A.4-1)) should be extended to class class, where class is a positive integer.

SubList := sub

Suppose that L is the list of descendants generated, then for a list sub of integers this option causes PqDescendants to return Sublist( L, sub ). If an integer n is supplied, PqDescendants returns L[n].

NumberOfSolubleAutomorphisms := n

Specifies that the number of soluble automorphisms of the automorphism group supplied by PqPGSupplyAutomorphisms (see PqPGSupplyAutomorphisms (5.9-1)) in a p-group generation calculation is n. By default, n is taken to be 0; n must be a non-negative integer. If n ≥ 0 then a value for the option RelativeOrders (see 6.2) must also be supplied.

RelativeOrders := list

Specifies the relative orders of each soluble automorphism of the automorphism group supplied by PqPGSupplyAutomorphisms (see PqPGSupplyAutomorphisms (5.9-1)) in a p-group generation calculation. The list list must consist of n positive integers, where n is the value of the option NumberOfSolubleAutomorphisms (see 6.2). By default list is empty.

BasicAlgorithm

Specifies that an algorithm that the pq program calls its "default" algorithm be used for p-group generation. By default this algorithm is not used. If this option is supplied the settings of options RankInitialSegmentSubgroups, AllDescendants, Exponent and Metabelian are ignored.

CustomiseOutput := rec

Specifies that fine tuning of the output is desired. The record rec should have any subset (or all) of the the following fields:

perm := list

where list is a list of booleans which determine whether the permutation group output for the automorphism group should contain: the degree, the extended automorphisms, the automorphism matrices, and the permutations, respectively.

orbit := list

where list is a list of booleans which determine whether the orbit output of the action of the automorphism group should contain: a summary, and a complete listing of orbits, respectively. (It's possible to have both a summary and a complete listing.)

group := list

where list is a list of booleans which determine whether the group output should contain: the standard matrix of each allowable subgroup, the presentation of reduced p-covering groups, the presentation of immediate descendants, the nuclear rank of descendants, and the p-multiplicator rank of descendants, respectively.

autgroup := list

where list is a list of booleans which determine whether the automorphism group output should contain: the commutator matrix, the automorphism group description of descendants, and the automorphism group order of descendants, respectively.

trace := val

where val is a boolean which if true specifies algorithm trace data is desired. By default, one does not get algorithm trace data.

Not providing a field (or mis-spelling it!), specifies that the default output is desired. As a convenience, 1 is also accepted as true, and any value that is neither 1 nor true is taken as false. Also for each list above, an unbound list entry is taken as false. Thus, for example

CustomiseOutput := rec(group := [,,1], autgroup := [,1])

specifies for the group output that only the presentation of immediate descendants is desired, for the automorphism group output only the automorphism group description of descendants should be printed, that there should be no algorithm trace data, and that the default output should be provided for the permutation group and orbit output.

StandardPresentationFile := filename

Specifies that the file to which the standard presentation is written has name filename. If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which GAP was started. If this option is omitted it is written to the file with the name generated by the command Filename( ANUPQData.tmpdir, "SPres" );, i.e. the file with name "SPres" in the temporary directory in which the pq program executes.

QueueFactor := n

Specifies a queue factor of n, where n must be a positive integer. This option may be used with PqNextClass (see PqNextClass (5.6-4)).

The queue factor is used when the pq program uses automorphisms to close a set of elements of the p-multiplicator under their action.

The algorithm used is a spinning algorithm: it starts with a set of vectors in echelonized form (elements of the p-multiplicator) and closes the span of these vectors under the action of the automorphisms. For this each automorphism is applied to each vector and it is checked if the result is contained in the span computed so far. If not, the span becomes bigger and the vector is put into a queue and the automorphisms are applied to this vector at a later stage. The process terminates when the automorphisms have been applied to all vectors and no new vectors have been produced.

For each new vector it is decided, if its processing should be delayed. If the vector contains too many non-zero entries, it is put into a second queue. The elements in this queue are processed only when there are no elements in the first queue left.

The queue factor is a percentage figure. A vector is put into the second queue if the percentage of its non-zero entries exceeds the queue factor.

Bounds := list

Specifies a lower and upper bound on the indices of a list, where list is a pair of positive non-decreasing integers. See PqDisplayStructure (5.7-23) and PqDisplayAutomorphisms (5.7-24) where this option may be used.

PrintAutomorphisms := list

Specifies that automorphism matrices be printed.

PrintPermutations := list

Specifies that permutations of the subgroups be printed.

Filename := string

Specifies that an output or input file to be written to or read from by the pq program should have the name string.

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/chapBib.txt000644 000766 000024 00000005475 14355420737 016013 0ustar00mhornstaff000000 000000 References [HN80] Havas, G. and Newman, M. F., Application of computers to questions like those of Burnside, in Burnside groups (Proc. Workshop, Univ. Bielefeld, Bielefeld, 1977), Springer, Lecture Notes in Math., 806, Berlin (1980), 211--230. [LGS90] Leedham-Green, C. R. and Soicher, L. H., Collection from the left and other strategies, J. Symbolic Comput., 9, 5-6 (1990), 665--675, (Computational group theory, Part 1). [New77] Newman, M. F., Determination of groups of prime-power order, in Group theory (Proc. Miniconf., Australian Nat. Univ., Canberra, 1975), Springer, Berlin (1977), 73--84. Lecture Notes in Math., Vol. 573. [NNN98] Newman, M. F., Nickel, W. and Niemeyer, A. C., Descriptions of groups of prime-power order, J. Symbolic Comput., 25, 5 (1998), 665--682. [NO96] Newman, M. F. and O'Brien, E. A., Application of computers to questions like those of Burnside. II, Internat. J. Algebra Comput., 6, 5 (1996), 593--605. [O'B90] O'Brien, E. A., The p-group generation algorithm, J. Symbolic Comput., 9, 5-6 (1990), 677--698, (Computational group theory, Part 1). [O'B94] O'Brien, E. A., Isomorphism testing for p-groups, J. Symbolic Comput., 17, 2 (1994), 131, 133--147. [O'B95] O'Brien, E. A., Computing automorphism groups of p-groups, in Computational algebra and number theory (Sydney, 1992), Kluwer Acad. Publ., Math. Appl., 325, Dordrecht (1995), 83--90. [Sim94] Sims, C. C., Computation with finitely presented groups, Cambridge University Press, Encyclopedia of Mathematics and its Applications, 48, Cambridge (1994), xiii+604 pages. [VL84] Vaughan-Lee, M. R., An aspect of the nilpotent quotient algorithm, in Computational group theory (Durham, 1982), Academic Press, London (1984), 75--83. [VL90a] Vaughan-Lee, M., The restricted Burnside problem, The Clarendon Press Oxford University Press, London Mathematical Society Monographs. New Series, 5, New York (1990), xiv+209 pages, (Oxford Science Publications). [VL90b] Vaughan-Lee, M. R., Collection from the left, J. Symbolic Comput., 9, 5-6 (1990), 725--733, (Computational group theory, Part 1).  anupq-3.3.0/doc/chap7_mj.html000644 000766 000024 00000036677 14355420744 016306 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 7: Installing the ANUPQ Package
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

7 Installing the ANUPQ Package

The ANU pq program is written in C and the package can be installed under UNIX and in environments similar to UNIX. In particular it is known to work on Linux and Mac OS X, and also on Windows equipped with cygwin.

The current version of the ANUPQ package requires GAP 4.9, and version 1.2 of the AutPGrp package. However, we recommend using at least GAP 4.6 and AutPGrp 1.5.

To install the ANUPQ package, move the file anupq-XXX.tar.gz for some version number XXX into the pkg directory in which you plan to install ANUPQ. Usually, this will be the directory pkg in the hierarchy of your version of GAP; it is however also possible to keep an additional pkg directory in your private directories. The only essential difference with installing ANUPQ in a pkg directory different to the GAP home directory is that one must start GAP with the -l switch (see Section Reference: Command Line Options), e.g. if your private pkg directory is a subdirectory of mygap in your home directory you might type:

gap -l ";myhomedir/mygap"

where myhomedir is the path to your home directory, which may be replaced by a tilde. The empty path before the semicolon is filled in by the default path of the GAP home directory.

Then, in your chosen pkg directory, unpack anupq-XXX.tar.gz by

tar xf anupq-<XXX>.tar.gz

Change to the newly created anupq directory. Now you need to call configure. If you installed ANUPQ into the main pkg directory, call

./configure

If you installed ANUPQ in another directory than the usual 'pkg' subdirectory, instead call

./configure --with-gaproot=<path>

where path is the path to the GAP home directory. (You can also call

./configure --help

for further options.)

What this does is look for a file sysinfo.gap in the root directory of GAP in order to determine an architecture name for the subdirectory of bin in which to put the compiled pq binary. This only makes sense if GAP was compiled for the same architecture that pq will be. If you have a shared file system mounted across different architectures, then you should run configure and make for ANUPQ for each architecture immediately after compiling GAP on the same architecture.

If you had to install the package in your own directory but wish to use the system GAP then you will need to find out what path is. To do this, start up GAP and find out what GAP's root path is from finding the value of the variable GAPInfo.RootPaths, e.g.

gap> GAPInfo.RootPaths;
[ "/usr/local/lib/gap4r4/" ]

would tell you to use /usr/local/lib/gap4r4 for path.

The configure command will fetch the architecture type for which GAP has been compiled last and create a Makefile. You can now simply call

make

to compile the binary and to install it in the appropriate place.

The path of GAP (see Note below) used by the pq binary (the value GAP is set to in the make command) may be over-ridden by setting the environment variable ANUPQ_GAP_EXEC. These values are only of interest when the pq program is run as a standalone; however, the testPq script assumes you have set one of these correctly (see Section Testing your ANUPQ installation). When the pq program is started from GAP communication occurs via an iostream, so that the pq binary does not actually need to know a valid path for GAP is this case.

Note. By "path of GAP" we mean the path of the command used to invoke GAP (which should be a script, e.g. the gap.sh script generated in the bin directory for the version of GAP when GAP was compiled). The usual strategy is to copy the gap.sh script to a standard location, e.g. /usr/local/bin/gap. It is a mistake to copy the GAP executable gap (in a directory with name of form bin/compile-platform) to the standard location, since direct invocation of the executable results in GAP starting without being able to find its own library (a fatal error).

7.1 Testing your ANUPQ installation

Now it is time to test the installation. After doing configure and make you will have a testPq script. The script assumes that, if the environment variable ANUPQ_GAP_EXEC is set, it is a correct path for GAP, or otherwise that the make call that compiled the pq program set GAP to a correct path for GAP (see Section Running the pq program as a standalone for more details). To run the tests, just type:

./testPq

Some of the tests the script runs take a while. Please be patient. The script checks that you not only have a correct GAP (at least version 4.4) installation that includes the AutPGrp package, but that the ANUPQ package and its pq binary interact correctly. You should see something like the following output:

Made dir: /tmp/testPq
Testing installation of ANUPQ Package (version 3.1)
 
The first two tests check that the pq C program compiled ok.
Testing the pq binary ... OK.
Testing the pq binary's stack size ... OK.
The pq C program compiled ok! We test it's the right one below.
 
The next tests check that you have the right version of GAP
for the ANUPQ package and that GAP is finding
the right versions of the ANUPQ and AutPGrp packages.
 
Checking GAP ...
 pq binary made with GAP set to: /usr/local/bin/gap
 Starting GAP to determine version and package availability ...
  GAP version (4.6.5) ... OK.
  GAP found ANUPQ package (version 3.1) ... good.
  GAP found pq binary (version 1.9) ... good.
  GAP found AutPGrp package (version 1.5) ... good.
 GAP is OK.
 
Checking the link between the pq binary and GAP ... OK.
Testing the standard presentation part of the pq binary ... OK.
Doing p-group generation (final GAP/ANUPQ) test ... OK.
Tests complete.
Removed dir: /tmp/testPq
Enjoy using your functional ANUPQ package!

7.2 Running the pq program as a standalone

When the pq program is run as a standalone it sometimes needs to call GAP to compute stabilisers of subgroups; in doing so, it first checks the value of the environment variable ANUPQ_GAP_EXEC, and uses that, if set, or otherwise the value of GAP it was compiled with, as the path for GAP. If you ran testPq (see Section Testing your ANUPQ installation) and you got both GAP is OK and the link between the pq binary and GAP is OK, you should be fine. Otherwise heed the recommendations of the error messages you get and run the testPq until all tests are passed.

It is especially important that the GAP, whose path you gave, should know where to find the ANUPQ and AutPGrp packages. To ensure this the path should be to a shell script that invokes GAP. If you needed to install the needed packages in your own directory (because, say, you are not a system administrator) then you should create your own shell script that runs GAP with a correct setting of the -l option and set the path used by the pq binary to the path of that script. To create the script that runs GAP it is easiest to copy the system one and edit it, e.g. start by executing the following UNIX commands (skip the second step if you already have a bin directory; you@unix> is your UNIX prompt):

you@unix> cd
you@unix> mkdir bin
you@unix> cd bin
you@unix> which gap
/usr/local/bin/gap
you@unix> cp /usr/local/bin/gap mygap
you@unix> chmod +x mygap

At the second-last step use the path of GAP returned by which gap. Now hopefully you will have a copy of the script that runs the system GAP in mygap. Now use your favourite editor to edit the -l part of the last line of mygap which should initially look something like:

exec $GAP_DIR/bin/$GAP_PRG -m $GAP_MEM -o 970m -l $GAP_DIR $*

so that it becomes (the tilde is a UNIX abbreviation for your home directory):

exec $GAP_DIR/bin/$GAP_PRG -m $GAP_MEM -o 970m -l "$GAP_DIR;~/gapstuff" $*

assuming that your personal GAP pkg directory is a subdirectory of gapstuff in your home directory. Finally, to let the pq program know where GAP is and also know where your pkg directory is that contains ANUPQ, set the environment variable ANUPQ_GAP_EXEC to the complete (i.e. absolute) path of your mygap script (do not use the tilde abbreviation).

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/chapA.html000644 000766 000024 00000135040 14355420744 015612 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Appendix A: Examples
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

A Examples

There are a large number of examples provided with the ANUPQ package. These may be executed or displayed via the function PqExample (see PqExample (3.4-4)). Each example resides in a file of the same name in the directory examples. Most of the examples are translations to GAP of examples provided for the pq standalone by Eamonn O'Brien; the standalone examples are found in directories standalone/examples (p-quotient and p-group generation examples) and standalone/isom (standard presentation examples). The first line of each example indicates its origin. All the examples seen in earlier chapters of this manual are also available as examples, in a slightly modified form (the example which one can run in order to see something very close to the text example "live" is always indicated near -- usually immediately after -- the text example). The format of the (PqExample) examples is such that they can be read by the standard Read function of GAP, but certain features and comments are interpreted by the function PqExample to do somewhat more than Read does. In particular, any function without a -i, -ni or .g suffix has both a non-interactive and interactive form; in these cases, the default form is the non-interactive form, and giving PqStart as second argument generates the interactive form.

Running PqExample without an argument or with a non-existent example Infos the available examples and some hints on usage:

gap> PqExample();
#I                   PqExample Index (Table of Contents)
#I                   -----------------------------------
#I  This table of possible examples is displayed when calling `PqExample'
#I  with no arguments, or with the argument: "index" (meant in the  sense
#I  of ``list''), or with a non-existent example name.
#I  
#I  Examples that have a name ending in `-ni' are  non-interactive  only.
#I  Examples that have a  name  ending  in  `-i'  are  interactive  only.
#I  Examples with names ending in `.g' also have  only  one  form.  Other
#I  examples have both a non-interactive and an  interactive  form;  call
#I  `PqExample' with 2nd argument `PqStart' to get the  interactive  form
#I  of the example. The substring `PG' in an  example  name  indicates  a
#I  p-Group Generation example, `SP' indicates  a  Standard  Presentation
#I  example, `Rel' indicates it uses  the  `Relators'  option,  and  `Id'
#I  indicates it uses the `Identities' option.
#I  
#I  The following ANUPQ examples are available:
#I  
#I   p-Quotient examples:
#I    general:
#I     "Pq"                   "Pq-ni"                "PqEpimorphism"        
#I     "PqPCover"             "PqSupplementInnerAutomorphisms"
#I    2-groups:
#I     "2gp-Rel"              "2gp-Rel-i"            "2gp-a-Rel-i"
#I     "B2-4"                 "B2-4-Id"              "B2-8-i"
#I     "B4-4-i"               "B4-4-a-i"             "B5-4.g"
#I    3-groups:
#I     "3gp-Rel-i"            "3gp-a-Rel"            "3gp-a-Rel-i"
#I     "3gp-a-x-Rel-i"        "3gp-maxoccur-Rel-i"
#I    5-groups:
#I     "5gp-Rel-i"            "5gp-a-Rel-i"          "5gp-b-Rel-i"
#I     "5gp-c-Rel-i"          "5gp-metabelian-Rel-i" "5gp-maxoccur-Rel-i"
#I     "F2-5-i"               "B2-5-i"               "R2-5-i"
#I     "R2-5-x-i"             "B5-5-Engel3-Id"
#I    7-groups:
#I     "7gp-Rel-i"
#I    11-groups:
#I     "11gp-i"               "11gp-Rel-i"           "11gp-a-Rel-i"
#I     "11gp-3-Engel-Id"      "11gp-3-Engel-Id-i"
#I  
#I   p-Group Generation examples:
#I    general:
#I     "PqDescendants-1"      "PqDescendants-2"      "PqDescendants-3"
#I     "PqDescendants-1-i"
#I    2-groups:
#I     "2gp-PG-i"             "2gp-PG-2-i"           "2gp-PG-3-i"
#I     "2gp-PG-4-i"           "2gp-PG-e4-i"
#I     "PqDescendantsTreeCoclassOne-16-i"
#I    3-groups:
#I     "3gp-PG-i"             "3gp-PG-4-i"           "3gp-PG-x-i"
#I     "3gp-PG-x-1-i"         "PqDescendants-treetraverse-i"
#I     "PqDescendantsTreeCoclassOne-9-i"
#I    5-groups:
#I     "5gp-PG-i"             "Nott-PG-Rel-i"        "Nott-APG-Rel-i"
#I     "PqDescendantsTreeCoclassOne-25-i"
#I    7,11-groups:
#I     "7gp-PG-i"             "11gp-PG-i"
#I  
#I   Standard Presentation examples:
#I    general:
#I     "StandardPresentation" "StandardPresentation-i"
#I     "EpimorphismStandardPresentation"
#I     "EpimorphismStandardPresentation-i"           "IsIsomorphicPGroup-ni"
#I    2-groups:
#I     "2gp-SP-Rel-i"         "2gp-SP-1-Rel-i"       "2gp-SP-2-Rel-i"
#I     "2gp-SP-3-Rel-i"       "2gp-SP-4-Rel-i"       "2gp-SP-d-Rel-i"
#I     "gp-256-SP-Rel-i"      "B2-4-SP-i"            "G2-SP-Rel-i"
#I    3-groups:
#I     "3gp-SP-Rel-i"         "3gp-SP-1-Rel-i"       "3gp-SP-2-Rel-i"
#I     "3gp-SP-3-Rel-i"       "3gp-SP-4-Rel-i"       "G3-SP-Rel-i"
#I    5-groups:
#I     "5gp-SP-Rel-i"         "5gp-SP-a-Rel-i"       "5gp-SP-b-Rel-i"
#I     "5gp-SP-big-Rel-i"     "5gp-SP-d-Rel-i"       "G5-SP-Rel-i"
#I     "G5-SP-a-Rel-i"        "Nott-SP-Rel-i"
#I    7-groups:
#I     "7gp-SP-Rel-i"         "7gp-SP-a-Rel-i"       "7gp-SP-b-Rel-i"
#I    11-groups:
#I     "11gp-SP-a-i"          "11gp-SP-a-Rel-i"      "11gp-SP-a-Rel-1-i"
#I     "11gp-SP-b-i"          "11gp-SP-b-Rel-i"      "11gp-SP-c-Rel-i"
#I  
#I  Notes
#I  -----
#I  1. The example (first) argument of  `PqExample'  is  a  string;  each
#I     example above is in double quotes to remind you to include them.
#I  2. Some examples accept options. To find  out  whether  a  particular
#I     example accepts options, display it first (by including  `Display'
#I     as  last  argument)  which  will  also  indicate  how  `PqExample'
#I     interprets the options, e.g. `PqExample("11gp-SP-a-i", Display);'.
#I  3. Try `SetInfoLevel(InfoANUPQ, <n>);' for  some  <n>  in  [2  ..  4]
#I     before calling PqExample, to see what's going on behind the scenes.
#I  

If on your terminal you are unable to scroll back, an alternative to typing PqExample(); to see the displayed examples is to use on-line help, i.e.  you may type:

gap> ?anupq:examples

which will display this appendix in a GAP session. If you are not fussed about the order in which the examples are organised, AllPqExamples(); lists the available examples relatively compactly (see AllPqExamples (3.4-5)).

In the remainder of this appendix we will discuss particular aspects related to the Relators (see 6.2) and Identities (see 6.2) options, and the construction of the Burnside group B(5, 4).

A.1 The Relators Option

The Relators option was included because computations involving words containing commutators that are pre-expanded by GAP before being passed to the pq program may run considerably more slowly, than the same computations being run with GAP pre-expansions avoided. The following examples demonstrate a case where the performance hit due to pre-expansion of commutators by GAP is a factor of order 100 (in order to see timing information from the pq program, we set the InfoANUPQ level to 2).

Firstly, we run the example that allows pre-expansion of commutators (the function PqLeftNormComm is provided by the ANUPQ package; see PqLeftNormComm (3.4-1)). Note that since the two commutators of this example are very long (taking more than an page to print), we have edited the output at this point.

gap> SetInfoLevel(InfoANUPQ, 2); #to see timing information
gap> PqExample("11gp-i");
#I  #Example: "11gp-i" . . . based on: examples/11gp
#I  F, a, b, c, R, procId are local to `PqExample'
gap> F := FreeGroup("a", "b", "c"); a := F.1; b := F.2; c := F.3;
<free group on the generators [ a, b, c ]>
a
b
c
gap> R := [PqLeftNormComm([b, a, a, b, c])^11, 
>          PqLeftNormComm([a, b, b, a, b, c])^11, (a * b)^11];;
gap> procId := PqStart(F/R : Prime := 11);
1
gap> PqPcPresentation(procId : ClassBound := 7, 
>                              OutputLevel := 1);
#I  Lower exponent-11 central series for [grp]
#I  Group: [grp] to lower exponent-11 central class 1 has order 11^3
#I  Group: [grp] to lower exponent-11 central class 2 has order 11^8
#I  Group: [grp] to lower exponent-11 central class 3 has order 11^19
#I  Group: [grp] to lower exponent-11 central class 4 has order 11^42
#I  Group: [grp] to lower exponent-11 central class 5 has order 11^98
#I  Group: [grp] to lower exponent-11 central class 6 has order 11^228
#I  Group: [grp] to lower exponent-11 central class 7 has order 11^563
#I  Computation of presentation took 27.04 seconds
gap> PqSavePcPresentation(procId, ANUPQData.outfile);
#I  Variables used in `PqExample' are saved in `ANUPQData.example.vars'.

Now we do the same calculation using the Relators option. In this way, the commutators are passed directly as strings to the pq program, so that GAP does not "see" them and pre-expand them.

gap> PqExample("11gp-Rel-i");
#I  #Example: "11gp-Rel-i" . . . based on: examples/11gp
#I  #(equivalent to "11gp-i" example but uses `Relators' option)
#I  F, rels, procId are local to `PqExample'
gap> F := FreeGroup("a", "b", "c");
<free group on the generators [ a, b, c ]>
gap> rels := ["[b, a, a, b, c]^11", "[a, b, b, a, b, c]^11", "(a * b)^11"];
[ "[b, a, a, b, c]^11", "[a, b, b, a, b, c]^11", "(a * b)^11" ]
gap> procId := PqStart(F : Prime := 11, Relators := rels);
2
gap> PqPcPresentation(procId : ClassBound := 7, 
>                              OutputLevel := 1);
#I  Relators parsed ok.
#I  Lower exponent-11 central series for [grp]
#I  Group: [grp] to lower exponent-11 central class 1 has order 11^3
#I  Group: [grp] to lower exponent-11 central class 2 has order 11^8
#I  Group: [grp] to lower exponent-11 central class 3 has order 11^19
#I  Group: [grp] to lower exponent-11 central class 4 has order 11^42
#I  Group: [grp] to lower exponent-11 central class 5 has order 11^98
#I  Group: [grp] to lower exponent-11 central class 6 has order 11^228
#I  Group: [grp] to lower exponent-11 central class 7 has order 11^563
#I  Computation of presentation took 0.27 seconds
gap> PqSavePcPresentation(procId, ANUPQData.outfile);
#I  Variables used in `PqExample' are saved in `ANUPQData.example.vars'.

A.2 The Identities Option and PqEvaluateIdentities Function

Please pay heed to the warnings given for the Identities option (see 6.2); it is written mainly at the GAP level and is not particularly optimised. The Identities option allows one to compute p-quotients that satisfy an identity. A trivial example better done using the Exponent option, but which nevertheless demonstrates the usage of the Identities option, is as follows:

gap> SetInfoLevel(InfoANUPQ, 1);
gap> PqExample("B2-4-Id");
#I  #Example: "B2-4-Id" . . . alternative way to generate B(2, 4)
#I  #Generates B(2, 4) by using the `Identities' option
#I  #... this is not as efficient as using `Exponent' but
#I  #demonstrates the usage of the `Identities' option.
#I  F, f, procId are local to `PqExample'
gap> F := FreeGroup("a", "b");
<free group on the generators [ a, b ]>
gap> # All words w in the pc generators of B(2, 4) satisfy f(w) = 1 
gap> f := w -> w^4;
function( w ) ... end
gap> Pq( F : Prime := 2, Identities := [ f ] );
#I  Class 1 with 2 generators.
#I  Class 2 with 5 generators.
#I  Class 3 with 7 generators.
#I  Class 4 with 10 generators.
#I  Class 5 with 12 generators.
#I  Class 5 with 12 generators.
<pc group of size 4096 with 12 generators>
#I  Variables used in `PqExample' are saved in `ANUPQData.example.vars'.
gap> time; 
1400

Note that the time statement gives the time in milliseconds spent by GAP in executing the PqExample("B2-4-Id"); command (i.e. everything up to the Info-ing of the variables used), but over 90% of that time is spent in the final Pq statement. The time spent by the pq program, which is negligible anyway (you can check this by running the example while the InfoANUPQ level is set to 2), is not counted by time.

Since the identity used in the above construction of B(2, 4) is just an exponent law, the "right" way to compute it is via the Exponent option (see 6.2), which is implemented at the C level and is highly optimised. Consequently, the Exponent option is significantly faster, generally by several orders of magnitude:

gap> SetInfoLevel(InfoANUPQ, 2); # to see time spent by the `pq' program
gap> PqExample("B2-4");
#I  #Example: "B2-4" . . . the ``right'' way to generate B(2, 4)
#I  #Generates B(2, 4) by using the `Exponent' option
#I  F, procId are local to `PqExample'
gap> F := FreeGroup("a", "b");
<free group on the generators [ a, b ]>
gap> Pq( F : Prime := 2, Exponent := 4 );
#I  Computation of presentation took 0.00 seconds
<pc group of size 4096 with 12 generators>
#I  Variables used in `PqExample' are saved in `ANUPQData.example.vars'.
gap> time; # time spent by GAP in executing `PqExample("B2-4");' 
50

The following example uses the Identities option to compute a 3-Engel group for the prime 11. As is the case for the example "B2-4-Id", the example has both a non-interactive and an interactive form; below, we demonstrate the interactive form.

gap> SetInfoLevel(InfoANUPQ, 1); # reset InfoANUPQ to default level
gap> PqExample("11gp-3-Engel-Id", PqStart);
#I  #Example: "11gp-3-Engel-Id" . . . 3-Engel group for prime 11
#I  #Non-trivial example of using the `Identities' option
#I  F, a, b, G, f, procId, Q are local to `PqExample'
gap> F := FreeGroup("a", "b"); a := F.1; b := F.2;
<free group on the generators [ a, b ]>
a
b
gap> G := F/[ a^11, b^11 ];
<fp group on the generators [ a, b ]>
gap> # All word pairs u, v in the pc generators of the 11-quotient Q of G 
gap> # must satisfy the Engel identity: [u, v, v, v] = 1.
gap> f := function(u, v) return PqLeftNormComm( [u, v, v, v] ); end;
function( u, v ) ... end
gap> procId := PqStart( G );
3
gap> Q := Pq( procId : Prime := 11, Identities := [ f ] );
#I  Class 1 with 2 generators.
#I  Class 2 with 3 generators.
#I  Class 3 with 5 generators.
#I  Class 3 with 5 generators.
<pc group of size 161051 with 5 generators>
gap> # We do a ``sample'' check that pairs of elements of Q do satisfy
gap> # the given identity:
gap> f( Random(Q), Random(Q) );
<identity> of ...
gap> f( Q.1, Q.2 );
<identity> of ...
#I  Variables used in `PqExample' are saved in `ANUPQData.example.vars'.

The (interactive) call to Pq above is essentially equivalent to a call to PqPcPresentation with the same arguments and options followed by a call to PqCurrentGroup. Moreover, the call to PqPcPresentation (as described in PqPcPresentation (5.6-1)) is equivalent to a "class 1" call to PqPcPresentation followed by the requisite number of calls to PqNextClass, and with the Identities option set, both PqPcPresentation and PqNextClass "quietly" perform the equivalent of a PqEvaluateIdentities call. In the following example we break down the Pq call into its low-level equivalents, and set and unset the Identities option to show where PqEvaluateIdentities fits into this scheme.

gap> PqExample("11gp-3-Engel-Id-i");
#I  #Example: "11gp-3-Engel-Id-i" . . . 3-Engel grp for prime 11
#I  #Variation of "11gp-3-Engel-Id" broken down into its lower-level component
#I  #command parts.
#I  F, a, b, G, f, procId, Q are local to `PqExample'
gap> F := FreeGroup("a", "b"); a := F.1; b := F.2;
<free group on the generators [ a, b ]>
a
b
gap> G := F/[ a^11, b^11 ];
<fp group on the generators [ a, b ]>
gap> # All word pairs u, v in the pc generators of the 11-quotient Q of G 
gap> # must satisfy the Engel identity: [u, v, v, v] = 1.
gap> f := function(u, v) return PqLeftNormComm( [u, v, v, v] ); end;
function( u, v ) ... end
gap> procId := PqStart( G : Prime := 11 );
4
gap> PqPcPresentation( procId : ClassBound := 1);
gap> PqEvaluateIdentities( procId : Identities := [f] );
#I  Class 1 with 2 generators.
gap> for c in [2 .. 4] do
>      PqNextClass( procId : Identities := [] ); #reset `Identities' option
>      PqEvaluateIdentities( procId : Identities := [f] );
>    od;
#I  Class 2 with 3 generators.
#I  Class 3 with 5 generators.
#I  Class 3 with 5 generators.
gap> Q := PqCurrentGroup( procId );
<pc group of size 161051 with 5 generators>
gap> # We do a ``sample'' check that pairs of elements of Q do satisfy
gap> # the given identity:
gap> f( Random(Q), Random(Q) );
<identity> of ...
gap> f( Q.1, Q.2 );
<identity> of ...
#I  Variables used in `PqExample' are saved in `ANUPQData.example.vars'.

A.3 A Large Example

An example demonstrating how a large computation can be organised with the ANUPQ package is the computation of the Burnside group B(5, 4), the largest group of exponent 4 generated by 5 elements. It has order 2^2728 and lower exponent-p central class 13. The example "B5-4.g" computes B(5, 4); it is based on a pq standalone input file written by M. F. Newman.

To be able to do examples like this was part of the motivation to provide access to the low-level functions of the standalone program from within GAP.

Please note that the construction uses the knowledge gained by Newman and O'Brien in their initial construction of B(5, 4), in particular, insight into the commutator structure of the group and the knowledge of the p-central class and the order of B(5, 4). Therefore, the construction cannot be used to prove that B(5, 4) has the order and class mentioned above. It is merely a reconstruction of the group. More information is contained in the header of the file examples/B5-4.g.

procId := PqStart( FreeGroup(5) : Exponent := 4, Prime := 2 );
Pq( procId : ClassBound := 2 );
PqSupplyAutomorphisms( procId,
      [
        [ [ 1, 1, 0, 0, 0],      # first automorphism
          [ 0, 1, 0, 0, 0],
          [ 0, 0, 1, 0, 0],
          [ 0, 0, 0, 1, 0],
          [ 0, 0, 0, 0, 1] ],

        [ [ 0, 0, 0, 0, 1],      # second automorphism
          [ 1, 0, 0, 0, 0],
          [ 0, 1, 0, 0, 0],
          [ 0, 0, 1, 0, 0],
          [ 0, 0, 0, 1, 0] ]
                             ] );;

Relations :=
  [ [],          ## class 1
    [],          ## class 2
    [],          ## class 3
    [],          ## class 4
    [],          ## class 5
    [],          ## class 6
    ## class 7     
    [ [ "x2","x1","x1","x3","x4","x4","x4" ] ],
    ## class 8
    [ [ "x2","x1","x1","x3","x4","x5","x5","x5" ] ],
    ## class 9
    [ [ "x2","x1","x1","x3","x4","x4","x5","x5","x5" ],
      [ "x2","x1","x1","x2","x3","x4","x5","x5","x5" ],
      [ "x2","x1","x1","x3","x3","x4","x5","x5","x5" ] ],
    ## class 10
    [ [ "x2","x1","x1","x2","x3","x3","x4","x5","x5","x5" ],
      [ "x2","x1","x1","x3","x3","x4","x4","x5","x5","x5" ] ],
    ## class 11
    [ [ "x2","x1","x1","x2","x3","x3","x4","x4","x5","x5","x5" ],
      [ "x2","x1","x1","x2","x3","x1","x3","x4","x2","x4","x3" ] ],
    ## class 12
    [ [ "x2","x1","x1","x2","x3","x1","x3","x4","x2","x5","x5","x5" ],
      [ "x2","x1","x1","x3","x2","x4","x3","x5","x4","x5","x5","x5" ] ],
    ## class 13
    [ [ "x2","x1","x1","x2","x3","x1","x3","x4","x2","x4","x5","x5","x5" 
        ] ]
];

for class in [ 3 .. 13 ] do
    Print( "Computing class ", class, "\n" );
    PqSetupTablesForNextClass( procId );

    for w in [ class, class-1 .. 7 ] do

        PqAddTails( procId, w );   
        PqDisplayPcPresentation( procId );

        if Relations[ w ] <> [] then
            # recalculate automorphisms
            PqExtendAutomorphisms( procId );

            for r in Relations[ w ] do
                Print( "Collecting ", r, "\n" );
                PqCommutator( procId, r, 1 );
                PqEchelonise( procId );
                PqApplyAutomorphisms( procId, 15 ); #queue factor = 15
            od;

            PqEliminateRedundantGenerators( procId );
        fi;   
        PqComputeTails( procId, w );
    od;
    PqDisplayPcPresentation( procId );

    smallclass := Minimum( class, 6 );
    for w in [ smallclass, smallclass-1 .. 2 ] do
        PqTails( procId, w );
    od;
    # recalculate automorphisms
    PqExtendAutomorphisms( procId );
    PqCollect( procId, "x5^4" );
    PqEchelonise( procId );
    PqApplyAutomorphisms( procId, 15 ); #queue factor = 15
    PqEliminateRedundantGenerators( procId );
    PqDisplayPcPresentation( procId );
od;

A.4 Developing descendants trees

In the following example we will explore the 3-groups of rank 2 and 3-coclass 1 up to 3-class 5. This will be done using the p-group generation machinery of the package. We start with the elementary abelian 3-group of rank 2. From within GAP, run the example "PqDescendants-treetraverse-i" via PqExample (see PqExample (3.4-4)).

gap> G := ElementaryAbelianGroup( 9 );
<pc group of size 9 with 2 generators>
gap> procId := PqStart( G );
5
gap> #
gap> #  Below, we use the option StepSize in order to construct descendants
gap> #  of coclass 1. This is equivalent to setting the StepSize to 1 in
gap> #  each descendant calculation.
gap> #
gap> #  The elementary abelian group of order 9 has 3 descendants of
gap> #  3-class 2 and 3-coclass 1, as the result of the next command
gap> #  shows. 
gap> #
gap> PqDescendants( procId : StepSize := 1 );
[ <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators> ]
gap> #
gap> #  Now we will compute the descendants of coclass 1 for each of the
gap> #  groups above. Then we will compute the descendants  of coclass 1
gap> #  of each descendant and so  on.  Note  that the  pq program keeps
gap> #  one file for each class at a time.  For example, the descendants
gap> #  calculation for  the  second  group  of class  2  overwrites the
gap> #  descendant file  obtained  from  the  first  group  of  class 2.
gap> #  Hence,  we have to traverse the descendants tree  in depth first
gap> #  order.
gap> #
gap> PqPGSetDescendantToPcp( procId, 2, 1 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
2
gap> PqPGSetDescendantToPcp( procId, 3, 1 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
2
gap> PqPGSetDescendantToPcp( procId, 4, 1 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
2
gap> #
gap> #  At this point we stop traversing the ``left most'' branch of the
gap> #  descendants tree and move upwards.
gap> #
gap> PqPGSetDescendantToPcp( procId, 4, 2 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> PqPGSetDescendantToPcp( procId, 3, 2 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> #  
gap> #  The computations above indicate that the descendants subtree under
gap> #  the first descendant of the elementary abelian group of order 9
gap> #  will have only one path of infinite length.
gap> #
gap> PqPGSetDescendantToPcp( procId, 2, 2 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
4
gap> #
gap> #  We get four descendants here, three of which will turn out to be
gap> #  incapable, i.e., they have no descendants and are terminal nodes
gap> #  in the descendants tree.
gap> #
gap> PqPGSetDescendantToPcp( procId, 2, 3 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> #
gap> #  The third descendant of class three is incapable.  Let us return
gap> #  to the second descendant of class 2.
gap> #
gap> PqPGSetDescendantToPcp( procId, 2, 2 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
4
gap> PqPGSetDescendantToPcp( procId, 3, 1 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> PqPGSetDescendantToPcp( procId, 3, 2 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> #
gap> #  We skip the third descendant for the moment ... 
gap> #
gap> PqPGSetDescendantToPcp( procId, 3, 4 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> #
gap> #  ... and look at it now.
gap> #
gap> PqPGSetDescendantToPcp( procId, 3, 3 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
6
gap> #
gap> #  In this branch of the descendant tree we get 6 descendants of class
gap> #  three.  Of those 5 will turn out to be incapable and one will have
gap> #  7 descendants.
gap> #
gap> PqPGSetDescendantToPcp( procId, 4, 1 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0
gap> PqPGSetDescendantToPcp( procId, 4, 2 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
7
gap> PqPGSetDescendantToPcp( procId, 4, 3 );
gap> PqPGExtendAutomorphisms( procId );
gap> PqPGConstructDescendants( procId : StepSize := 1 );
#I  group restored from file is incapable
0

To automate the above procedure to some extent we provide:

A.4-1 PqDescendantsTreeCoclassOne
‣ PqDescendantsTreeCoclassOne( i )( function )
‣ PqDescendantsTreeCoclassOne( )( function )

for the ith or default interactive ANUPQ process, generate a descendant tree for the group of the process (which must be a pc p-group) consisting of descendants of p-coclass 1 and extending to the class determined by the option TreeDepth (or 6 if the option is omitted). In an XGAP session, a graphical representation of the descendants tree appears in a separate window. Subsequent calls to PqDescendantsTreeCoclassOne for the same process may be used to extend the descendant tree from the last descendant computed that itself has more than one descendant. PqDescendantsTreeCoclassOne also accepts the options CapableDescendants (or AllDescendants) and any options accepted by the interactive PqDescendants function (see PqDescendants (5.3-6)).

Notes

  1. PqDescendantsTreeCoclassOne first calls PqDescendants. If PqDescendants has already been called for the process, the previous value computed is used and a warning is Info-ed at InfoANUPQ level 1.

  2. As each descendant is processed its unique label defined by the pq program and number of descendants is Info-ed at InfoANUPQ level 1.

  3. PqDescendantsTreeCoclassOne is an "experimental" function that is included to demonstrate the sort of things that are possible with the p-group generation machinery.

Ignoring the extra functionality provided in an XGAP session, PqDescendantsTreeCoclassOne, with one argument that is the index of an interactive ANUPQ process, is approximately equivalent to:

PqDescendantsTreeCoclassOne := function( procId )
    local des, i;

    des := PqDescendants( procId : StepSize := 1 );
    RecurseDescendants( procId, 2, Length(des) );
end;

where RecurseDescendants is (approximately) defined as follows:

RecurseDescendants := function( procId, class, n )
    local i, nr;

    if class > ValueOption("TreeDepth") then return; fi;

    for i in [1..n] do
        PqPGSetDescendantToPcp( procId, class, i );
        PqPGExtendAutomorphisms( procId );
        nr := PqPGConstructDescendants( procId : StepSize := 1 );
        Print( "Number of descendants of group ", i,
               " at class ", class, ": ", nr, "\n" );
        RecurseDescendants( procId, class+1, nr );
    od;
    return;
end;

The following examples (executed via PqExample; see PqExample (3.4-4)), demonstrate the use of PqDescendantsTreeCoclassOne:

"PqDescendantsTreeCoclassOne-9-i"

approximately does example "PqDescendants-treetraverse-i" again using PqDescendantsTreeCoclassOne;

"PqDescendantsTreeCoclassOne-16-i"

uses the option CapableDescendants; and

"PqDescendantsTreeCoclassOne-25-i"

calculates all descendants by omitting the CapableDescendants option.

The numbers 9, 16 and 25 respectively, indicate the order of the elementary abelian group to which PqDescendantsTreeCoclassOne is applied for these examples.

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/rainbow.js000644 000766 000024 00000005336 14355420744 015713 0ustar00mhornstaff000000 000000 function randchar(str) { var i = Math.floor(Math.random() * str.length); while (i == str.length) i = Math.floor(Math.random() * str.length); return str[i]; } hexdigits = "0123456789abcdef"; function randlight() { return randchar("cdef")+randchar(hexdigits)+ randchar("cdef")+randchar(hexdigits)+ randchar("cdef")+randchar(hexdigits) } function randdark() { return randchar("012345789")+randchar(hexdigits)+ randchar("012345789")+randchar(hexdigits)+ randchar("102345789")+randchar(hexdigits) } document.write('\n'); anupq-3.3.0/doc/options.xml000644 000766 000024 00000064455 14355420571 016136 0ustar00mhornstaff000000 000000 ANUPQ Options
Overview In this chapter we describe in detail all the options used by functions of the &ANUPQ; package. Note that by options we mean &GAP; options that are passed to functions after the arguments and separated from the arguments by a colon as described in Chapter  in the Reference Manual. The user is strongly advised to read Section . lists all the &GAP; options defined for functions of the &ANUPQ; package: AllANUPQoptions(); [ "AllDescendants", "BasicAlgorithm", "Bounds", "CapableDescendants", "ClassBound", "CustomiseOutput", "Exponent", "Filename", "GroupName", "Identities", "Metabelian", "NumberOfSolubleAutomorphisms", "OrderBound", "OutputLevel", "PcgsAutomorphisms", "PqWorkspace", "Prime", "PrintAutomorphisms", "PrintPermutations", "QueueFactor", "RankInitialSegmentSubgroups", "RedoPcp", "RelativeOrders", "Relators", "SetupFile", "SpaceEfficient", "StandardPresentationFile", "StepSize", "SubList", "TreeDepth", "pQuotient" ] ]]> The following global variable gives a partial breakdown of where the above options are used. is a record of lists of names of admissible &ANUPQ; options, such that each field is either the name of a key &ANUPQ; function or other (for a miscellaneous list of functions) and the corresponding value is the list of option names that are admissible for the function (or miscellaneous list of functions).

Also, from within a &GAP; session, you may use &GAP;'s help browser (see Chapter  in the &GAP; Reference Manual); to find out about any particular &ANUPQ; option, simply type: ?option option, where option is one of the options listed above without any quotes, e.g. ?option Prime ]]> will display the sections in this manual that describe the Prime option. In fact the first 4 are for the functions that have Prime as an option and the last actually describes the option. So follow up by choosing ?5 ]]> This is also the pattern for other options (the last section of the list always describes the option; the other sections are the functions with which the option may be used).

In the section following we describe in detail all &ANUPQ; options. To continue onto the next section on-line using &GAP;'s help browser, type: ?> ]]>

Detailed descriptions of ANUPQ Options Prime := p Specifies that the p-quotient for the prime p should be computed. ClassBound := n Specifies that the p-quotient to be computed has lower exponent-p class at most n. If this option is omitted a default of 63 (which is the maximum possible for the pq program) is taken, except for PqDescendants (see ) and in a special case of PqPCover (see ). Let F be the argument (or start group of the process in the interactive case) for the function; then for PqDescendants the default is PClassPGroup(F) + 1, and for the special case of PqPCover the default is PClassPGroup(F). pQuotient := Q This option is only available for the standard presentation functions. It specifies that a p-quotient of the group argument of the function or group of the process is the pc p-group Q, where Q is of class less than the provided (or default) value of ClassBound. If pQuotient is provided, then the option Prime if also provided, is ignored; the prime p is discovered by computing PrimePGroup(Q). Exponent := n Specifies that the p-quotient to be computed has exponent n. For an interactive process, Exponent defaults to a previously supplied value for the process. Otherwise (and non-interactively), the default is 0, which means that no exponent law is enforced. Relators := rels Specifies that the relators sent to the pq program should be rels instead of the relators of the argument group F (or start group in the interactive case) of the calling function; rels should be a list of strings in the string representations of the generators of F, and F must be an fp group (even if the calling function accepts a pc group). This option provides a way of giving relators to the pq program, without having them pre-expanded by &GAP;, which can sometimes effect a performance loss of the order of 100 (see Section ).

Notes The pq program does not use / to indicate multiplication by an inverse and uses square brackets to represent (left normed) commutators. Also, even though the pq program accepts relations, all elements of rels must be in relator form, i.e. a relation of form w1 = w2 must be written as w1*(w2)^-1 and then put in a pair of double-quotes to make it a string. See the example below. To ensure there are no syntax errors in rels, each relator is parsed for validity via PqParseWord (see ). If they are ok, a message to say so is Info-ed at InfoANUPQ level 2. Metabelian Specifies that the largest metabelian p-quotient subject to any other conditions specified by other options be constructed. By default this restriction is not enforced. GroupName := name Specifies that the pq program should refer to the group by the name name (a string). If GroupName is not set and the group has been assigned a name via SetName (see ) it is set as the name the pq program should use. Otherwise, the generic name "[grp]" is set as a default. Identities := funcs Specifies that the pc presentation should satisfy the laws defined by each function in the list funcs. This option may be called by Pq, PqEpimorphism, or PqPCover (see ). Each function in the list funcs must return a word in its arguments (there may be any number of arguments). Let identity be one such function in funcs. Then as each lower exponent p-class quotient is formed, instances identity(w1, \dots, wn) are added as relators to the pc presentation, where w1, \dots, wn are words in the pc generators of the quotient. At each class the class and number of pc generators is Info-ed at InfoANUPQ level 1, the number of instances is Info-ed at InfoANUPQ level 2, and the instances that are evaluated are Info-ed at InfoANUPQ level 3. As usual timing information is Info-ed at InfoANUPQ level 2; and details of the processing of each instance from the pq program (which is often quite voluminous) is Info-ed at InfoANUPQ level 3. Try the examples "B2-4-Id" and "11gp-3-Engel-Id" which demonstrate the usage of the Identities option; these are run using PqExample (see ). Take note of Note 1. below in relation to the example "B2-4-Id"; the companion example "B2-4" generates the same group using the Exponent option. These examples are discussed at length in Section .

Notes Setting the InfoANUPQ level to 3 or more when setting the Identities option may slow down the computation considerably, by overloading &GAP; with io operations. The Identities option is implemented at the &GAP; level. An identity that is just an exponent law should be specified using the Exponent option (see ), which is implemented at the C level and is highly optimised and so is much more efficient. The number of instances of each identity tends to grow combinatorially with the class. So care should be exercised in using the Identities option, by including other restrictions, e.g. by using the ClassBound option (see ). OutputLevel := n Specifies the level of verbosity of the information output by the ANU pq program when computing a pc presentation; n must be an integer in the range 0 to 3. OutputLevel := 0 displays at most one line of output and is the default; OutputLevel := 1 displays (usually) slightly more output and OutputLevels of 2 and 3 are two levels of verbose output. To see these messages from the pq program, the InfoANUPQ level must be set to at least 1 (see ). See Section  for an example of how OutputLevel can be used as a troubleshooting tool. RedoPcp Specifies that the current pc presentation (for an interactive process) stored by the pq program be scrapped and clears the current values stored for the options Prime, ClassBound, Exponent and Metabelian and also clears the pQuotient, pQepi and pCover fields of the data record of the process. SetupFile := filename Non-interactively, this option directs that pq should not be called and that an input file with name filename (a string), containing the commands necessary for the ANU pq standalone, be constructed. The commands written to filename are also Info-ed behind a ToPQ> prompt at InfoANUPQ level 4 (see ). Except in the case following, the calling function returns true. If the calling function is the non-interactive version of one of Pq, PqPCover or PqEpimorphism and the group provided as argument is trivial given with an empty set of generators, then no setup file is written and fail is returned (the pq program cannot do anything useful with such a group). Interactively, SetupFile is ignored.

Note: Since commands emitted to the pq program may depend on knowing what the current state is, to form a setup file some close enough guesses may sometimes be necessary; when this occurs a warning is Info-ed at InfoANUPQ or InfoWarning level 1. To determine whether the close enough guesses give an accurate setup file, it is necessary to run the command without the SetupFile option, after either setting the InfoANUPQ level to at least 4 (the setup file script can then be compared with the ToPQ> commands that are Info-ed) or setting a pq command log file by using ToPQLog (see ). PqWorkspace := workspace Non-interactively, this option sets the memory used by the pq program. It sets the maximum number of integer-sized elements to allocate in its main storage array. By default, the pq program sets this figure to 10000000. Interactively, PqWorkspace is ignored; the memory used in this case may be set by giving PqStart a second argument (see ). PcgsAutomorphisms PcgsAutomorphisms := false Let G be the group associated with the calling function (or associated interactive process). Passing the option PcgsAutomorphisms without a value (or equivalently setting it to true), specifies that a polycyclic generating sequence for the automorphism group (which must be soluble) of G, be computed and passed to the pq program. This increases the efficiency of the computation; it also prevents the pq from calling &GAP; for orbit-stabilizer calculations. By default, PcgsAutomorphisms is set to the value returned by IsSolvable( AutomorphismGroup( G ) ), and uses the package &AutPGrp; to compute AutomorphismGroup( G ) if it is installed. This flag is set to true or false in the background according to the above criterion by the function PqDescendants (see  and ).

Note: If PcgsAutomorphisms is used when the automorphism group of G is insoluble, an error message occurs. OrderBound := n Specifies that only descendants of size at most p^{n}, where n is a non-negative integer, be generated. Note that you cannot set both OrderBound and StepSize. StepSize := n StepSize := list For a positive integer n, StepSize specifies that only those immediate descendants which are a factor p^{n} bigger than their parent group be generated.

For a list list of positive integers such that the sum of the length of list and the exponent-p class of G is equal to the class bound defined by the option ClassBound, StepSize specifies that the integers of list are the step sizes for each additional class. RankInitialSegmentSubgroups := n Sets the rank of the initial segment subgroup chosen to be n. By default, this has value 0. SpaceEfficient Specifies that the pq program performs certain calculations of p-group generation more slowly but with greater space efficiency. This flag is frequently necessary for groups of large Frattini quotient rank. The space saving occurs because only one permutation is stored at any one time. This option is only available if the PcgsAutomorphisms flag is set to true (see ). For an interactive process, SpaceEfficient defaults to a previously supplied value for the process. Otherwise (and non-interactively), SpaceEfficient is by default false. CapableDescendants By default, all (i.e. capable and terminal) descendants are computed. If this flag is set, only capable descendants are computed. Setting this option is equivalent to setting AllDescendants := false (see ), except if both CapableDescendants and AllDescendants are passed, AllDescendants is essentially ignored. AllDescendants := false By default, all descendants are constructed. If this flag is set to false, only capable descendants are computed. Passing AllDescendants without a value (which is equivalent to setting it to true) is superfluous. This option is provided only for backward compatibility with the &GAP; 3 version of the &ANUPQ; package, where by default AllDescendants was set to false (rather than true). It is preferable to use CapableDescendants (see ). TreeDepth := class Specifies that the descendants tree developed by PqDescendantsTreeCoclassOne (see ) should be extended to class class, where class is a positive integer. SubList := sub Suppose that L is the list of descendants generated, then for a list sub of integers this option causes PqDescendants to return Sublist( L, sub ). If an integer n is supplied, PqDescendants returns L[n]. NumberOfSolubleAutomorphisms := n Specifies that the number of soluble automorphisms of the automorphism group supplied by PqPGSupplyAutomorphisms (see ) in a p-group generation calculation is n. By default, n is taken to be 0; n must be a non-negative integer. If n \ge 0 then a value for the option RelativeOrders (see ) must also be supplied. RelativeOrders := list Specifies the relative orders of each soluble automorphism of the automorphism group supplied by PqPGSupplyAutomorphisms (see ) in a p-group generation calculation. The list list must consist of n positive integers, where n is the value of the option NumberOfSolubleAutomorphisms (see ). By default list is empty. BasicAlgorithm Specifies that an algorithm that the pq program calls its default algorithm be used for p-group generation. By default this algorithm is not used. If this option is supplied the settings of options RankInitialSegmentSubgroups, AllDescendants, Exponent and Metabelian are ignored. CustomiseOutput := rec Specifies that fine tuning of the output is desired. The record rec should have any subset (or all) of the the following fields: perm := list where list is a list of booleans which determine whether the permutation group output for the automorphism group should contain: the degree, the extended automorphisms, the automorphism matrices, and the permutations, respectively. orbit := list where list is a list of booleans which determine whether the orbit output of the action of the automorphism group should contain: a summary, and a complete listing of orbits, respectively. (It's possible to have both a summary and a complete listing.) group := list where list is a list of booleans which determine whether the group output should contain: the standard matrix of each allowable subgroup, the presentation of reduced p-covering groups, the presentation of immediate descendants, the nuclear rank of descendants, and the p-multiplicator rank of descendants, respectively. autgroup := list where list is a list of booleans which determine whether the automorphism group output should contain: the commutator matrix, the automorphism group description of descendants, and the automorphism group order of descendants, respectively. trace := val where val is a boolean which if true specifies algorithm trace data is desired. By default, one does not get algorithm trace data. Not providing a field (or mis-spelling it!), specifies that the default output is desired. As a convenience, 1 is also accepted as true, and any value that is neither 1 nor true is taken as false. Also for each list above, an unbound list entry is taken as false. Thus, for example specifies for the group output that only the presentation of immediate descendants is desired, for the automorphism group output only the automorphism group description of descendants should be printed, that there should be no algorithm trace data, and that the default output should be provided for the permutation group and orbit output. StandardPresentationFile := filename Specifies that the file to which the standard presentation is written has name filename. If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which &GAP; was started. If this option is omitted it is written to the file with the name generated by the command Filename( ANUPQData.tmpdir, "SPres" );, i.e. the file with name "SPres" in the temporary directory in which the pq program executes. QueueFactor := n Specifies a queue factor of n, where n must be a positive integer. This option may be used with PqNextClass (see ).

The queue factor is used when the pq program uses automorphisms to close a set of elements of the p-multiplicator under their action.

The algorithm used is a spinning algorithm: it starts with a set of vectors in echelonized form (elements of the p-multiplicator) and closes the span of these vectors under the action of the automorphisms. For this each automorphism is applied to each vector and it is checked if the result is contained in the span computed so far. If not, the span becomes bigger and the vector is put into a queue and the automorphisms are applied to this vector at a later stage. The process terminates when the automorphisms have been applied to all vectors and no new vectors have been produced.

For each new vector it is decided, if its processing should be delayed. If the vector contains too many non-zero entries, it is put into a second queue. The elements in this queue are processed only when there are no elements in the first queue left.

The queue factor is a percentage figure. A vector is put into the second queue if the percentage of its non-zero entries exceeds the queue factor. Bounds := list Specifies a lower and upper bound on the indices of a list, where list is a pair of positive non-decreasing integers. See  and  where this option may be used. PrintAutomorphisms := list Specifies that automorphism matrices be printed. PrintPermutations := list Specifies that permutations of the subgroups be printed. Filename := string Specifies that an output or input file to be written to or read from by the pq program should have the name string.

anupq-3.3.0/doc/chap6_mj.html000644 000766 000024 00000111647 14355420744 016274 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 6: ANUPQ Options
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

6 ANUPQ Options

6.1 Overview

In this chapter we describe in detail all the options used by functions of the ANUPQ package. Note that by "options" we mean GAP options that are passed to functions after the arguments and separated from the arguments by a colon as described in Chapter Reference: Function Calls in the Reference Manual. The user is strongly advised to read Section Hints and Warnings regarding the use of Options.

6.1-1 AllANUPQoptions
‣ AllANUPQoptions( )( function )

lists all the GAP options defined for functions of the ANUPQ package:

gap> AllANUPQoptions();
[ "AllDescendants", "BasicAlgorithm", "Bounds", "CapableDescendants", 
  "ClassBound", "CustomiseOutput", "Exponent", "Filename", "GroupName", 
  "Identities", "Metabelian", "NumberOfSolubleAutomorphisms", "OrderBound", 
  "OutputLevel", "PcgsAutomorphisms", "PqWorkspace", "Prime", 
  "PrintAutomorphisms", "PrintPermutations", "QueueFactor", 
  "RankInitialSegmentSubgroups", "RedoPcp", "RelativeOrders", "Relators", 
  "SetupFile", "SpaceEfficient", "StandardPresentationFile", "StepSize", 
  "SubList", "TreeDepth", "pQuotient" ]

The following global variable gives a partial breakdown of where the above options are used.

6.1-2 ANUPQoptions
‣ ANUPQoptions( global variable )

is a record of lists of names of admissible ANUPQ options, such that each field is either the name of a "key" ANUPQ function or other (for a miscellaneous list of functions) and the corresponding value is the list of option names that are admissible for the function (or miscellaneous list of functions).

Also, from within a GAP session, you may use GAP's help browser (see Chapter Reference: The Help System in the GAP Reference Manual); to find out about any particular ANUPQ option, simply type: "?option option", where option is one of the options listed above without any quotes, e.g.

gap> ?option Prime

will display the sections in this manual that describe the Prime option. In fact the first 4 are for the functions that have Prime as an option and the last actually describes the option. So follow up by choosing

gap> ?5

This is also the pattern for other options (the last section of the list always describes the option; the other sections are the functions with which the option may be used).

In the section following we describe in detail all ANUPQ options. To continue onto the next section on-line using GAP's help browser, type:

gap> ?>

6.2 Detailed descriptions of ANUPQ Options

Prime := p

Specifies that the \(p\)-quotient for the prime p should be computed.

ClassBound := n

Specifies that the \(p\)-quotient to be computed has lower exponent-\(p\) class at most n. If this option is omitted a default of 63 (which is the maximum possible for the pq program) is taken, except for PqDescendants (see PqDescendants (4.4-1)) and in a special case of PqPCover (see PqPCover (4.1-3)). Let F be the argument (or start group of the process in the interactive case) for the function; then for PqDescendants the default is PClassPGroup(F) + 1, and for the special case of PqPCover the default is PClassPGroup(F).

pQuotient := Q

This option is only available for the standard presentation functions. It specifies that a \(p\)-quotient of the group argument of the function or group of the process is the pc p-group Q, where Q is of class less than the provided (or default) value of ClassBound. If pQuotient is provided, then the option Prime if also provided, is ignored; the prime p is discovered by computing PrimePGroup(Q).

Exponent := n

Specifies that the \(p\)-quotient to be computed has exponent n. For an interactive process, Exponent defaults to a previously supplied value for the process. Otherwise (and non-interactively), the default is 0, which means that no exponent law is enforced.

Relators := rels

Specifies that the relators sent to the pq program should be rels instead of the relators of the argument group F (or start group in the interactive case) of the calling function; rels should be a list of strings in the string representations of the generators of F, and F must be an fp group (even if the calling function accepts a pc group). This option provides a way of giving relators to the pq program, without having them pre-expanded by GAP, which can sometimes effect a performance loss of the order of 100 (see Section The Relators Option).

Notes

  1. The pq program does not use / to indicate multiplication by an inverse and uses square brackets to represent (left normed) commutators. Also, even though the pq program accepts relations, all elements of rels must be in relator form, i.e. a relation of form w1 = w2 must be written as w1*(w2)^-1 and then put in a pair of double-quotes to make it a string. See the example below.

  2. To ensure there are no syntax errors in rels, each relator is parsed for validity via PqParseWord (see PqParseWord (3.4-3)). If they are ok, a message to say so is Info-ed at InfoANUPQ level 2.

Metabelian

Specifies that the largest metabelian \(p\)-quotient subject to any other conditions specified by other options be constructed. By default this restriction is not enforced.

GroupName := name

Specifies that the pq program should refer to the group by the name name (a string). If GroupName is not set and the group has been assigned a name via SetName (see Reference: Name) it is set as the name the pq program should use. Otherwise, the "generic" name "[grp]" is set as a default.

Identities := funcs

Specifies that the pc presentation should satisfy the laws defined by each function in the list funcs. This option may be called by Pq, PqEpimorphism, or PqPCover (see Pq (4.1-1)). Each function in the list funcs must return a word in its arguments (there may be any number of arguments). Let identity be one such function in funcs. Then as each lower exponent p-class quotient is formed, instances \(\textit{identity}(\textit{w1}, \dots, \textit{wn})\) are added as relators to the pc presentation, where \(\textit{w1}, \dots, \textit{wn}\) are words in the pc generators of the quotient. At each class the class and number of pc generators is Info-ed at InfoANUPQ level 1, the number of instances is Info-ed at InfoANUPQ level 2, and the instances that are evaluated are Info-ed at InfoANUPQ level 3. As usual timing information is Info-ed at InfoANUPQ level 2; and details of the processing of each instance from the pq program (which is often quite voluminous) is Info-ed at InfoANUPQ level 3. Try the examples "B2-4-Id" and "11gp-3-Engel-Id" which demonstrate the usage of the Identities option; these are run using PqExample (see PqExample (3.4-4)). Take note of Note 1. below in relation to the example "B2-4-Id"; the companion example "B2-4" generates the same group using the Exponent option. These examples are discussed at length in Section The Identities Option and PqEvaluateIdentities Function.

Notes

  1. Setting the InfoANUPQ level to 3 or more when setting the Identities option may slow down the computation considerably, by overloading GAP with io operations.

  2. The Identities option is implemented at the GAP level. An identity that is just an exponent law should be specified using the Exponent option (see option Exponent), which is implemented at the C level and is highly optimised and so is much more efficient.

  3. The number of instances of each identity tends to grow combinatorially with the class. So care should be exercised in using the Identities option, by including other restrictions, e.g. by using the ClassBound option (see option ClassBound).

OutputLevel := n

Specifies the level of "verbosity" of the information output by the ANU pq program when computing a pc presentation; n must be an integer in the range 0 to 3. OutputLevel := 0 displays at most one line of output and is the default; OutputLevel := 1 displays (usually) slightly more output and OutputLevels of 2 and 3 are two levels of verbose output. To see these messages from the pq program, the InfoANUPQ level must be set to at least 1 (see InfoANUPQ (3.3-1)). See Section Hints and Warnings regarding the use of Options for an example of how OutputLevel can be used as a troubleshooting tool.

RedoPcp

Specifies that the current pc presentation (for an interactive process) stored by the pq program be scrapped and clears the current values stored for the options Prime, ClassBound, Exponent and Metabelian and also clears the pQuotient, pQepi and pCover fields of the data record of the process.

SetupFile := filename

Non-interactively, this option directs that pq should not be called and that an input file with name filename (a string), containing the commands necessary for the ANU pq standalone, be constructed. The commands written to filename are also Info-ed behind a "ToPQ> " prompt at InfoANUPQ level 4 (see InfoANUPQ (3.3-1)). Except in the case following, the calling function returns true. If the calling function is the non-interactive version of one of Pq, PqPCover or PqEpimorphism and the group provided as argument is trivial given with an empty set of generators, then no setup file is written and fail is returned (the pq program cannot do anything useful with such a group). Interactively, SetupFile is ignored.

Note: Since commands emitted to the pq program may depend on knowing what the "current state" is, to form a setup file some "close enough guesses" may sometimes be necessary; when this occurs a warning is Info-ed at InfoANUPQ or InfoWarning level 1. To determine whether the "close enough guesses" give an accurate setup file, it is necessary to run the command without the SetupFile option, after either setting the InfoANUPQ level to at least 4 (the setup file script can then be compared with the "ToPQ> " commands that are Info-ed) or setting a pq command log file by using ToPQLog (see ToPQLog (3.4-7)).

PqWorkspace := workspace

Non-interactively, this option sets the memory used by the pq program. It sets the maximum number of integer-sized elements to allocate in its main storage array. By default, the pq program sets this figure to 10000000. Interactively, PqWorkspace is ignored; the memory used in this case may be set by giving PqStart a second argument (see PqStart (5.1-1)).

PcgsAutomorphisms
PcgsAutomorphisms := false

Let G be the group associated with the calling function (or associated interactive process). Passing the option PcgsAutomorphisms without a value (or equivalently setting it to true), specifies that a polycyclic generating sequence for the automorphism group (which must be soluble) of G, be computed and passed to the pq program. This increases the efficiency of the computation; it also prevents the pq from calling GAP for orbit-stabilizer calculations. By default, PcgsAutomorphisms is set to the value returned by IsSolvable( AutomorphismGroup( G ) ), and uses the package AutPGrp to compute AutomorphismGroup( G ) if it is installed. This flag is set to true or false in the background according to the above criterion by the function PqDescendants (see PqDescendants (4.4-1) and PqDescendants (5.3-6)).

Note: If PcgsAutomorphisms is used when the automorphism group of G is insoluble, an error message occurs.

OrderBound := n

Specifies that only descendants of size at most \(p^{\textit{n}}\), where n is a non-negative integer, be generated. Note that you cannot set both OrderBound and StepSize.

StepSize := n
StepSize := list

For a positive integer n, StepSize specifies that only those immediate descendants which are a factor \(p^{\textit{n}}\) bigger than their parent group be generated.

For a list list of positive integers such that the sum of the length of list and the exponent-\(p\) class of G is equal to the class bound defined by the option ClassBound, StepSize specifies that the integers of list are the step sizes for each additional class.

RankInitialSegmentSubgroups := n

Sets the rank of the initial segment subgroup chosen to be n. By default, this has value 0.

SpaceEfficient

Specifies that the pq program performs certain calculations of \(p\)-group generation more slowly but with greater space efficiency. This flag is frequently necessary for groups of large Frattini quotient rank. The space saving occurs because only one permutation is stored at any one time. This option is only available if the PcgsAutomorphisms flag is set to true (see option PcgsAutomorphisms). For an interactive process, SpaceEfficient defaults to a previously supplied value for the process. Otherwise (and non-interactively), SpaceEfficient is by default false.

CapableDescendants

By default, all (i.e. capable and terminal) descendants are computed. If this flag is set, only capable descendants are computed. Setting this option is equivalent to setting AllDescendants := false (see option AllDescendants), except if both CapableDescendants and AllDescendants are passed, AllDescendants is essentially ignored.

AllDescendants := false

By default, all descendants are constructed. If this flag is set to false, only capable descendants are computed. Passing AllDescendants without a value (which is equivalent to setting it to true) is superfluous. This option is provided only for backward compatibility with the GAP 3 version of the ANUPQ package, where by default AllDescendants was set to false (rather than true). It is preferable to use CapableDescendants (see option CapableDescendants).

TreeDepth := class

Specifies that the descendants tree developed by PqDescendantsTreeCoclassOne (see PqDescendantsTreeCoclassOne (A.4-1)) should be extended to class class, where class is a positive integer.

SubList := sub

Suppose that L is the list of descendants generated, then for a list sub of integers this option causes PqDescendants to return Sublist( L, sub ). If an integer n is supplied, PqDescendants returns L[n].

NumberOfSolubleAutomorphisms := n

Specifies that the number of soluble automorphisms of the automorphism group supplied by PqPGSupplyAutomorphisms (see PqPGSupplyAutomorphisms (5.9-1)) in a \(p\)-group generation calculation is n. By default, n is taken to be \(0\); n must be a non-negative integer. If \(\textit{n} \ge 0\) then a value for the option RelativeOrders (see 6.2) must also be supplied.

RelativeOrders := list

Specifies the relative orders of each soluble automorphism of the automorphism group supplied by PqPGSupplyAutomorphisms (see PqPGSupplyAutomorphisms (5.9-1)) in a \(p\)-group generation calculation. The list list must consist of n positive integers, where n is the value of the option NumberOfSolubleAutomorphisms (see 6.2). By default list is empty.

BasicAlgorithm

Specifies that an algorithm that the pq program calls its "default" algorithm be used for \(p\)-group generation. By default this algorithm is not used. If this option is supplied the settings of options RankInitialSegmentSubgroups, AllDescendants, Exponent and Metabelian are ignored.

CustomiseOutput := rec

Specifies that fine tuning of the output is desired. The record rec should have any subset (or all) of the the following fields:

perm := list

where list is a list of booleans which determine whether the permutation group output for the automorphism group should contain: the degree, the extended automorphisms, the automorphism matrices, and the permutations, respectively.

orbit := list

where list is a list of booleans which determine whether the orbit output of the action of the automorphism group should contain: a summary, and a complete listing of orbits, respectively. (It's possible to have both a summary and a complete listing.)

group := list

where list is a list of booleans which determine whether the group output should contain: the standard matrix of each allowable subgroup, the presentation of reduced \(p\)-covering groups, the presentation of immediate descendants, the nuclear rank of descendants, and the \(p\)-multiplicator rank of descendants, respectively.

autgroup := list

where list is a list of booleans which determine whether the automorphism group output should contain: the commutator matrix, the automorphism group description of descendants, and the automorphism group order of descendants, respectively.

trace := val

where val is a boolean which if true specifies algorithm trace data is desired. By default, one does not get algorithm trace data.

Not providing a field (or mis-spelling it!), specifies that the default output is desired. As a convenience, 1 is also accepted as true, and any value that is neither 1 nor true is taken as false. Also for each list above, an unbound list entry is taken as false. Thus, for example

CustomiseOutput := rec(group := [,,1], autgroup := [,1])

specifies for the group output that only the presentation of immediate descendants is desired, for the automorphism group output only the automorphism group description of descendants should be printed, that there should be no algorithm trace data, and that the default output should be provided for the permutation group and orbit output.

StandardPresentationFile := filename

Specifies that the file to which the standard presentation is written has name filename. If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which GAP was started. If this option is omitted it is written to the file with the name generated by the command Filename( ANUPQData.tmpdir, "SPres" );, i.e. the file with name "SPres" in the temporary directory in which the pq program executes.

QueueFactor := n

Specifies a queue factor of n, where n must be a positive integer. This option may be used with PqNextClass (see PqNextClass (5.6-4)).

The queue factor is used when the pq program uses automorphisms to close a set of elements of the \(p\)-multiplicator under their action.

The algorithm used is a spinning algorithm: it starts with a set of vectors in echelonized form (elements of the \(p\)-multiplicator) and closes the span of these vectors under the action of the automorphisms. For this each automorphism is applied to each vector and it is checked if the result is contained in the span computed so far. If not, the span becomes bigger and the vector is put into a queue and the automorphisms are applied to this vector at a later stage. The process terminates when the automorphisms have been applied to all vectors and no new vectors have been produced.

For each new vector it is decided, if its processing should be delayed. If the vector contains too many non-zero entries, it is put into a second queue. The elements in this queue are processed only when there are no elements in the first queue left.

The queue factor is a percentage figure. A vector is put into the second queue if the percentage of its non-zero entries exceeds the queue factor.

Bounds := list

Specifies a lower and upper bound on the indices of a list, where list is a pair of positive non-decreasing integers. See PqDisplayStructure (5.7-23) and PqDisplayAutomorphisms (5.7-24) where this option may be used.

PrintAutomorphisms := list

Specifies that automorphism matrices be printed.

PrintPermutations := list

Specifies that permutations of the subgroups be printed.

Filename := string

Specifies that an output or input file to be written to or read from by the pq program should have the name string.

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/chap7.html000644 000766 000024 00000036306 14355420744 015605 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 7: Installing the ANUPQ Package
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

7 Installing the ANUPQ Package

The ANU pq program is written in C and the package can be installed under UNIX and in environments similar to UNIX. In particular it is known to work on Linux and Mac OS X, and also on Windows equipped with cygwin.

The current version of the ANUPQ package requires GAP 4.9, and version 1.2 of the AutPGrp package. However, we recommend using at least GAP 4.6 and AutPGrp 1.5.

To install the ANUPQ package, move the file anupq-XXX.tar.gz for some version number XXX into the pkg directory in which you plan to install ANUPQ. Usually, this will be the directory pkg in the hierarchy of your version of GAP; it is however also possible to keep an additional pkg directory in your private directories. The only essential difference with installing ANUPQ in a pkg directory different to the GAP home directory is that one must start GAP with the -l switch (see Section Reference: Command Line Options), e.g. if your private pkg directory is a subdirectory of mygap in your home directory you might type:

gap -l ";myhomedir/mygap"

where myhomedir is the path to your home directory, which may be replaced by a tilde. The empty path before the semicolon is filled in by the default path of the GAP home directory.

Then, in your chosen pkg directory, unpack anupq-XXX.tar.gz by

tar xf anupq-<XXX>.tar.gz

Change to the newly created anupq directory. Now you need to call configure. If you installed ANUPQ into the main pkg directory, call

./configure

If you installed ANUPQ in another directory than the usual 'pkg' subdirectory, instead call

./configure --with-gaproot=<path>

where path is the path to the GAP home directory. (You can also call

./configure --help

for further options.)

What this does is look for a file sysinfo.gap in the root directory of GAP in order to determine an architecture name for the subdirectory of bin in which to put the compiled pq binary. This only makes sense if GAP was compiled for the same architecture that pq will be. If you have a shared file system mounted across different architectures, then you should run configure and make for ANUPQ for each architecture immediately after compiling GAP on the same architecture.

If you had to install the package in your own directory but wish to use the system GAP then you will need to find out what path is. To do this, start up GAP and find out what GAP's root path is from finding the value of the variable GAPInfo.RootPaths, e.g.

gap> GAPInfo.RootPaths;
[ "/usr/local/lib/gap4r4/" ]

would tell you to use /usr/local/lib/gap4r4 for path.

The configure command will fetch the architecture type for which GAP has been compiled last and create a Makefile. You can now simply call

make

to compile the binary and to install it in the appropriate place.

The path of GAP (see Note below) used by the pq binary (the value GAP is set to in the make command) may be over-ridden by setting the environment variable ANUPQ_GAP_EXEC. These values are only of interest when the pq program is run as a standalone; however, the testPq script assumes you have set one of these correctly (see Section Testing your ANUPQ installation). When the pq program is started from GAP communication occurs via an iostream, so that the pq binary does not actually need to know a valid path for GAP is this case.

Note. By "path of GAP" we mean the path of the command used to invoke GAP (which should be a script, e.g. the gap.sh script generated in the bin directory for the version of GAP when GAP was compiled). The usual strategy is to copy the gap.sh script to a standard location, e.g. /usr/local/bin/gap. It is a mistake to copy the GAP executable gap (in a directory with name of form bin/compile-platform) to the standard location, since direct invocation of the executable results in GAP starting without being able to find its own library (a fatal error).

7.1 Testing your ANUPQ installation

Now it is time to test the installation. After doing configure and make you will have a testPq script. The script assumes that, if the environment variable ANUPQ_GAP_EXEC is set, it is a correct path for GAP, or otherwise that the make call that compiled the pq program set GAP to a correct path for GAP (see Section Running the pq program as a standalone for more details). To run the tests, just type:

./testPq

Some of the tests the script runs take a while. Please be patient. The script checks that you not only have a correct GAP (at least version 4.4) installation that includes the AutPGrp package, but that the ANUPQ package and its pq binary interact correctly. You should see something like the following output:

Made dir: /tmp/testPq
Testing installation of ANUPQ Package (version 3.1)
 
The first two tests check that the pq C program compiled ok.
Testing the pq binary ... OK.
Testing the pq binary's stack size ... OK.
The pq C program compiled ok! We test it's the right one below.
 
The next tests check that you have the right version of GAP
for the ANUPQ package and that GAP is finding
the right versions of the ANUPQ and AutPGrp packages.
 
Checking GAP ...
 pq binary made with GAP set to: /usr/local/bin/gap
 Starting GAP to determine version and package availability ...
  GAP version (4.6.5) ... OK.
  GAP found ANUPQ package (version 3.1) ... good.
  GAP found pq binary (version 1.9) ... good.
  GAP found AutPGrp package (version 1.5) ... good.
 GAP is OK.
 
Checking the link between the pq binary and GAP ... OK.
Testing the standard presentation part of the pq binary ... OK.
Doing p-group generation (final GAP/ANUPQ) test ... OK.
Tests complete.
Removed dir: /tmp/testPq
Enjoy using your functional ANUPQ package!

7.2 Running the pq program as a standalone

When the pq program is run as a standalone it sometimes needs to call GAP to compute stabilisers of subgroups; in doing so, it first checks the value of the environment variable ANUPQ_GAP_EXEC, and uses that, if set, or otherwise the value of GAP it was compiled with, as the path for GAP. If you ran testPq (see Section Testing your ANUPQ installation) and you got both GAP is OK and the link between the pq binary and GAP is OK, you should be fine. Otherwise heed the recommendations of the error messages you get and run the testPq until all tests are passed.

It is especially important that the GAP, whose path you gave, should know where to find the ANUPQ and AutPGrp packages. To ensure this the path should be to a shell script that invokes GAP. If you needed to install the needed packages in your own directory (because, say, you are not a system administrator) then you should create your own shell script that runs GAP with a correct setting of the -l option and set the path used by the pq binary to the path of that script. To create the script that runs GAP it is easiest to copy the system one and edit it, e.g. start by executing the following UNIX commands (skip the second step if you already have a bin directory; you@unix> is your UNIX prompt):

you@unix> cd
you@unix> mkdir bin
you@unix> cd bin
you@unix> which gap
/usr/local/bin/gap
you@unix> cp /usr/local/bin/gap mygap
you@unix> chmod +x mygap

At the second-last step use the path of GAP returned by which gap. Now hopefully you will have a copy of the script that runs the system GAP in mygap. Now use your favourite editor to edit the -l part of the last line of mygap which should initially look something like:

exec $GAP_DIR/bin/$GAP_PRG -m $GAP_MEM -o 970m -l $GAP_DIR $*

so that it becomes (the tilde is a UNIX abbreviation for your home directory):

exec $GAP_DIR/bin/$GAP_PRG -m $GAP_MEM -o 970m -l "$GAP_DIR;~/gapstuff" $*

assuming that your personal GAP pkg directory is a subdirectory of gapstuff in your home directory. Finally, to let the pq program know where GAP is and also know where your pkg directory is that contains ANUPQ, set the environment variable ANUPQ_GAP_EXEC to the complete (i.e. absolute) path of your mygap script (do not use the tilde abbreviation).

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/manual.pdf000644 000766 000024 00001714651 14355420744 015674 0ustar00mhornstaff000000 000000 %PDF-1.5 % 190 0 obj << /Length 254 /Filter /FlateDecode >> stream xu=O0pw#JJA !@*Elj^Yzw6ES\Z1hA("E.6мY?of5b 4aAr3[jq>|> stream xڽTM0WFrc;i[X-J ƛFq)po%v+Xw޼L A|5_ J0OE{R)GIL1!Ze3Yw!J0'܀UcfB,7 ,^8(b)Y(]EYꮔN h]V(&|(D*G?bb/̱z ,K,vrBn4|KY!DŽaz4%޴tY ?<Rem;u(V6oJZ[!|a(HqD`r^.j EWFTmed\X^fBy bSJo ֥83atlj%BXgl9oݸۉa驯օ;YAx.+~z'ŀtzeBUƙ5t +z͓^*d}>]Ew8z[v3,ָAwx@ ?!w"d#Y?RHd,PؿcuJvd{Iwΰ^&?#i endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 833 /Length 2130 /Filter /FlateDecode >> stream xZ[s۶~ׯc9!qt<:qz&m]9&~%FX"U>wZ ό ~.B #FLA1BDsDs;;/Pl@)RZ#*Q1dB Yc@ 15Z#")C@- QA1jk` 5HE jAT`+}j@-8@b fHY;5F P Ei a`A 9  d,tLvXW =0GxB˼ BB" sHK؀MJ .+0+^H%h (8tW \6IJr: # p^ױu8Jce!aFJ _ .lwp۴t p!mTH ՚ .34C-xa b1hqGq?f@P#XVpa_x%A1?@-/*g&V6R_$Q|^ oy."}$S[d(mEn-6{PRrg l:5]Hsgc4_p*g)\qQN&C׽V;dZ5M:Ncw;sW 'ԑ1Z=- ƥG3e*M=FCZC.|VjMq.Jl#iCsx:`ue{ ut죮Mz `#'Ë3(DCVƞY8 _]iܞȬkS^cƈhJz]ӆ;_~X:ȺOVG~$ΝQ.2=XfON Ψgu=P..yw>Ii@"Ѳ(8K [_j7ǦxC1-:)-˼|Ȝ"JrnOYgtF@xw~mcO#{1ܵSZRz# <2_sWژs~I}z7j&k";(d/;gKT>ev;]_ich"ll-M|f=dJͺ\N:wQ< p[;Hna"]X;N.}.WIKi_\8Êyƙqmd}](", oc4gy-#?nfa!-{q]9|_@eN%z3Gܚy%;{or·{<T( vpBPO E๟Rn.Eba|f}tش[~ud K tS(|M΢@e>g@L8]dYb DWn5Ol|vF_-Z+X7!Oi`Uמr߄9MD7DG0:G񤼲Byd7yVYY bm9"_.iQ&mUiN"m i"@?hY1xʖUkSwS"#k=AfVӎW70>[ËDΣc_%r2Z ܇0r:f!3oVusYtQWin"W#F!idQJ#ʐ4,"Bu "㷓6><8ćU\SbLem,qt̮˻$JG(Yt{<B )u$9CS2?›bxh7ETEҞ\U*%,`PLnrj,fEhfm:ڞs,2Zz1I-htx;MQ J[Y endstream endobj 206 0 obj << /Length 349 /Filter /FlateDecode >> stream xuAo0|w+G]ɲ8v@쐨h+V$z ޯ_J@Hq=>  _ 2Ҡ$1M1dK=^,ˁi"ZZՉmaYKaIA HfvcSLK. sƥr7\)Hҕ[$\tZ t $QBܱھ}Ԧq*{:Zt:&vW׷qSd+A1ٍDf뼼OznxWݑTOUwMU`}6; =BД0l|OmUW=_dgFN26a/ endstream endobj 244 0 obj << /Length 1341 /Filter /FlateDecode >> stream x]s8+3 7p[owmۋ^Q_mpZl)0:{#Vlkz"{К][s)#ķfs~#ge1gp(%~$nrq1`1|u@>+WQlA;?`zA3@3p.=ˁإT(?N MQ_ө\:^ġ*.Cu.FyFh?& 5(>JΛ+7I0…9y?/ ; z  6xR7B6¬v}4<50^"fȧ_ #jMACX4,HeT4ź\T-$@J}$ 0ʐ l7EՏӰH"=L,kဵ׌W7f 1f|O%.,b!&5Njڠab)\bqK7=( 3 }!R!seV<`Lx*#{TJxPleXRym>`}=26D8_rj^@N>~9_~Ux|KL_k?<=]TUϽ-ͷ=oJf́$P$a{z2]\E|~'XF]ʕ앫DH9Bd/dxfң10ZÔiH04N6:M<$w>O@ K ܝ֙Ldu<v<5HB '{~|_- endstream endobj 262 0 obj << /Length 641 /Filter /FlateDecode >> stream xX]o0}WygߏLPic(}`aR tT *s`p>\1 $N@0"HA& cp_nߢzlFk?RSƱfLa3PNuj.fT )GJpUx7n2`JcuVeM>D+-gcBPę% Ҷfˈphef_KZBżFx lTlxn-zIn/le܎Fv>* ՓbkY*+ u_#Bnܼ2yaQ2fLmwZ&NFC;6%.3iwDZ_8,O)Nt - qbYLKs` Ƈ;76y(#_>TQ&~n(AS'%3W]mA% k mr} aQqXαCغ*2K ڐ4M0ݟrpW-oz2޴=}gSFDi?Awףw\\^n]4>T]6FUZ{3M⡝n 4_̝+ÍǗ߰0!^? - endstream endobj 269 0 obj << /Length 2073 /Filter /FlateDecode >> stream xڝXKsFW*@${eǩڛҞTeB$VxhF~{g@LjA_@W]}xCۻ7?t)њ*D Ҋv%z7>oh n5g*I2LIX%Q=f}eWɿ5 l4mhoE~K+FIJӠ%Ht-OՄ\d g$rh.\oOnLPi>{D*f;`jFE z6,G}?!("QcLqS6D'QIyk]k*sjk|rjjFPE D)d釷m?5QezKjS=kS>kaV{?c̚\E(}I+K!N4] T~,h~8y)KiJV&8#%29C4IyrT,@o#Nĩ:/#"v%2D$Z@1cq$]I9'1Qnx0ۦEy=v} )FbUqJ{kMs{;xKOYeg惔rZRVl]޹ߢ:y׽95{MY66uNy5yRQ`Rʡ* %{Je4x3 =tcCI صՒR)].x'kñ2:dCw#- $.LjPKA w;;Qs3GZ lΉbVA_Q޹Y wzE ap,{H `OmQ04.yfTxiICR]˴kG۠9p y8vvZ2:VM]d x$h+?HRj1\v3gӾQxq-Le}S5a_tU@R@Rɐ)T_. ; BZ_Р[[bEN>+Y|(y+(OGuɲ 7XPz0b5#H:jG8S @f  |ۅQ(&gZ? <0m6;&bx|< s{:Df  ]Fon2ҷy"{DpRG89aJf$e|>`ɹRƮ=)4d}^yLbWK?'6#BJg8'ą@HHkSrәͤ 8;- :!`)/P-%Z_N-LͿ (KvK!]%Q6lB^4N IgJdt%),[  g9[NulOkM[@6_SH\>۽,s6pUwbvACa͢h/hT٥A#7)m[ Lj'@4bAvp^ƠkovbwzAwb31u /~Pӵ@,ͱ⵷V? .Xψ> e+y A <fJ6'QO笽>b3=8D.|a$4U} Lz+SaGnXs߇_3!otcTۻ7RA@ endstream endobj 293 0 obj << /Length 2844 /Filter /FlateDecode >> stream xڵY[۸ ~ϯ[XK.6fg6nOIgB˴FPl\c"@(X{OEgE ?IY-n7O͇o"~&2,/bBڋUd~ XѤUn+^7,I?̔[QquUx+ei6-׷iiJ)WxWI4&,ߊ=֦2;8-S{ tUI_JXWQF+7Foj\4$l_,ThviOQ}UY"wMWZZ;v4zwrO+&o"b*n(ϴuS-Mq슺zKSYSbTu#o49m',,lk3g1(G_WF]+9וBi3NsEl '҃QfV/yIZ^hoe~&6oC?vhu_n>MK>V mhh$jKnjpmtQ)4;F{K`?M/T \"Wx9kmusOMX'COMpc{6:t3 _PRn.*[#bpy}0Ի6 ?zJڸݞ_s!✕J/3~;4֭bm>K!U!mL|T$jl*'wB&-&r"wkH 'H $;/U6 ^t4[PE0., JN|&(s16 r`Rc.祐8FF13_!ʿm~ Bռaze̦#* Ո"7DS|Z?mѡqՒ~4Sco&4t*q+֎dP$t =Q(?lz!5Oad:IUG-mЩ:-x 'ä"(S rE"KdNglx΂'9L&g5gN{ 3LNrN3 "O84Y )aShx Hik{qc~.1u ܂xWng nH٫N$cӊE@=mgY_*jyc ,WwlT$҉O/UGǘ=;e;ԷL(o;MԶU= 3 ⩬ 9pWݚEn- 3ώ2capsC5ko@Ja!P/X\,ǂC_%X,O;3`d xnOi 0OԄlڬNU 3? 7ri\с 6E!nyV|Qbaؼ(#Ep_]O6pCCb}?qgMݶI.& ,H1m`TM4r%r#×"V Nm gyAE0f6d0оv`wιpBl(SGS†)EZyQ=KҔHI(;N<ؐH3Zǵ+ =w Nρ\JHCF7ǣ6gj- fyuO"^ԯKCzfBV028WT#lra=I N+!yPKkH]5Me4;mwK@ NSwSSA *Up^y@ *U2 +Eu\&~߉n*OM ea>PnyoG8  8HhX4T[mJ/ŁL,j5cA /b]/L;kHrBšD3~ HR;H>Oo5yoL4-$-k~;: /j,8oysGw'Δ5n=&]NiMŨd[`+n%Cvo"5-8]>}`BacQ1)LHK2vjbIc^\6a05+,<~d ^.l:fC_};^GrldWyPle|J+ s5io',N{6R^:=>ɼX g2E~ʉv%/1 endstream endobj 304 0 obj << /Length 2888 /Filter /FlateDecode >> stream xڵ˒۸- '0u6eI.¡8mIʓty8a` vWqُjű4U3*6)6]~b- ǫ=㌯_]M_,IZg,{rU״yy]4j͆`9 `+,ar䫋LFenwD+Y3QLߚ22vUO󥌊nKVuMmu!MB} lʾPnR/g82}Q,&a(bF;TC]f2I||2I˷?\ u_i.ο&'kE Z+>CjXdh+ c)U"Ik/$P@o1̜ ?yg] c?J;eKkM! A: '';L/׹_X|HP' AdZ2`g_ ݅Sy(à!ZѾVq:6km}GokE gr<~Wn P6U͖@ B)x컍"v4|9ϽHCHڕëgٴ,veGsqSTB`eL3Ք&[qU8X4>(=scdV:.)8wU2 ~ 8ǬW"^eaRe^Ozg<rFaPՃ&w[2_TopzK'm?:dDo߾ҥo~Xe*N8 Xbʂ4 uOgv-!P^ri0CvPv;=I#?k]A9}xdy>R,vׂ V%:|f:U G!E g ReN҄ 锔Og}A^fJ҉5`YZ`_+ r0JO.%DV5@f)3e XjԶ /ai25ƒTWuPWc8M9]}!(aXD6<bvON Jg)⯒Lq!bpw\9e#:*zve[fd ݑN{΄]9ΡWLgzRJ*͝kpm`Tmg}34:ԕ:m j*]YN 1H"ԩGO8٨^:.{q Qcl?orOXCJF)Z@,%5+351~p#wwbMǾYߪ{=K{|vR'TPv_EzꏌEZ?_g:a3s*,~9iy]N12gc`ҋ9a̼(Ft0{ ԹHOCp1FGK>0*D0i#:Ew-2<<^Hߔh7Ǽ3WuE5@m?Ј$--ksazwgu\Wl>Aع$Ȅ7MI6,O ]й#4Jv߇Bu1~T!S&o˶gr5]t7m&')J8nh3wձS3TNqO3@pٜ%Iğf584wG%Z`1rzNRΝOܷ{k Z=%Z!8ֹXtgN={~6%u\0N&PdNqTÄn*J*k R$  dF'זk ób%3_o endstream endobj 202 0 obj << /Type /ObjStm /N 100 /First 900 /Length 2591 /Filter /FlateDecode >> stream xڽ[mo~rf8C( p v?\C,Ľ3C{٣j˲n՞K"yyfHS!j-U-0QAIBc 9J,dpBJ 8֊4x%." D_- Ki \E X2 A(g7cA2D2ꏷ Յ5T,rj~L$hȆ_ \Bnנ)o)$g SpҀT+qR!34[0rmkh6W/`'X1% \Z(gIK(T}L E$ֆy3(&PjCj J.**)TePpp>%*8)`a>nJSUGi ;Z 167ВAMqJ &+,,Ak@Fgzx]JnǘwJ]@c(Rvkn f sE pcM[.%3< " FL$@Yz +[A0ad1bz] o._.Ir. bx:ۆ_sTL8L3\&fhB)EèoB|pzr2N϶|볟՟ݻw_|{U\l~<_9nU F^J7/>ڬ$ Hv=<__x~!`h ?> Ëmž.[-z{w-]m^Ɛ50wI6h"Fwǩ=:O|TX"GDB1C!Y._>Wzqqs ׫ay=ڞ}|1ݜ8&v%6fQS|k{\!yrs?j?Z?~q]wyq]wyq]tyI']tyI']tyb>o4^\l56&uyJAa<OKbu`C/ЫVx\7LZ?j5Pcg:ֈxpnÐx#"yOp\I,y.tZrqm$ZU#‘Rl2I bPn5'p̯kXB)uƑ5E.CZ̯ *97hjBa a$,x O8a{$L-j ϊx^d1L@j+^LrQ'6 :?$7`Kୂ8X'p+٩W^@ڨfA(AxNBAkY'VP8 Qs+ {- g o1Դٍ F= ׸߄.E%C)ޘ2drJF 6s'SH&pozj+'pHSArWH'pO=%$ jj:c~; .>`f(a6a- X8\V&pqhqB0*}IQ燑 3զpqi!Dnc CJ(Pj)7wԢ57ŤD_W)qFSzܫf|f}Jri;ivyڎo*}U`bSP©7 QT8A!f[۸ PPOYk/,5f4%;)o$G| _k0O*?cLJFW}3ES80) .b~u>ί|8ؽ?7;!0djL&PŻ@.J0 s1/ Z 2crM; -Mɽ6Q:5t 0.ed{ 77K7gh9C'gˬ]j)CH qc UE洦Tά*>}ع-ݿ tk $'[jմYn(!qo<܁G9梕U!oڛ/,|O> stream x[K۶WhWi,73mN E*$}/Hx  $ExgyBL$xq} 2A8[Qz`,YeIfSTfc%nŊ IdES$yjh;Umpx"_7~7E˫.Շϻ]2rwwS7njmqE{=AlzE5VUɻi#ucMb9ʨ+E),͛,զ+t"MEYڻ*.7mswUr7H!Fll0laiتo`Zwj&Bm 7Cn$*:ea~e(z}tkնT!O$]n.[a6YVSfju pS YY[l[wMq{w~F5]^/ Lm7!D/;7aoa#@&teF:NlzNnFfCpS2%VV4a;ոyC$j=asg$?&i6!+SFݨQl~xB@y SVH6T"` HL]3+\G"E`̘*$CLRPH?Jo&?_&1E:G=}+e tL"'J1+[!}B9°f2^qEh?w`?I<i`8 mIwi‘L&IMYx<4Wɬ[=;MѲ!.dv#=g'I,dP';7Mn/[nboѨ~` pC7yh1={ m~n o@({Fc\ҍXYW̨D clˡ,Emڵ L "4%zRbދ# #Xa0o~, DNi-/ %L1),䇛\q@:q~c+,)rx-yΐ3L򯴼L mDtX@U߾}:F^{&ZbLb`o^5LCԏMڱmR]d9֑!6iF-^WZ+ED&b2ͺk>ڟM}GI'~:AFJ+t8Yь.w6a9U>07;V}rY|]0#@~*-"='LQeWz=1a]6?:McˏNA̫]$5C.*b||Se%> kY0A❓ 룲{GpZe?ʍL am6zg:"2:$ws)"kl}F:2WUlYl1l0uc^ʞsBu<؀.QC',c$ooY}y1]ry gGg)$@m8[~{cgun(hQ/ _`#h**GɅM88\]9T}~&v` O@f}q$>؈OTMzTWX>M=F9.߄d fʩkL{>J1UTmpИ<.h:|b`OLK}NHn5x:t}{Qwk!zf fʵ)pGhr)5d&ݽϋG= 4AK^`g| <˲qսьR1'q*](<1`ZXQv PygT^Eʑh%T^ֺmWӻ\eHv]iZPvžԽRִ_$X|]1>>k&Y k#JyUa$]VZ5tFbo%f.c L[+85lX"l/ p(zW7bl'fF\j+w4#b**OJɈg(p٥j&3%y1;K@\Z/쮷 9%;a~ђQnMэym>G\M^q`İo&-`j, ;?uN>vV6Ŀv7\#M"ָKT黋A񧯳䁙w([ʾ]&p۝{q^T?15#VZdt(RЇv#S(vxHVUmS+?FQC-R (O# -#ÃE9Ór>>;{U`tt:D466F<-LXRtו!rUYѳRqCѵvaoXorFH{?d6ǥqaJ }W܃9m+RM@8=2N/p]Ј7W]6T׵lt6:oK>oL.Ds2$8ze 8ѝwT4p7t..A0nQKGb0*3ѐQ,'2\8vx~cMݱgc= "_OD-f8M?z D7 V%$ufSv2/0H 7vsV<z!rރg#!Q("L䰵"X8yF%gu: 71:Ώ7{_IQuq'1B(.)Ʌ^ 11_6O ,;4ٴ'~ѷK;HyZq M˹ .~D St'3a`ObӟyhG n,(D2g1uE9.z&Ԁ#^XhU_ՈZ=,gbL Ч~sH'= endstream endobj 346 0 obj << /Length 4259 /Filter /FlateDecode >> stream xٖ۶=_1o՜F(Vdqd'ѰHb{/.@-̓M ozw_~OwMO)aN'&6wo^O%7YBMKy|BwK IaP$MM޺R6^i„VM1|&w~vΏ 7J ѩ=ED/:Jy7#"R09! ;sHM(msW(\UOh(Cl庺gj n1d$&S~)hxx=|[WCl [~ʀBE,I:FuIwY?RE",$!,Q8Ԭ.ߜ'+ .?6 @ Ȭ%ȭ|]6fI H qڧ,.͆rGV}YeP7ՄTUt>Z S@$wܵaWc+&h')jN%]j9 *c%N iBVEa^@Pƍ!s%~2bƙB?w`, ԛOvI-Zq7deጋ׀.Jޫ׬;TSygtըCMAvxUFYTESF,V:uHh.MaOW3rsYVA$S g7+(F6O( S˾1T R ӪwjGE FJB``ANEԊ >5 vcm޽f= eǶWhBGIom(g3%ĉ:2)9} Vug<O NU>_*؉tjiYWqL#8UHc\Z~={UCu޴untMh@M2y4t$:S0fv/qaX?wMU: #D`'sf4;)_|ll:5N SYj`yqc9kuhD YKXҕ!OfKՖN{08W=fD,s?=f6!>p왐d]ANB *0ሧ$,e5:DaݚxKyx=pf1ȁRq̤!XEO y>'>{^RY,>mF1(A 73ɉ?S=`A |b؅+&th:G~ Ȑmd CRꎔ x|sQ}!tb֊9 687w" ` 97 ^S01?ٺ[SÃҴP$|GZ2U7H) W f m e}QmTcS3]8OhC#];IϣhRP nBIr7a e=R&{)03Āf=LϐX b?49%]x4貘s9ѬK=hxl,b#JE0%Ȋ 9٩Dŧ;|yM%DU2$9?E SƠ p!z˾9Qm ;9(򢜂Jbߖ9" .% 5ܬ")tBJ<%gIL犘s0rX6SGC~n>2Fpg ݁Q wJŢD `/.YgLuQ",۔vm/Yq-0MAAiȊaF7]?U:w_)zc$0ʻDy %?8Oc@L~;V,H/s"JCVtwcyy YP c,D~9>zE!.~>e^FqT//Z_8 Kg3G(6᎙ d?w*5D1cщ'Unbǁ]@7ib_"K2N4忊 } 2į}#;~ȫa< ^ յ[rfd'!B&cQsZCG|5C~>k %tHjS]o|QXSn[E#~h}ـ(v J8\youz8׻aߚdM9IrÙIoop1*ħ =ڏoG ppD6pCU?ҡ@HPN fiFDzP tMx F'#O3Tmą'"IEbʍOs|XeѺJڊ z_{cpbUhWxRgyynﲦqK["g| s}9JQ"#iSCX!fFt|-|g{j9J!얖X{HRb82Y ̓di Y{42x>B KU-Zxs6nYtކKR3=]J0 n'O6^&LڇS}=`Ņ- l,"R/"EVn Ic][a"O%q;-btD^n޺/[VS~+jKMHnƻ&| $XǛOݗqҌ鑾8L\NLZ{XI&-XpXo}yŔߨ{s|^ilvG:<*wV;VcTN v}M0]쳶.㻞ېDrw7ElW4qWŹ Aw!*dgs|DF1uEJan/FIͩ%w^^cu#Yџ#6tbŏj:fnx>&}6z*5pAF>CƱ%}L"/_]*gJBOfQ=YL>F<7eg"Oǎ(LcBPFuT 0 M=U`oH~QvK~N&Q;iplD* ^5r|bvKl}7pE B G70+(R$_6i,,l> l=l̈Ydۼ /gV&\Rݐа\uspݳYyvI#j&2QdYIQij⛈Dx0^E`8s;5}{?I $4)I3M}2muNߖr*9،t&6j7̇vu%Ǐt@ zNZрb8eFXvn#墷qAͰd0jepyg ]O2d:5`slK-9MʃZf/-([7tTB> stream xڵZo6_oq1y@ˡHs8+t%mE ,;v҃aRp86rݫ766(2nn(DMn)y08ڄRJ 0JJ8J͵JD&4c{uip2=5KOmPlgAܫqgñ7;Voힸyy.\ы;5lpk"I?;NT+^ܵ ɥvke0,,FGwj]e!i/x![Dd~B['D9(l- EtOKO}!V]GV+^((oQ8T_‷fLęt|dj/3SEItkan5Fȉ xDDY`MTQ:U* Y"0VȜv#3-DV$Ol6Kâ&Ipci)<.cqal(~q|;fW`Y4pd[0ƹ=1(ݍq"  { Ftm6 ԾQ鲫7v薦pUmWQiIMsYmH? i0ʫB:N~ywQ3 1P5.W |}"͖[sG'ըa`{Zc+cjmo\Ǒi֖H=Yb3ҸlR41tlkǪ$zUyR Q BN1J%|0S7}klgA` DBe-_$9?AЀjJN]V8d쳂/`ZϣF`s)$p`Om2 x ;}3OB&;k^C<2&pC &◨*t,G)`joCSBKl+H=Mi&LˎԉB]E(|Y0W\v7tEpҸƝԸtRfB/j V\A{l2z?0M븿T}E&T^pN3G %km% -nsTn%W\<PV {%n$>c.ϩ'EkeP 9m:6%nwXݗB"Yt3q`Krmܭ U"78 ERG5U_ Ƥ7~Iq۹; K^/X44/6]aPv . 9>W kDi2k%9E#d&BrQW4 UKCg}e=ˮݞL}Ka+tkR Beȓ^us7hTc%2}CusPzXk> oٛg5:ʎSjɠU .z4%vZfOEdz }xq̽FD/ oRCk] R@>͑!IKYԭ4zUь,32`L*G @h껪UX[oqB S"c$a.^fnx`/ }0q*Y83Rӕds=/I͇U8w8Ioz|HDԖW9:rq )}-?'Ǵы<'dmwbBhbXHкqܮ؀X=ɩV ;n4JT$^di-]Dn'WB!‰֘g"̋GU,TRrP$g[+m2 ׇؒ[HAQGR}|rݠ4xgp2Uexm*p5U$Uw~,ѷݴmٟرPew7|'nA_R3G5;TwKxIGcgwkG*Z R*9Oc׀wjjTX]nTLR>++IMg[5s22-a>!_)OyF[*q,`❞.p4)TC芕/#douSWHgCV G8Xۛ2 C?]Q$ش\u򻎩LVp?5*p endstream endobj 382 0 obj << /Length 1579 /Filter /FlateDecode >> stream xڕWK&-*HNvJlNkW[ v4ڃ hPϯ$:FIݏx?Fi(())!~_}MHx%er(=sFIZfў RdOɮӬI&eZIGU7.ׇfF9֦Sf8 ,,F5Y A=eD5rDahT ҎH&ݹjnu-q)&<wr \pbߞIԛ1q)/IkQ,nf6dԱ \/fޘ'*O}ht2Eۡ7.?DhS[ٮ2],hFU|bYI;Jϣqvxƽm$ڤѪ-bE>ԎN ;9k% :g t:V\fq6H3 Y[ zY1_Idlv[Fg Ѐ桦[Qn$v,u$-T|ebRp"Bx)|pqr`QZfW% &{S.zR|mZ?%oxJ#dF-͎q<et( Iwf*8<^nS,I&j8HuYz#<{g4Jd2ghl-;=zd^Î&)W0ZX9<ɶ#6AV&^TL&J" ppZJ<[6uunv{,g(AU']zdiWr$ D(iKDã5Ԧyu\PlђНfp׍L}K2MH8KfA8 ;a c63aH@!X?3:v  !7OI0P%\YΩSv08<~ƅ X'5".مDwG~(FAp`hKB@^<,X",2"),QT};!l 3s˳ MS䂤y2_!ƶ,=2ؼ%,Sxc>GڱN SInUDܙ9. \aKnAht#/|o7gw\`ool"K]fa*W?i endstream endobj 394 0 obj << /Length 2208 /Filter /FlateDecode >> stream xڵYo8_!@͐w@aM@iȒroCV 5$3½ǽWg=:;rOrERyW^1(/R2rb7ifsg~wz1 Yro,nt5}L$!N*-=Ya XH{RgneNeKԢ"b*Ze;-`Z7fE&[UEKV$4%Է *crZYW-ڛbh3gX更APSiM?9U^Z<܂FBӅ[fO~qWgR[G]n'o.%S""qRW|+ۺGUt(ןLԡ㐅Q,j_F/TJ*ͧ`()8,um:Y(adwN4뵮rz ]M晋$bVBoB*d|S>j3@V|jpU\@dJHD¥n Vwe%6&PLB&Gatl2*kCnhNu^\ׁ;DP|o+Kr#~F2BJhX,`*HbHU)?~&8du?R&qkt $wPf>ۤPH2>"G(&]Zc;Bn>/όwgA[mN 0c~ DRng5 Z-ʒPY!ʦRRH&g*m6B%MF`ܬu#AU&XhIKeMI8@ *l;%f2-Lnȗt_MmS;w !/nfυ >wV=GKOTA CҪ,^ޕn1`Onڬ)PQg+0XLS1vQWD*כҴBC+]7,# ؍f\cPLA?$Vq'u:DIqP@sqt-0כ;;6{ΗMohT| ͱev$c Iw;S>+n.uu3 #;B߿C,6%tJ~}/4ajWU"w9&غ:U9]glc'/IFb-R[ DilD,g45† lmݦ=AU]t;7$C@7@ٳJ˶Z wRU;,44%%|t=6c\cVС1+OJ7$Mo&Gn֗uV&Rm.Efh- v"(Jlp)r Re5m3 $qGQ^HUa$QUC0Xw8c AI@,q0.cL,˜nQܹ%;}Qۢ[YԁaoKC]iRTNsl8͆&P7mg,@b QN ZϼvPbL _>a>Žfc\۶vLŸޝMA y#ddS,/T `"JO?x$:&zB>ă{IzAAUQ7c@{+r, \8 :zwo ]75ff _t쑁w؞1y0ٲuUo~x!,H*tSLgz\&'+t W K= )笡yq=NbϮqHDfRQ B؞ endstream endobj 406 0 obj << /Length 2426 /Filter /FlateDecode >> stream xڭZIsFWr U5lb$VlM!IMAdD(,Vtߞ (Ql6Ʒ/kzkz^\!eaH@xaH|v6n~'l$-(AZfzuԿ`XR BA{oPog?y Gރٹջ[J/>_je8h@(~ly_j}9\ή]w*%mzZl"#ۤTyHZ6$ike-K@""} JOhs{ @}aWQ2%Ku-&'=[#u|c&˛JUVI]<){ .Ʈ,e}UUZc3m96Ioa,$?[Kʩz_]|,aEiiHZ\%y:ق$A#'+*VUc[+ͭbgDUN{ V'A6C6֟'p VM }"l z,IpGN !OS}N8Xoز[b'wFYQ87:{xͪ4_t7mr@)$e:͕ KpͭcɁ!{CSۢmʢ\2&E5 \U "¸{)謩r(O59h2A߰|Kh/IbU+şJ-+嘰,LJ!eZy('*殩|m/Z8$y]9Ap͛s 5CͶM*3WM_ Xk;Θ BykVkUWueʸ%VL%_,0o3" tbTvl*B{~j4t] D޲-;2%>Y6Y!۰Jltfh_]NׅɒXeY,!nsj1$}fwKHvSʁ:qj^2:+/:FAuc5؜vFt4=ns: 7LuG!G6_ʥ #}7pDqC_F/$ꆽ]@ejGY=ZK2"4Y Ӌ0eCؽ(u D< h}B%ݺ6c]}E<ruJǒ4O'!{Δ%J^wYنhC7Oj"T,D(fG ]޷bT)1kzc4qtSYVl >Hg If'@|x6G7/t.ܵifePt!օ. _SMdjaK2'ksz۩u2gi>6Ԑ՗'>eȆ@sy#y IXٿ3Ƃ3%dh0 T`Q5:ThlP:Z%'FϨ()z 峪تKn ņc_G;S+Ds}6tޏc˾NV6F ꙍV-H:\ "T14%D7>]_` PbplItӶ8}v6jv )!Ck(F&CԢ(q0sM +Ny{d!LZ%VM:˥}ؤ]nm_RZVIi&dL@{3E Vݶk,۷wnІbbYBj\2o:[|Չ)Z2Ƨ y x޼LbDA`iдG aw9P[U9[6L`UV/ s :\\ `pxHM:JS ӷ_UZGPvwueUٲr )>NJס׆ nkkNGa]Ro&p,PWo`vJ:2JAV]Q.lPˊxiWw΄58 Is5_{4U׻ -gxg'ISH/^&`y LЂ?vLBktRY4#SYR Zo^v0JYa 60ɮ.^yۏ]mhYaSm|$Cԫ#/JUzu<]cFυ<'!9]T)P7V |i-XU Mb5SF^N/K =  ޶`+Cq*S~v ʴ6ym5X|QdzquS*_,E ?0 bE)K0HATs/!.> stream xZYo8~h@/Q<$,YO<$V%YG2[ERWr0(*RUn_;V$*STDIBv7],f+$Lj ˬ]Nz}.ӷւS’hđ/g[)wJ2LmښQzS[;5zkgLQhun5fˢ| ehN%n}Z8{b쟔bUVVKp HLUf2`9ځ֌"+;+t5=GyoV8Jo1ښIBHn?ilI0BPE<;Eıhq $p?{.7itsDsdڲz}S YL>9P_n+pܖNO>5R ꡬWmyۿyD"É j 73y!,kZgC^!("臃BJT |=n6A!BmfFia !;9;7 ! .&1A! y۩Y neBS8?#]$WѨ.imsϊ]\tw%h1Ykz? xt0ޘY1פs3G"|@4&g A]iP~~s"$ }8 :P/4G yD0 c;LHO-fn!}@A^eiÞL'N>4)22"$T9  EEDHP 4a4pM{EFui} m=@0LS2;O {CFQ>) n%Αʺomk欋B(ltMQ9 +4&JyI 98D^ooPz!5ƧJ)eY8`mViCl,!%hҶ=VtTIvP SeENsy$b߈a&qmWcXE&;b7Pk3oBY$"L/%nڲְ)%QtZt n$~82*\gagP „|ѣׂ2pj $^\~+ iLbǞ^87lȩQ1VFD pq-5&ԚG.'*6K$޹Y?MxFQDF"qb-1dXsƂ@X YL8p \"y<רcJvU&mf%Ɋ#Su(5\[҂<& u1Yw0(ɐS^( aC[_ ٰqSU4}ق-%p>~, "c:}ⱒ0 ѫu~zLE.m !0;~x;p a[.$1ap;Vtkv8R0ۑ)Ƃ)d* SL* RZA8C;:;8cP* 鎩pkkj/1=r0pd n[>>(M7Xb:ڗ 7X,96S/Ek33h_2&t,ԆɘVO~F Ap+f~^Ui"H*G>adkZrF&7}-^4%+8K[̞DcצrFP$%IըFԈ8*Ud|v+qlm`(d1lw-8L]]}%+M14mP){ q1̀y*I 40Z0as6 b%> stream xZY6~_j4#^lQjX*i~7"^$CzخXUQPzW~`2[ѐ$abgH,3Jt:7JNZ N K՚K"i_Vu뙀bbZSNHk_`{O ڪֹ}b^-t ;gI7{P3=U B6ΔMae>)"0#9u³]4n[UWw~aH"1d32.>9g""#k`yY~ȤV'{M" qU3=Ƃ(>&I9̩:ݏjv1u{?@}D)̔g ,LW×muPZ8e^di[OK{և$&q/SؕDH")} "8 "JE՚1"!>zAscy`qq99YQǨEL)BKhB-j[GdZJwk ֽk :"C k{q# xs )eRC K؍F9v_fF* ḅFv`ZB员l6:U KzS@W-'غ2|>В^͇wmZ>Uy5}kР7`O.gCb>G\-wv?WTﭩaĔuuLXQGE2'M.8رsy޼ q,^)%N!n%-'-K#B(szt&{pTf0(p ywr(_qEȘpL'ET:hjEk ,&3 k`~[O 5y$8:)%jRywHt8(,Ř 6b!uCk&&$!rB!4Bw7Y~ENB_FF-r3$!`EcE=tGg#1Nl$&$'kjW>qS!<"rd]?䍷Čc9Mo->6RfSgևGmNjAj/7 vBn@*c"bu fxKt1?98L< cJddQIFX&s;$CET~:I&}w~ (xk%m)jX*VntFqLO`a҃1CuO׎Os ,GkjI7C endstream endobj 316 0 obj << /Type /ObjStm /N 100 /First 881 /Length 2342 /Filter /FlateDecode >> stream xŚMo+\zeCE6$H" GM8>O ).jGâ{vjzޮz{r.ˡi9Ѫ&Rp9+ױՊ\T״22jϥbNr11bdCH́NU:wq)bO?@DijOLT&jM.imN$[ϓWpϑŹΒ 7AbZ^%d˕NBI7>ޢ,w Y%4B,ql'b1D2,JnUȏ f$V<0grNTr)pJ.)ۤa1OD.Jz) Y0kِ)F7sRXVB0$Z1C?=qQlvS>fpd7NwG/7X@EQ>\5 %(lF' Kk2oޛBJ3YwxO>[W:xݵK~+.hff80$8NeXۮq};Nrۿἧ;ἇ#yxx%òD%_c<}mo2*VLQbVDZ$EL:P|QhWD|+!Y^`^lUpl{͵O'թS6S68ަy8RInd} fMy/]m>/\LjY'Ð`FƮ(H8vփ]rH^H hWc8iL*Ic=!ޢJnE^ӷ dA>n &3i, $6BOi8=fz4nq\eBd isd-י,mp;=֖pgNbm lsuU!3T cTv>aaKRtӔBۭ[s+ C-:$iG*SyD qxZdϑ~X42Mq؉vJө`d8۾tΟeU8rVsݹiԧv.%򚜦6/)8%ōm> stream xZY6~_GN⁤jrqɖnV|/tXV2*3Bn߃?o~r%83jř։]qO>çZ &MZ%QHKOzDbǘXBPz2]A@gHIQt1?fZo?hͷi~G!_r;'FLǝ!J hfzVkIx,ܑPʻx+T'LL$]eۦ;#ሑD2I>J1UȟD5HMiWas; .c|Zg өi}\,:\PJA R W8{qg24NCe(M'Zʰ&--@=di2g`"\tr-J[7%l0F  K{֛jZ@Ի0xCUz~9;,e1%HE +R<8%Q#ҝ1tItƕ~d֊뢪ɊX7XsN0,$[:e;?@@%05 9 y0Q|0t6xA?Rd6Gijnɝ{_9x4ݼ̀i<ܫf1Cp >'n2kA(l\ HNQ2$ٸKlIHxHP?UЕOc@ z%YL="pd~iP-@hkq RuHcGc p (~youM𶨲<ƍԻpOGzof1#8 0J3ēN `b鱔2!!,`'@İb3A*o ΩA+J"2T"'m 3ESw\pFF P >Ɨt"8]zN҄.4(4;dx-!mh,PD0:Kr$ ,V_ÕX/8Z`E( 3;Z3s2~NBFcnu#DaVJCC P`h74Ϫ#1(BbH.$[p1`jȤRݓo7 eެ^x_Zix rzf8#}iޤtPEUĩQ`ݩ)O`X+N) kl)8$W~@hr@.,VRVl0d!nv]Ž]=,P ͨFnݞyX6C-1z_X-5l =|d#Ǡ}Zv ra8Ȇ?Qopg G}3d(ܴ p4M3xagQ a(Ϟ(*n E k bda(uc#zu *e%1~ Pͷ/Tѹhhp#9$Ӯ%} 9ݝ/= orI0jsO½{dV~ʬ w В+?}N'wV`"2ec\Lhd0B(p5$<(&a T{dǑ&޽[]zܨ8NPyu fEwVQX"1~; |AzV_.r(+Hx'A ک֒I؝[RQ j9t`.x&um9<:Bz ^.on{(AG=/)oho)y\proH3N]Ut~:*Zl(@q^Xr@hP ȡ҂V '[%+|t=emCZ:ڻxLwrN &?6)( 4z's҈!GQt]ኌHh) .cno) vv%o~0֌_h5"@ݸ-3Az@/Av¹ֱs0%vL/QpbB T_ }vĖv0! r)"}+;>VN~NJ}= M^O:$>O{{K\!elsq6~(crg({\JȏOhOD|6%%@BH endstream endobj 460 0 obj << /Length 2830 /Filter /FlateDecode >> stream xڽZYsF~ׯ[-s2ԦʛR("! 0Zp%Q`g'/uy+$NRK(I!<\'җo|0&#0bR-7(;?\^| H0(*:Ym/};7rPv&7/$3AFR41 x?/6`ęQ4Oa=_9>8hs@@'gP"XS1F@#v7ɸ3*6@QO‘4k&}7͋TaL-ySy]/Hy=X! :ɷ)9g-s[!IDDGs(,u"c Ĥ02l`^fWY,)ci{OEd|ou;}۷þ2ku~{i݄݂CQqbb.&qh{zл.|nŠrqڏdY%K8O.toY jFtUmYn| 1Zi-2^|;S6ӭdaVՂX"Y!ۢ?ɿu^a|Zݕgcl֒((iqn0B :Z/1LK'iUO ]r ?aYs_ݢa)R'OzsjUeΰmcTap(3>xhA҆+R۵shdhZc #9= {¯?6Y>C{7 zKƵsU0aH:6l_21P9<&0qrs G(! hs_6yU=~սp.Omx_݆)QWi\yA)3 s^OQKgkj;KS!*C#'ls`1A ꙰=HP\0sN.:(d_I(X?V{bftKga3HD ?V8b5}fp6tCг !d )nP-\ͳF lFˆNr$W)esAK߾cҴc l6p  ;sjO64R[Po08YӅ~_ 'U)%%xe[hAʃs?ex{!%,90̫^{)" PW]k5nv#*Ff1ī0>뤸އDzmUU93H_?Iix(ˤ8A!8ϘijeeFIߧ>ϓ0,øF  >Ij!} ?HUm 5ϫi!Eh,ZA2#K #cX ckgB(0_&QL+P;:DtKD$&A0'bx)x&-WE:s,#!BBe7A Hpl6/B?zh4k{"@8;ĴvhY|Im^m9G'D!+)+G+kf;쎺왆;`~ {\tc1Nl?CzλW tyǷɯ7Uʴ ࡲk Y/$mXϰ6OtMʝE)Q:(:zr.h KtIK[؀mml {`[@vg]9x+z!m@N'͔8T,O!⨭+ׁU~BLWRE}i!BdmUDzM= sR ׵- m!۳Op2 ?} ]%؉ ж' 2Ԯ5&=!(ImXT /ۃѾ# c~G!Kf]W p 2/ "huу0b9Ro/p:Qtiy>婴U3wgTu\遽9o GQ:R!ٻ'ԫa=BKphv,VL6drNFvjo(½.lMؽUUYQv$ɳ>^={~6@}>_*ĦP$`guM`R]42^xîl~ԝixH>H^ vGs:nkw9+LzS0`·5׫e)~m:mڝϺe\a;[Y:oeCRڃS2؁'5| /@vH婣wj+j̞Pmd7GcdS R:.H!P:g\]q|]T~6^`$LvcdrՉWb>lM[6}.aG\}Owc6krDn>3":[u:Nz?m 8{`-qJ_n4gi>vi2=uԧ>`МlZ廸&g5C F_A=eqa3p=,p9uΈ!\"}07NpFwg?I@w¤h0SHu[(5*/_XzezWmѳf܇@M֏G$?/A8@ 9Ǽ'ߵ^}37z endstream endobj 471 0 obj << /Length 3215 /Filter /FlateDecode >> stream xZs6_  ]gr:m:n>Jd^$R!8o Kc%{@Xv-h>?oξ ̰p1YϤ1,jf`g7m]qqw 3Y8S:Yvqw9p&gHE3#5a<[nl~$=ڑH ޞAJdDKMJ&L) "FSo3`e%:b\?'$K@@$b+$xã%$ΠE ̆81)BIo`;K pv;d\]؟apUeٛ|G<=s?8ٟSv2ZxOF`$L"8z\DM} ֓Ā ) jȪ)o' z0='@lHG!KCÛf[BUuu9<}x'hM/wƷ8 _\Lao{!A.1MbbI'=sJ=ao8|&hO5eb@fq1If ~uz~3!`J&([EL0l !pr?@10(B8 Fu>aKϘ|&kPXJ&8%Vz$"qx쨧b!Sˇ)ןsAZ_& j5K*}~gs O Fꍡ]."XB2Y0 z51 Sk@ZxlGn_?&/ ?aL*Q. ƓD!҈ 4CŌ˾UE% ϊ*/6ؖAΊ?]S^ЯL/G&0Ij|OfЖ5ŔQ%#{u{ Ckr&Zlϭ5y(59 vw0 *kWcVԓ7)XEiWYz}|Or= WƭB맢I?Q;*pب$x}=5)>!# @AB(saO`Mil-Z'Mm~s۲ܣcC=5;=eun\.}rUlCK[z]YB,C!ZS)SPojM7{"%;b|;lKPÁ7bW <^6SK+΄R~@MZ#Jn|A ,,$CLBA"<5B {,A3[1 U:g_,Lld3Oug;u)ĬmH-[,lZ!sh=0Q{@T鎤cSU^ٰlͺ*k3L}k|}|mIsP3oJA.Lr4+cP{8;dɩ(2OaH#B=ڨT'>}8ks$!@>s1$otB6;H2*NrN1TR 038_¹N{ J #T'JiEFoI+ৼ6}TJ$᧰MXd!Vjc$ {0!gR,Q7$a(*Sno14c%0]ٰt4c>X"Jm P.wpag+F&ǒBHiXkyF|{!Q<.A,89ͪW)=zYE7kO/sP< 'V jfXRĕWi̸؅>y$ˇn.Ȱ|v4dhWINl璉{L=:hT> 9ym\'iq1|GBVm ӾWr:>"g-6.NrPqvЉbV-J,lK]9k_Hel^Vba-q?b(^Ԩ^rrywÊz= 8lX`pu K-8:cC]7DI\kULCcs;t"ڶb-H"$Ͱzw)[@ t)&Ow7^ ;Lp($`K(EGC}eo_ZĎ\T͑RDvLK>]]dc `u7'ifgݔTNXbsr) Ȯ#pqNa$r64%Cs 肖tؒ@ZXu;wG3МB^MNzaK{KAAAL?#1C+$'Ӻ 'mt:|hhx0JϾnt`jw>]O! d]KHr,]&> stream xY[o6~ϯ X{d{h>(l %In6~gxš-Hg7mgtv{󷇛IL)=lf\k(1ӊÒzy]OgC-(*8fp h:cG/7jJI$Dy_}^2J벼?PD_}l Kxkɋ%z vƐ'a*UWU1ĪKah' 5[ɻcS%th;ת7EY4yՕa_\γu &:,;^~\ںT 9 1UYB`<0EР86 M8xPy tML粟v 2"@r1BN _Q{0\G U*twBT_ߝ&_L++aD{=E?1 7K,QT%@[o6uObsMXXL{ux?|1٪;fh@X;kDJ}Wmh$v~2_E蚚pKB8<D`elo  'uX< ^ϛ̫l[X*"``-l~X$ * κav{CrjgRByo\A7Տ|S_)F~]rt]ܺu]Orz4ak'Z`T̼J @ ۺ8 )6B i M‡WdOMuyxe$evycQeͳ[= !c@["ʷ3/s=lN_ b9Oܲ&ѸQڸLڂ |6I|yzt- 95ДXЃ]E6}χKC4d k|ݦQ/xaa-csF JNb>rq/ebKWw1X0A ):~Ѿ f 񺉓T`BQEα`,iq\B{jC3"h /lFаdPJC mPvj;ee+vټʧ{]eYO2W:a["']`Lm mַ[#G3|/F%OX1k6.j4ZG$U:\7xhl~iPV)+3G4Ve] dVO(3aiha''d7?9bkrjGlQÌbmC^=sWgm sCîhg|pFV k5.>LV tH'ZIxk;PmƺOS?0cKh6^,| =؁t;,3*vWjUֽ HHhƣLx!H":9[O.9|cvAݝcZB4AS Deh=YX$̌ Nśq>L4O?>v dE_#{*,W_qhl8`z -ůGw4o`FO)&^ 7Rlr{ΧDH"oTcN(50oes@z<}+}1 (pr|HR-iS>x29˖;8wDNHgQIjNnIR 6tįP@ݬJ!tT8 1㢿T'l%*w m\,H(tTPo ï Xeo;&73 endstream endobj 498 0 obj << /Length 3532 /Filter /FlateDecode >> stream xڭZ[o6~`*Q@4iMCZ`GF~!u:I(<<on6|߾ MҘF1 ##Rn7? FpF+T\v8肻7P &hU%Qi4K=GCCWڼ*Z0W 1Y_)e:DW/O^.Ԍπ8NOٍkUwfu 3Tcޜ;݊4FJh(r+pX1`/@N}7v#5W5nR,p}^W[L$, {.,ڏ˖7etƴލ?U_|07hހ3tû7 ;;򴑠@I]l]:Cq z$@H Di#sdi>A@|Jg @D4u*ݤ,dLa<=JRN5ߙus ;rA^=0hPgSA~| s8JWSKvEҪF'A^^noqVs73rNw|w)9:UVt2koK[Om*½nanv;'Yb -׽~y)4j"$Q6CdMg7*aʚ7ݮ0Y6ÈVޮeɣj9ɭqO. ~qZF";DY.ЕDl,]Q SB3GHQu^HzL< [O@Ԕn31hN/eʐ) yC Hp!Sa$ E(N-pbV7[s"b_skxNs{S53~9rp/!K&}CLN ~~\MK(ܢpg|:% Ar( ,\߻ݭ-m;qÊ r&Jj;+|-zcx&* ~RUrhԉ0`h:91u>_-1~[ ➎dh`:M㼜܄\W7uv"jj+j~5nG+ -ޟS>,d"M jw.*zȀPbG0F. p0씕]VP|5ÂF@JB{"P>[,^ ޮTw .J dʲU^xaf[e)3q P8Y;ըiY&\r&UW``ʦ3ΐPmr?&!8:{ޮj';f% iHH-&n8^S7>+\ؠ#5݅H-;Y9Nd<:2R./SxoXX_f̒g,aɊY!cNEɀ5;B T5.l?օFx; g|qC૛tvU6٢Е`:s4wE!@!(h;!f2  /iԇށwcLktl]zx69UWp4Fy=Ywl_g?H"P BBh&=5p*!-zpSŒr7JqkixPPLZ([B7-(HO|^6fѐw/PeL/=j kKkǓo x3;o4]aǸlr^KuX,E":Crӫ3^Ne2/(5Fj扚xf==!ǭs5$2(9H١zI5+KTdRtŞ囝`OP/xrF=h(_4W|Q"qװ2E> stream xڽ[o8_ad"5O$E}w lC*t"TINpH}rR'F5q8_dğv뇳 IĒ"r%<|XN>y߫? Y'4ZL12Ag><`R%T,lt&T57iCmhx?&kvEjtZ2>sl^%So:/i>2EY GY"#xJl~re9ʻ/W۪ΰ)rMC"󬸦N*E *kMWizqf ߛ@U\j䚇=hwYJ 8Ǧ3'/Ȫ^aTinlQ3R_{ \JM_ wҵYM[ߨtI:+@6n  zvĬ<׶(~k>GBHP3<)/f^"L|}np/ )LɰO/>4íNd܆ 1#V}!〩;qu;f^zAZz]QV0DFV^VT0C=0J-mGjG9_C۵}AF ݋~oJ јjcza/!6nRK֘;d+-Z/fD(P_Aq*{2;jMn6zB)+b\h?Cj!"h2`)\]ե娯rS}/.16l5XI+da:FU;)$r+#p, d$ "'V! q7-q0}VKrXmތ"^?-+znj]~_ܵn,[؜hMQtGuÌ8ѫ>_QMePCEኌ[`mTU;."D/_^YmqvꆺBƹq6vߛ%,o(KSJTOt*}B1ֈaBAځ 1>0=6j%dd{՚8P4![( ¿#[0ɲo>$pCs |r?1@n:@xٔ{jk4Q t.u_I`.orqHyS#oKכ\Z.R&CQo}QMJAصιd7=!L S.L)3i:|8=C`1/Xgw'Xg.?r(L"*3b~d5]%`)S؏ 'mGAq` DS>LbK@v#IԯVAp }R=uF}Q[pTW$~ϨCx؃9>'k~@?:UH8GC:bQO]^ ("A,4zuFgPX(#lJ@vWyyoӯB 9K`yX_Ǝn/0zzc'Ya_)nV=y+\:V#? iy0vt2,OImzd@H$O$o&VZV BLs- OH d 8 bҚĽF@K ;]@֔5葾sШh1!H)O̘'*mZo펧_WUC'Ӻ&/XVɣ_K{QI?b~θ-6x9sD9ggv-2]?C& @ʊ4ϖWݙ-% ru{Z <>2~F.rAgxt0hf &ӬpX6=TqqRb^Bw3) {`^`8Z} `fb/QA DUB(&+Ar_PSXy [B \<w`W԰爁یcѨ:or{D2UTxj, MѢ2 +(ytLKج&Ñܿ[ dԯ<S޵f+mYƫ3 a1cuo z}MDѵ|S< p:=؁KZo"1bbA'8ZuzMh&[PY ;'e NCpOԓRu,؃Mg >+z)x8T1;k8o89N^:3Ӗԃ%"o^`q UW7ywh%J> D2ȣ84+~VMi5 |;g#N"P筴6ߤ <:j iZ1ΣE|yfs[BI9n$踂c0B* W_4w~`|Jǧ,ќ~+r(1~}(x!qR~(},`t> -e]ݾdΥnmdhilWfG <F&cNYQ<7i"Wg(7tεĪso՘s{{,0^|MV,gfB0`[[h˄.]|-tUi&B 4x?W%mlhG^@W|ǸW E.$ ze8k01F|( 3{)t-qD?.7lh{iĒs^H9 SF+rPqg0!!I27 'HL*(6y>|x0`.4yP,A)au5Uh=K] ʃXe !}ƾVޯ)u`AĿg!Dm;zm^^η _wvNb endstream endobj 512 0 obj << /Length 2777 /Filter /FlateDecode >> stream x[o8_a'k?%-]l]tt>=b3PEr$i!)DR%q)CC' ~oe4(\\MxI2\,&_>0O%j7ZP"hqvqr{ I' %$!2oN>}cDt<#o&LGDE]69?zyD)"s=Yer7P?e=#˾ 4#A'X(%3(4,0~ 0F+IPOr95PaN&ICx~v 5T, 84S\$_ WοMi^cӘ6`Ƣ ' cSI4^AYGAJN8oXHEm.e!"̘.΄<#hzNܿ)|]V4mT`,sC\]Z_Ն >SE YluKwvŚsvEToZ`d&9'1{tƕ *Sn(wRW NQFH"g[NF]ӻI,wu=eZV]j.b]Ϝ :4r\QrAm~k G dxST VPܘ|aء: וS&oܸwʔUA@f1OO]0:r|R2t4&-;TI7I<"=H}E|gV:HeùЩ .G}_$ 4d ZX2,?Vp 8=@;Sr*UP/3S]Ea.픵J f> h$M*nl+rw%R ,ewwί]Ӻ6)=&[!#R5~P,|3,Lu/e).n;-p wlͳo&Sϩ^ܠ=/^S[+pHqjK'LJ'{ ڔ(iH=5M8Zo2$0Ӷ/]~ϗ] #4n6F^>̶>8<<>xLw9owQҘb¨^H^[/\ÆQ6AÑj8 H`Ò'׷~g]_1^C WَF`D8ڠe# p&S*rXf0vdxatK{؈?2Ic/5'Y7[}rʬGmB/;vtxrP.m0("cJ1}pچ+$VWY< `0F{,n1THdE,Alm$=D &%lbc1F 4( [X`qۈP1q<0DZ10<Žq,z ,o 2a|#H}to2aȆۆ,fD,Ik1WxO1\6f&"ba(fz~ݷb`F,$DZ3H8= TDq M$>B=ip:{czY,zY3HjX<ܽZcƛmJلq&ݔ"s:6ps@v'媴Z=(#eQy&izTW0V$B+{lU?lFwԲƒ)s|ȑ1mh^$o47IZi՚ ?!fd2PDDC_,Q4[{yPK1.yR⁊y8r0hx)4K.3ߍUU2oF?k u8 r37~։+dH[džfi=HOp$`.r EgINs3o_}٨1VW].Lܽj̃̓ͬ(Vg ]X ]e$;7I趼 `ހn린.SH+ 9bbgl,̕u+nL_\uVQ)Q[>w9*$k*Bn؊( 56CW -MwlSXS nP^bҮGش D#2)^OC @ҹ߰q3! ^4ӏ%rk AKoqunUpoԯvYU[αHƩrH>aV&d 0َG*\qМ /\e]O+$E75Z|k x/M] L_(<9\\*)q!fƨW Ǹ&!Gt5QasScB (M6Gt lMvp,Qvv ^gvEeFtLq=Gܽ%_{!t/dn04cR0GJK8(b4He}8Sm0N uV[9Q[(I TeV~DTYjKHG9b ȸGUw8Sm`8ڂ݊=ڞK5fi~}V endstream endobj 516 0 obj << /Length 509 /Filter /FlateDecode >> stream xڭTMk@W "A=R(д͡D=>(l)͡w\;v潝a_Ytq,Xtq~` GdO?~^OyvE`c.%CiRqBv _!2DVjB&tvDRx쑛M5DӠQ:p0]VGA\H{2L8*^Un[Ò S@)j_!)ݓfMr̩6zɵgXޑCJM-@.Z1T}/pD^.;:,@#*^MA" BuA)iMG2+Ќ ld"T>pzU [DhTcw/Qs{.yۆSR GXumpX5¯x^|[3iPr[ob`>DŽ8o+#$@}PMRw֑NsH)]347x0.?@BU endstream endobj 528 0 obj << /Length 2355 /Filter /FlateDecode >> stream xڥYYoF~ׯ  $6㍼Z&EgZ#"3GÞȖ ꯎ:ɻ3?]4dWMgD durJ>oo]oW4_vLyEΐ(MR G^T5P,}uh'3_w5o4uLq0J4ՁD:2-)Dz+-k~ Qs`~3BEDsY^M캘cHlW.(BPVwgESEwЖd5'E`(ߖ=EZiE#i"2>u7:Pb\6܎o7,o]t{<|gz9+ER g{s5HƊu࿵1I 0V!/%: ^uoVHh4yzٻ᪛N̲7ڛqۦa9ַδ}eכB8j{F#LڑW*{--h?3fhݪrnZسL¾C1(%cf5XX̝ DIYPCĦbu7_5s-1 Tf+pwZ~>;C IW٧i9R +{r0Mˀ VDg2#$,T/#@i"J}@1Œ6),hU)k<ac3)&\aXfӀad"c6%w 61 G[l]ސ \Y mPV7< /4,|dEv.pg~ \?\MØ5Wnl,sl*=CbnY7qkܞnX]ofhK1qC3-A*8X[,{D`V2!εV?T1x@ ?MsF%}1fcoOȔ:B=T0Ι{YeAH6 +nxA T-1»gtک(;,h|ҩWwoUC zP P2k*quT.gF]:_(X92"h99u9SN warBh%sB`%2,dD qd_}];{oHSs9k e?W嚋 LzqFnW7Ǥq. ]X9VPR,~?o{0' RuѠ $GA͜/p D\:|QI,lceڄ˸ʋ7FLr,$9ƹA$;[ endstream endobj 541 0 obj << /Length 2325 /Filter /FlateDecode >> stream xZ[s6~xBg"wɶ3m'vww&SJeN$&_ҤH˦j| P[x;;)&յGqɼ@]ͽOwտzaĤ^ Mt&0DCM@J Kݠ{D{hjEO&o,mrQDMo >a H@?,>[R /ۥR ;vßyiU& ZL xUYQ *$zbl_sPGR%q9Nmy[ຊ7Ƣɷ%g]xU2af2؋c\d9k  n׬Z,~&^5ZE:RB2҅<%P4 X*?PѲtO؎̢2۱zUکpm[$"Ef/!"ƭpn˚AeG4N҅Z l@$xhW.YPeQoX2 qؕfda^}?1D:dY{onb+cieydiUY YWv=RB}دm! J`) !StZ" cs0A:(DI/P{v8#kQ l1Vy着H'J"=QH<.{;x}t |BՆm_we&B^=@@|=[Qq_@&*?U/*`|CO٥B\=TQMskٸDltԶhLQф%,eCR~ggb4LBF&%E\C"I4jhi0!AǸx:r#>/rx<Lk'9LvULqN?0*f:uܢA6ZK;z:Cr33h)TpQ ܍P&jnYv>OLTjIYsH0Q":I".K Waz2S+1Gu?*K.McupW,[BӪc6X{۱f@/ermN;>y (gdղcNS_۞C`aжG a5[EwxrHK==S!yIVG>cos%bϝ\yM$x`!še2 L%>+#"]A Po=(pT wN^¢J(Jv!ˢ@`( \ GL#(֙~bl" >Eh5Z;u~{l,JTM3s8nA\A{YeE-3[mR#n(فt \:r&EYY(b;+m:{ EmJhM_q-Ztpu{h: Ad?BN-tp7`z;}0 DzΑd/XIC,j[߇Q$T@(8G/Ӈվ2Kjs'UƱ (XahΞq u:jgu;uǮ~3p^bh(ʀ8vHuV߇*2!~_O}] =^R tEIEBl?n;^ǘƢǓC>c$ =v}@@ZsrUOU*&iE)LXx " %Ri`3[Nj?Fʗ|e} `"Exm endstream endobj 547 0 obj << /Length 3153 /Filter /FlateDecode >> stream x]۶~c!&3>Ǚi8ɃkO) c#:@j A\,݌닯d8 IR6^x(ԌL?/?d>b4v%BG']P}4D(if hpo)0ܵ[㆖IY.3f*#Y~s6 噟J>MY +Djg3$\z32۷ff<#ILf[n"$G&CZ*Z? ' fۡkư-Y,*l ˋ,p6ݺjSV55~HdJn~´Hf 2')l㶳cX38GLTn^HS7Erlvm7{]'iZ Y6yeJ8l%ָM6+N5Fo^1m?M@H̙#.#!=KF(a;%t~JQq3xb>XwW-fr"8%HՈ: ]n{"J@OH2,"nJ7.XmD4Q2=0p;l'$9s5JEBݰ%J*"r,kŽJħWvznn- !%ˍsxׇp]2eM l/.tV?~q4W#Bl9g@]$\;5%<W2t LOXyW!" :Fqb;DT‡!0۠0]aw{hD-cj&Y~WCV;Lp>+>epU7k3s7|9Dž9mmv!`t),?Eh)G]}H|=sH3TbW0_qOi76׍j$7Fٹ#uBƵnPz1oey̔eR|`Bw , 4Z+iy! Pq]I[ˁ#kjF«%3Ԉj2?Ԁ$2cQq>>ӱPFtd*̲ܵ2UI>r՘SJYɇ.]ILpuO ҄)6Aҳ}?mwɣ]5{pwϡ$,>)|\nڡV~則i}`ui94| |lU3 z6v7ۂsbw7!`J<'2؏{{=ޝKQ8 ;IL5zvvwT7{^g}O FKՙxۮ; HWf׋eR/AM67S%SLIr0I$gr+mJ=8h!֧9J.M)'R:Մ*߮g]Y_3g0b\y9n}~$FCD | !KJ0TfҾxAzOp.0k̪>71N8ֹYY]6s3?lAy_7٫/f QQߚI}f ~h2ߔ2`CNi$#OX1t5 pϢͥ%/Uj\4ڰY* r"K@|s瀙-)4-76AK?ׅ)tcMnCr ./ò(}UAR QܔV,f9u2=1HcאGzuap0"V(cۑ xea/d$$enYN upe< kфv @?ac6 }p'b[Ib̢f2Yueyթ!e R|i6TUNr;\zRܰ#7Z@t @-krW5Qe-GH8&Qx&oPES$R}|,|)8U1[Npw0 m SgrrCIb!#@x]‡!<ᚓP +LX*L+ձokZܚt_8[n3qT}x&Rdlեl}BKke{ [Wڋ\BrIej?\W_(颱E;89ԇhx>ΞicnBI^F:!:Aj h{ȽkïgC3A bo[[EMP *kJلS8b0L`1O ii/5Ya>իx.j:P}¡ GWkdؓ~NK5< x{ƅu\ =Y%*?B{A,$Cl1^?}BBtkݺr@h(wQ zj]dCPG|km35[SQz^!v%PRΓhyPX#-zjrqJTu$_7I/U< :1yݘ{Im 8{e={tSK7J?h-3V endstream endobj 441 0 obj << /Type /ObjStm /N 100 /First 883 /Length 2048 /Filter /FlateDecode >> stream xZߏ[~_1c{ Of XCk2x>mHP`PȒzhc6@AsKNu\$,U^K^8XS*@_)@  ݵ%oS{ =y!R,RF'OWJ˧WWoyl}ueyiY,^MY[ylV>wRe=MO˴bjn>|߯ *E!L#.̍kt5Rz'Jde[6sx߀3kz.gmy-0=os`5ɘՇ_~ys'|}u;~.Aes8 ؈u(D77T6wP|q~rgfE/Z,?{WW7 ማwާZg:pf ex{  7xy0)fܘfb Rj^^Aف2{fȝ Y(<3QEHAMVjHsd rY<7,Y Ჵ 0Qxq# 3Q5E,`,n_7vFE8`=TRjjϵQy5ajr空hEѶ m!SXn @EQwQ;:?X1%Z~̆,Y'%+^N}v ޭ?(dZ=m˱E;"=4% 3%ksٻ {0^1˻Cmc_e$F7(b7zְĸ7A Hs\U%J Wsqք yru (*5X*g&RZDJydljM VUtF}Xvg4O6-[yk+Qu$ ?NeU5E(2w;}~zz$Ώ3nO*ٔgj+P#w=F -1,b"X3POf>՜A d#7zv{{ViIr=5p}(+䐥x,*]LGW'Xʥ(-J- 2ewth9v_q`a/䢛:S6xܾ=tvX]; ;Č\xY㉿&A~LWk8Dh" 8tڌ[gގu;v[B 4y!et/k_*s;Ql4}験d-511bh8ѻNDYR.bi*Ґ!2t)xE+VdEW-NZn9$jIUdJЭ7;g:8Qx"xMȑ0vo~eGs+&nchQ1Yhy398*c%ξd&-2~9)9g%ۤ~Ys6mDZ~ - qR8?iH?xV  wPĀ)~ zwӜёzL|tʁc9OrغI{~vpbJ;3Kl[% s72$eΚ  i endstream endobj 558 0 obj << /Length 2714 /Filter /FlateDecode >> stream xڽZ[o~ ܇R@+i$Ah}IQZlH"MRI_ߙ%)^$j1rf۹ wQ˓gR{D2rq F"&k?/~}L$-(Aͽ7]3(~kE(ﭼ/'Z-(ՒbL}3^dYpFX=ugC4IF [9$E<:L)HPōP aaD$ ,7qژybA\N_*"I>6*{hUwt2"CP H81f!D ܠ.2c%(d Kn*xd(R(zjY/S!b98j5!>Z)pѢ9- hRvbo[uf"PR:#Qѓu&YŒ`޴hb1pv{qdY}Ίln onqtr2 JE'yDW'HݜΡL _F7&w-rgNE: WrU).4nҽqk+qs2M0y Hla*.K iukx?9yQ1DU Zb:Ul  Y_VїUMuB8Dpx/Y'/t(Dp~Yý˜E/oVĉ2C}k087O`'g A;LAJN8ܝuR!f'L Wٌa!,;z9xco܌bEe[2Χw8,f4)J]OsEXO߫Tp~~}j4ϘiF45QU&waRGcD"bVjj8JB0 D-x dz[<7t-nW%a.:=aR'OY1cora~ Ewǥ/B3KsgL$kvۛ$6HDhٱdx]%wY`ȬMndHؚV +\#[g8&7ZGu^\%bj7B)x.ƔK&fgDhPO*"[ӟm3v7h9NT:ae,)X^ݏ0eQ.Ia˺`*ge^ܯH[n:P@@=b`b&@ *z[;Zsn?5g=eб>C7. *ʏK;62GA&FZPypAzF%x'P0EgX q\RZ a_K,/,5B1.k𣬵=`@5Lҍe6,#ٶʷU /[Dm غkޖuVo ZMdP0ŎI֔cfLK> 3U$j4;uM2^'vȮ\!F|jU%&Z;eTٵ[i gQn5A,9=&dyqDȰ!{vl۩?8u}t[׃ڷ6)]ِG jL)JԊq&szYoF](',f@n5[{%8EZ^_Pnf}s$vp$Kp(9ܦ[g |z I1+}E-Z}8_to8s`HixjDӼ=Y'CoI͵]_@P4k dY:~P6i@/pw7_YGNjQʐkќLo6YQw=y & 1U)xU'|~ %;j^,*+HtJs(<)͎6Ǜ7dxܾsOev_%5Mg/sB*{WcT?*W8,э"x@K$i=۴z[8>sBځ :qݗ(Pٞ4bmIo4d9j#7d2M3>i̿'^@-"kfY fa endstream endobj 567 0 obj << /Length 2834 /Filter /FlateDecode >> stream x[[oF~h:K- ri->) ITD*n )QdS&}HH g|s!i<o.{@!0T)%(I!|ps74/_::`{3`v` GL 6qݬј:{B<-k/zo;AP8 9Ԫ*{|L78Fd,2Y,|dC+Z,R / lE02u]0՟Af${-C7qt-h"JEjXdmk"B 'Y⢭ye`ʮ[G32ɌX)ǒD'it a\olW% mՀ0.sn xV۲BIٮ?֐!_7z r޶ 2a]6zոco+p&%C\ "~.]ra=2P P\r=]^|Ń;3es H!}oݎ8c UЦjޛgud[4 ]qn88ax>ZDCsLN+O ny {ՀB b) J>Zb+8 !c^[}E&ˍet_\:_Q w8ٷhЫCdA ;ʰ~=3.E" IɆ_w[ ︷?\gP&g50b?q#2j;؞Zbɒ :s;#WAtPX%m#@ R/NR 9\c&L}s/'"_dVG%xĒ wm>i_g}wB\  K1srn=;}M>Ne{pjt.V"]VhnF脪{"Ywf%1]WGU]pRI6%HC¾H {3TszuDXP-,ld67eV]2'G9", T :tUʻNȭPD$!HȚZǬM>n~%}=a $z H9*?/.wTi>"ùMtju=\p.ez'y"'qw?7ƿ? (^HW5PH@ ag]ngLE(koV8 QxeڝN]{,w c}/'p| ;ćK]{qz"SO\>vCpq EX^wHо8E1"d:_y4I3z0G&~#tϵPQo? @DTb$ϱHʞޝ;(\_tq*)E]RB^U%²()Jo@5DZP-pBsʂ2 endstream endobj 576 0 obj << /Length 2593 /Filter /FlateDecode >> stream xڵZKs6Wm9UOWdg+X)ZjҰ<"i#G~SAE~~#]ś?]BG"CBbWşw\~X߰X.g1iLhu2E/Bht(qJ+d.V0ڤ]/ڿv1|͋ş+9^wJ|l|TziMdE^ϰ2ƱIw|0N.Oz؏<#[3\CV=˕ l|~D-˕QP̦GHa`:B1*~מ 4(+8˜e3P˔O:%1%]l#LlqV1[_;ʗM6uƝV_El]32 T'Ƨi8lwoJ(*z/^bH$RLH}Vi*, 5}ऀ~XARI>5eDm&EPv f-.C7hM6}ںzԝ+r d6 DМќf\uʆ Թ8:“[|Sw7nW, Snh=:J$ ñ<^oII6F NP薡 4x?FޠAM$7i2ڇN V >zY5oIOuP0căG ŧT*  xOlf>tΥR͢Y/M!<A e vBɤל~U,A(!VQp]4۹3ԈZXOeD_sYtO2锑T8˞GdxuC*.]B#Pa= LLu:PJɔS*ӄ%{2瑅-|tG]QԮ]+ۥn U0r6]Qp}}F˼ƔGo%}LļnFF-OUm=eN]2-N->wqw/}!;x>{i?CsS{YPW46 5m_)e [q;{sڬڤy qLU3,F[EΫ/']@s1 <31>|/I3TaB8уT#uw4J|Z jCp0 -bgWp<ʮ0Օq0N+lD9/eXڃ3UGw}+4؛ 4ud:yL,O,Yl' ScQL[)kz?|/ endstream endobj 586 0 obj << /Length 2807 /Filter /FlateDecode >> stream x[Ys8~`yVފGfvfbQroC&dfd~CPj$M6p⇻\E It7RK)I!<{>۷W~4"l\od.9 @Z )3Gqoţmd6hYM E}XBbv:OͻxIJ06.#B߶<]idW13AX~~dtaKySjOH  Cf]CGSOfXH M:$z}+7$Kye׌ uj q].XP / %[dG6Q;]i]X㈀#D$tq#/"3:\\>7_u> #t>ĀyJ=Ų^#3J攡WȒdMK 4O#"LB2D 9,{;5&» H0] c}.H)/8/]or֚u_ɥkX~{" yɎhDΎYm0OJ!0?*4n];QC7;0?_=^=? ;y5dۓ{qF`sv~GM1 T WYK 8&z >AmLA {L js6L d7T`2)fif'ŋA\Aoe !2=bک.Vlt\6ү|ULZhs 5;SʍAl=W׵7S-|w|#|[ǓdˁxUAփZ!(ΆA2`D,ژ@0j;c <{/sOAo džК^V||h~#&*3Hz{k!Qd{Y­Sֿ uCaXI7T!iN] ]䞗u_?fr$B磇{Vo"8AM[ M"^@yhߺK f[!V 0CJyl/``{9-Dֈ3Q4է:_w^}}ǒz,Y85l[7K le ȲtƮ1lG} ;3;9B?-ޡvЭz|D1rNCy%5$jS3JQtֹ"D l',0Z/_mT\Tm^k/ʕ@q~ p$MBӴۺsD:02TV{B#1%*^S#Չ8gFB `ݖ)l崉:IgiJ#Yʎ$̄FӐB0gaeگ1fP,.]-G?b_%ꝣ=%Lڣ qc*O^uFqSĝb}^+4>gȑ#]6Oj鲼Y:ō:~W3=vUa;@#]9@mS9/M=].G ́ݚ _z/ &2v֎gj+ @fmxx0.EBZ`#vW'ERj/Q8$V[  endstream endobj 596 0 obj << /Length 2791 /Filter /FlateDecode >> stream x[[sH~2\VOߡTebO0k'oRlU% I_?ohl5tӗ\;.N~>GATIp4,$A. ˫ѧИ#m0b2L;FtzƜpĄ LX hLٺ\]\![/nW|aNW ,Qu{{+~KYD^|9!0XLF$|Խ`*H?7 >\Y RJBI#9ڡ#3Jꐡӏ)1(Rj H'OcDh $#mt[.:@Vc cb"1tX7cq>2?/yx^E3[\W秦! شqHzt< x`v1}XK)Xd^3!u3_ |Aڶ^#m8(c|" Ͳ.Vwo.ma]eC <,|V6 B-dGx`D]B3:$GT#INF(P}r!zeo=k\D}wvS|ga]#34WіcY*MY|읟tu=n߷OUڂ|>}&g7m!qh/ep!ŜW|n1{ޡ"j|{aۨ?KySAW@fi ef :x]m̆> ho8ڈ8- 3rf G@z/0'G<#f%2oh.^#\OA7- E!%P?SMop2wH'e%-{9pz? 'lߋQ=fL 4`[Itz9Hˣ-d"ȃm2Yo_lk-7ͮ1 m"dݎ $xLr}/u Xw` [peBc rC"BY&cQQ5[pbAŢXWܱ}n[[ 77 .J._ %: DZՈo KsgHt1hBUfaM_ DƸz̑qchLjc%t_B=$MN%Abp |Št)LKC%x" 6̼yqQvKpSC01\Ugї 0XKӱxWs(Y;;~po7 =Zc݁6I sӎLѣ_hi¢Sf_Yw[ QI5]ԡqW 3ؤNBcႁ5T@I$| 1$ӺyzZ1{t.lH)Me]_UD.脚σwF;8wP >$_=tv ѸN*;fGsɹI.&3qM~5b !`yqјs^?qϥDaNi/ormQw}M0(ZQm=/U߻uY&t>- !6lh@Br#̝"g&zulSNҋat "֮/> ?/L뀡[II< ? MPy6\ރ3vkǵ]֌ A^"Ql.|>UuηbSGzUMt1>X.IS4K yP/o`dz*~C'( endstream endobj 605 0 obj << /Length 1935 /Filter /FlateDecode >> stream xY[o6~ϯ2Y)u ڠM=t8#TTI^^$Kĩ!!CQ~;*8X88?+bIp RK(IPLxpu OOn7Èd}M'Kyu"D(4XO޽ <)!q|;f7"Ȃ˓7F1%Fk #H%=Ѡ`cˡ]S1P_óIr0NcqH%P@2l≸&bv/]iA2Qؓ6{a' #|X2|q"A^)0:>bP+itwPWI8<+?z$oj`r7j\޷d㨵 lB.> +>àФ{tVa4hoajL)H()EB"hpPXM02/Q=w #H8]ZMPheQ$>`b3S%0Qg!DTK :Mݸٵg *]&3S7nکk,qF5,&)c A ˌc0Pޝu}V*8/xI}/m;dꥶ09%p. I\jcL J!b ;ZiAYR `wNM}B,i e}q5`92ñcb9IcnR8LrSSh6Q2u2;NF٢Ȋ|Z6:>!m[ 5m;f0hW =Z(U )(qPԷ&3ۙ6 S󒫡9x f tԺۺ(vkYahWݮȵg%j[w+Sƿ0ܩ@e_# ]!e0yENĄ 0Ohxv TzAln7$iuyHBz^dzŴ{jkf@ N_sev*@im^؇Fubjm~2̿؏)ۊގ.j _i7aaYd5[0, s*)RxE׶u]來#U[ǨOQ^3MLN;Ҏ2e4eN!X&{C4bD,Kb߸ww7I]/Q Vm0fS^BwWJg~SoxUeKXgm/RMłi MI^]n]\8R#8q,AXeȷwt/:gI\g܌lG4vb }`ol??9^횝Cc &C3&CEv/ endstream endobj 612 0 obj << /Length 2720 /Filter /FlateDecode >> stream x[ms6_ɗf,Ir'wԍ}st`SJTH*ܯ%ڪz<A`xvqpp}D$,!A1<0z7? :Ӏ`f0Ycv}L8aa0aET4?ľQɼ"n%+5"G/~&H'~ZwoQ$ &"cNJV!EPnuLgE^ U'Lf[V*-[3fk !X"k)츂EIvRvsfCÇn>+/~/7vb?c{vm2L5m tY1ф&\nֈ Ysu? @h +%V}%v|ڧ Na29ͫe_ z\U:}cxHT2{n -O !Axk rM0-LdW:nm42yJ`hO3skv\-; -zwـ˭ ꊌLoYmKWI?fLkpwSfevL]/c.>]蠁Á`"Ň8;j* qYp{b`ر昆aňaCnZ3J ^9 PGqK HE")b y'Al @cl$Xdґ =K1,Ʀx.P| ؾzr3 {+GV%vVjɍ:4$t X^n{qm+5zKZ}F@K8za@Iv0.mh%E"dN?'`\ІXڐ#?kу5n/G(< (O_:|F~M[UK_6N436qnd Gm40 c}bࣛxZOϔ[f0tm)G(1N0'X<6aet$w]7}0hm f4c8.so8X֪|Iw%%p9eD1\߿=C1r'ypwm}11mg 2orܷnpl>TueR$S #3!@~qCBK 77o!AX'Ex%x  Awsyɳųs8f|paJ||m h&./1x%Q׹Ȗquo&]!ZeQIu#6oq9N*~`Xg0Eb_r_!>6~ endstream endobj 618 0 obj << /Length 2507 /Filter /FlateDecode >> stream x[o8_!^ fMwn؏{flˑf,Y]9{h8·YOg?ޜ*PH+L*diƒip;]}>Ӏ`vFL@Ǹt=7gOg8 @)&E)Чdqv{)9": ;"g0O:HgA^ bkR0׎oŤDAԂ1hMr-|, wOkP"XX ,~oXM\c&mQາ/ZTs?sCgfi(OnzЂAj %` z04m@Fm$BV9_$dYq,Y OMv :_r?!{h~mR@56=ۭ[ |#4őtS,U( zlaH[I OR"V9@.ԩ$Y4Β{17k_&ϛh>JX*ЬPwC`xݸzZ8yprw{:5zŻܞ0Qރw{" GSp/2a-d[3q.}8^`lq [$ G#Ma$ ᙀ[t'b~4##O RߏZGc q:u}-Vssa{`?{S]5vFq.8q{xkwNQ^DfGv\9165EmD%`N6qc>c<MsGXٍq8%p;ob kF{.̷ߞzًh~=ISA*Ej8TiĘbpʌD>fQ;ؕ_q^AdB$އV>.ej'{.6^HF8jc 1DXhSIj p%oo "~'.N-^d Gi=pEx?X~O+=W~ ȩ&pn)S-9+\.@7Bv1bƴ-"!OeD#ӴKT l8Hp'\sD4="$mk+/D")x:S}l> І@J$@(h+dZ JJFic!i1A\Q'depK%b[t%V eb8H Gȓ)hal-\] wkp(6׷ eoH}"+j_O~F~E- mk{xXZr(6U gKUT uxM$|R8PM+>):X36WB؄y1˛Mtw>'MWS bvIpaMX#Vm4A;=ҡT~ٳ?mc2$ Ƅ\2pdh>qUqF-|+ʶ^E݉z7LM#wetIOjm+mR2)QLE͏"j1ERB4(WO9PAtkY\n1 zr~pdG8[d q 2:Uhn0.Yrr,9vJh^8B>t-&IM"j5aq,gTpjL30*Vko#ReYdp˙-Qf|a~/PU[9q*-D~J(aXX(VSB7/V?nV vh+بvA  ̧fSػhfu!i8줒7snA% -*"5rVJJfz_ܱ,W+VO]+0.XbF W=ߗ\9M n-<7a95vzʸۛҢEz٣V Ґ ,#-ͻίGCP.Zrڦ.P.vf.~a{"x0z׹* IVܵ''t9 Vy=c<V>B1Eu~xYnbeµ7>*6c(iurjSJ*2*`iF@R]eU1"T SV%Ű/.tS&+7:7+BTձ72:  Sp% !;u ƀ D0p&x0TB Mi;=Њ}6foПF=&A*FshO61iÙE`TB}w=E?UpKe| endstream endobj 630 0 obj << /Length 2421 /Filter /FlateDecode >> stream xZrF}W\gUnr*9>)JD4H@;ޯR}5=G<ѻ.QQJLJYt7x(M1LFw>~n>\>/Qbqo JDA}O(|z?]<]0$*J9<.h4g?E}somet{Q2JIBq˷ۺ.W뿻=^d|3WPEtƮ on>\^d7=-٫ݷWӊi${cvEӯ3tIBn2r@n*dF$T)~l('L!6ճc)pSbOih(]M5ߡ]* @atox2 *EzW͍r/N^<Y$cJȯTεC'rN$!ɖː#mYx.:pV#Gut p^fdSKCJ ]sh/Ib:L  yQՃ4>!CS1ߑ`B.!dپAW] l{Ѯ` >> /h68kMat}momwՀ3J.a6<4TԶdVjy&M+BP܃93U]n9cvW2rRG ]<Ep"uK ?ӟ)C3waw.(B$Av! _`4);!l}@u GQ݆ZP4g03"a 19&:u;hAtE~<+7DcgUO]8B=Q/{d`jv\]ڙ¶g4a8~*_5 !I- ]tpPE8;>{8 `oF&=*d 6$ n4<tfwv޲$ƳQ/ˈ v%X(?/*l~Pᄚ@7o ,%\c^GA#cs1㗇ʳTPU Qܵ 6m T}1t!=5`I'g߄u }+Tmܒ/UzT#Mܮْ'"~̝`[:$켃*䴛B}xTU]ɚ܌&9wiڎ}\"8񘊽4vbԻ3xw56Lgkэ|{z+״w N4:\ϮxqssYMm 2P/P-_]YmF~3ALjQvc/?)nRFL,%G%`uIE Ob?A *7n  Qb@2$H錶'H,6Tg2Q %Lf`K1arLy!;f IO endstream endobj 640 0 obj << /Length 2705 /Filter /FlateDecode >> stream xڵZYo~ ya?9  `Hk4<=ۇe-ǧEH`5U*^{矯_W"fI"v&LKJ4gRs]qLs:ſ*fkVs*f)CZ,{_iŦ+/x}?~ᗫixWZ"Ŋ,sLѱ5 #uݻִ$.}@Kl恞x0Oz‹H8SOKîcZܙK89K6uR+:ɥ68M:v_}r|m13M5khDڔ,yFbXGAxZzqZLYB zEV.1 ! ,U2n-GŚGzD ,Elly u9eYNuB7Sg!&G.c&%ẑIp6NYΣf[˃QzO,#P`l b>u/̹O")rfH?j$>הRŒ8;+g| J>=#F\()4٢1\6J 6,A%T.DD; ?R#% +4Ѣq"kD܌u.%\`ypmc 88dpfz}CηsJк) a '>xm#|EuB!חԉeS>Fy̔ 'Y7`W"%OYϩX&Fl7qq6AJ"n-٢{ # l-P*#LQ <& 0)pIɘIqstuCJ l[$ςiq<9p뵐`I}ڹ9la1O^d0F 4C]Y-`R*V~R:;B葱 4y8!ψse-EBrH@IBePl *OlCMGӠ+nļUa7H{4il_@!*hg:Ji`X.{kϙ{syUр| W[h% y5*IYA&PD$\ͭҦ,gxzPwɂſƈpwo=[Rݱh[ fУ_ 4stowѧM;~e8] K  >ۧ:(ϘLY P+Z?!tlOT:gP{7X|]RC 4*/;rX2c@Cʃ J{B?-/ Jjg)o04X(2<_OTP 0h)c&Qe8r'{s=-[hho3)iĹknY}nzDHɸ#TR6hQE"t?O*Ϛn]S4N՚)L"4ϣ% 3u-]B*X" l@.3D*ɝ8y?j:D=˗KQ!'˅dMikeR)h"J-$|ݓC0! Pe 7]ߞQ`F~Wf@P0De`OBģ^=bvuI@ T&4ߘ jE6n@b`J*'67B۠ px7ީXnƌ@M+ pN.onw_Yd)!lkWE,Fmѐ.q]Xx=ȰbE aeStT<5q7z(1ch M#r1a'zD*&ǣ)]5,oNqC~) PJ"%r f1]_]W< oWS n,Z`;P~_ıoO';?ΤGk{,6~@p܇,}OȘsArE hiJ[R.)2{ơTbZ `PI5ey^>!?*Y+xt|N 9cI= Y΋,#9ODAy*9,X'@}-sӔ?^/Ĵf endstream endobj 653 0 obj << /Length 2649 /Filter /FlateDecode >> stream xr۸=_3 ۧ4͸;Li V8+ I%qWAd ; |[ջW}R,\nWZF\ɛ_r%8yNgdS7:g|j :UܬJhm[ich߸Y(;ݝjւ4]YWm 6LYpDP9t?V1b)SȪ6N>ῢsWk`ۮq5eչf th=,LƲtbS1e׶ 9-*F[\(& _23nlq[<E ~1iF>@DI/-~L[PLK}qEWYM@6Deay򛔪+ØNhOQ7@gE#*UsMHd9(9Z8n;ܺ+ddVZlcj,hhD*ʁ)(j컨9q~Kz4U0*13ڜ`ڻkR`1qM LA%`Fu@ P@ X|(pܣʀsĴ2se۲~qӰeR_3T;C5xp/07~ZZ0.;PbGڃۀ!QaR6P1dp=]S{#z蝆V,M,{{nk &P4|ڮn`oH WebZbh$gVİ c6sy[3p`B* H!t2TLLɠdwEKEn^\x6u{{(6.FErXdD8GO"ܮAY \JHRHΔ{\C d&B"#j؅ )C=-\\0*L)zjx>X+#>s23~eR#ε h TSZ /+MR֛e^i Ty-! ٳ|j'b_-̭/ym(81"Rͩ\)?p=J}/rʔLcӀ߸MJ9:Oy 59'\К!j,2cbc Hlp 9kte1 ]9p9H꽃_7&.pj:g|8tN^q$O d``uEI1? W Ǣuace K}t;|+zHF]cXB*d=͉pw{ySy=)`0~X пlܡ#!G4>ًSDďItOY,e\[ 11 `,t_jц*?U 5tf9r^ d U(PS!d :P透i&\xW6.DzzAwQmn((^̲[(L7\sQ7mxPj-^9s}@f[oRP2X B{Rt 64C2,\Y-ȱYv1 C cuWңڸ$ˍ[j^+|6͖Eg}w&f\wXkpœ%͢lg,թV"'9z$jTi7& ֱ*0b]?<r3dbQGZآd(}ae[:$vXˌ[x[x hNXzۮٯƘhǟ?@Z0bKi- 3b Fԃ4w>U!a_m+a +݋T꺽xɛ})=B;9OOACI/X,q'^`dfm~7"@×[qr&8|#R ZLvjU#U&ͱڴ g\?.$S3]l/> stream xZo I0$1h#CZ#sHR @7=Y֞n{Ao5TiKZ&ɬ&xfZNԼDĀT7*ix% a|t*9% vtu R 3wQ-qiucnIb'Z[+%ny*c'45IF\Zm4h$1V5=_46ح5:&nCpJ 9AvEg7# j耮v1)a!<?quX ȄZ /C]Fc &A6؋KOb srsСC1WϱnƜ,y* o :؉36c(= x2CҵVgMmc'(@ck8@4VFs< p.N 'Z bփX)dA~PH5u :J\RC'VƼr^cWx ٳݥ7?ތ翿fO7Y~uohcoM]$[Gt_b>HCӋh1=!.%9B"Z@!>>@|9K? ڏ#_!zCzАlr\>;0_Ձ ?M %׮g̀{.R Yx~uMo'D=ꉸF0xsns[]yMA==K6<7+E"[6P RE6n"#{}RuPEd";[BJsdLasϞhA*PEuX`xhf-wHX I(JiQB7ILj:\3q|0jsRQC({Q9Z3氓p+N7X &C`fQ9,$\ct>!>HD#p?ƫ1BJ(ۃBeqG8ܗC?)}-Ov^prƚz~쳧V-┱Ó , " Jtt8ߎh[ퟁc,EU~9-ǙX?|$h^ĩIVLp({=6`+;A'Y?$%IC^ ی6ptŸq`UFUzqIǴr LU|#h%r:CT p_L8yCr}'(96}2׾YVAq!'BlU8Tn⡲>.nB:.:<lB5Mr n'bwSskss[W=,Kˈqg/-r\Burt3gQ+/IkVaRꌑ9m4{<7^7Q#|%> #W洄5o/<LQh0qF1L"+!4 /H Ĕó-V;;sV-ERDEUɛzW9ʻ}*zMH/,>;@l #/gKv7Y7?GkV,"h>-S;@~KwH~*vMkt"vo|3ǚھFߓe5<$tqlZ,>Xla/n0uVkoqjt>.C*_ endstream endobj 673 0 obj << /Length 3010 /Filter /FlateDecode >> stream xZK6ϯme f%j]`6@LAc¨%$OVH,w Ez~4_V|^*W1Kb.V7+,*KDޯ~ ߮Jpf+Td`-;Oտ2b<{)6J3i觪^/.km۬(בZoTi myeMAFKɒBLgJ#Mږ& g&3Š 3Zbj/N -cx3 ߥ]jŊIθ-L-p8Xq6*W̘h0y9z#52j./ ަkQ/uYQ-)福w@H%xh+T-U \ﻴ(0q3ٌGVӁw߿ٚ &&@KDDjQD0#yI5LH)AN6s[6ka? O/s"nؒ0;Q>J w2*j,ߛc PF%Mƌ'Nߚ;6%*AwQmGC (PYCSr'ɬj)~ | I`rXKeCPMwS5ro1eiٛ0﬑SP/ډ})򵰾V2/1BL9̋y'$zykxdEK&lex_ɩ: 1Œb19fIDBK~ frH9=`+Vmd[հ<ȣ'SIni]#Z+ncё-ㄋ*xEIU8O,p'^>>. .BK"T8mZcsN20Nnj2PP_C>S5p6H6z3Kq7y)Il'ιA ɳ&bq^$r"™ )"a?Ev!Zqvb6 ph$cb}=8|-`ԛ ̎K1* !7/3zj;jv4F =pfAZYw}XēgVBv̈́J"rirl^7y0Tlcllca<`qq1x8'Us%\<[,C 8zFMPZW8G"=H1D :岱7c R{1r8B_]ct2,Q yTDK/1{Jcn'j~ŻB sm]+P1P۳,PaOO$bң]K!E fp{ow[܀Ptz^aHEJ>کق2BetBTUٝMEx ABZ?Y9G-81׵xm m n*B\rfh!3bN.6F̄b@|ga /|1N P$FBEt_$7M}?Jߖ^gﳑ|z8ѻ&8+wk*Oz GfǮpK׺]ܜ%4RMvLcZxi'wYyi7F]VMCY_"ĤIfܑHOmȘAj Ҧ,(D,u a_G,3~$e*ʘsWjxGŜ-]Ob%mǃBх¡?iF>ˀX:m[W{wi&0g+]6-`sSTu6p AJ=sKOܶtZ/g||SOW׾~?RK endstream endobj 688 0 obj << /Length 2584 /Filter /FlateDecode >> stream xڽZے۸}`%RWxvT❵'O^o0#V(&)O .Ft0 ůW^(B\],P<%j|\_/?]Dڍ!*Yv8"2X *XqIb%?^r(]V,_C]$_8(shFIDXUEbHիEnNTD<"*=PM4EU?@dZ=P4M6Yܳ}7v Ǒ6CXyS]7w+,8n@}~;4b;5τ$߄f[\nʹb&^aif <0.Ti٤E^ڕθJ.T.?N'_]e{]j.)S]0pR !~CSonտl;"Pp=8P)Ȩ`4OYmpuyή|F#9P7hvɒ{,\$^Vɝ@ڗU7sCjYawOQX4Kݜx<cE*k; Rf$9<o%C:B&kJײKjPVM%-uu^tkO]!7dah3JI٣θ2aQ)ijj! %t= <(yt57 x5 Pm7O{ =Sm#v5혹eflI'ÂD]gkJokE>bs*KeFIuqqB5I8F)[kֺE3{qS[ np7U>>"EJ& Y0\Ġ)x. G{-`WӸmP{Ȣv0P]΃9C0m  m5&;M$<'RWn,sr!=ZCڀ:i qBĒO|>f 3`0ꇱEt%ՒƋS7nxVܢ)m6dЅ<3_rYb%><̡VlB:f=:"q`+:6 {zր  Sx*؞t4:kXyP#xtOU`TsV"wGLEU.E#ɤj]^AZ`OCkq:ˈٰa%6: L`qMXW/7;Ws-^|E]^kޒ'(l1#}oX™^4&AxjR/܈qv䧳#ms_[s%u}q/`lq::Z8S#ރ/__L54#` +^ EdNZ/wՁ @r{m@i -c%: 8Vq58 Nũ&(P8y5Jӄڕ,ڮg+=SGE2R@UJރ8!xpRw{ *jokF[BО LDr9bWlɻUR*'}hiNB1-wHȄ?|0c <>#ؿ4M\vmei^VEik.d&QlB8zNמ.vOH&3I>3wBڳ H!kR&ir'jMI'AoI`s]+ L[bC:|@TUkj@6ϯg-lC}u˃3|nG4` %v_veNr?ٗ[1dL^3_0-{R۩w6/U tHӣlKVHYkڊ9nT|ğ;(`aO@/s =-tꊇߍ`҉ߑ et:ݢd8Ig&cJ$\l8K,~Z6{2'?Buq? >Y<3=H2DJ;!>ݿ(}!'X]Ilv>oqf,sj^SK|ѨWW/P0A q% m?֎Cp^|h5p>jKvi҆1RHȪKF0c}$A HEDN 5D''b; 43cdrbg㛤cRa,zi/ו1wADSdqO3Ͼpפ\%b_d #xt` :#`3W|LhOǾ6α}C_ f=*{4 u4@y>u<,?|: > stream xZ[۶~_<;!L]gtcO;%JˉD$ew{^Evî <<;i h꧷W߽qS]ە\ V*Xo~&(Wp߅0!&e@gPirdSH 0x7S\oU,~M?,\Aop*Mq :dMfpgIȽ5 b()_LjCMqѿqPޖ`lo7{Sx<_'US2?vvWQC̭s} ]"%V>l >yu=chk9-ݾl<wpa\&ƥ,Bc7nUn[&Q&~GɴeY7n_n;vguߛBhns$%\4R.>`$|bM8_0~ 0uwXIâx8>ŻLQdOD=/6seZ$z?iEpaq$0H$_sM2U΍ JI]G X O9'JXBŃE+>&A* !qD#*xV, |4 QJ6P wYqpg-Y^Eu>Yƀ,w/4o8|ck#Z׸a/Ys1o8on0.-F]5$*{R5,: 4.w>/B`☜)H" ,DƝL^@˴ޕ9]iy& mp3[i/'\s Nv_v'[Փ0m#2$F)ɐDޘɰEhKvkȊ~S]0B`*>'Z`Y,iU}+/AF M/%Ի,\fGyB#gBj ^V)HΠ:`)5 FSjPUtA)ONi0ڽCnd (lZCfW-j}kN!_\.Gg6ܐa( %>/$PGtmu ,u*qA(e7uR֓qKZV*p(1o|:H@tILPi{j[dK&l20H9  v9=-v)c`+ ǩ 3E=J2lm^o5,ӏL1v+A*maQM!@iCKS–ED\ tDڨj{ʑ`@ӂ/Bq8 =&YWyb.Zf\"Y>C[?#SwtPCuz3y)[o4ムM:u]fv54}"qob#\rF,k2C޿ndƘܳ #풇4)_' zգu]C^AO&?':$Y]7.9d6ÇCRo:pumǹ0k5.wPDa分RCIh Cd؆Ϙ8A Tt}^tv5p~A }J˃=RT FݷR@sS@,z[n  0 &Pj/-{&HK`{]p.Dku:6qF:/PMOʐqyb=Y>*p;\8'P`=|Э$na6%O9öxUxҢ 3fri݄ {uSВGGnn;尃e9{,nBBg x_q^( }3H4!߇??3;5?d6>בR +,6t%u x)YXpxCKG9} FmOL&˳pkG6!LXf\~ iGbυ`wt¦ ܗ&2MJ$v" &0qH |6sd H<KWKXx0/D1dtȇ`ʶ 9Tp$ 12Dp&\.8 b??gH0ϗ]H "գziȣ:`f'8"4~C`d(!BsKD>mKhupy1H-@*}jR_8l *^9|Wr&vF^Iv x^`e6rSQPX& Hc{{?:FX endstream endobj 711 0 obj << /Length 2850 /Filter /FlateDecode >> stream xڽZYsF~ׯ`9ɜɦj㊕c˶R%lH@+_3) a0GOO_H':9?WRO4 5eńkM/&g$drr9oo.|( ihg J-3O2tF9IL(d0{~(~\LgjI쎁()f÷<1$'ļ< Wb&n?ӈedSĶ( :*qE2yQ6c0h:v.n/^柒rH,|@tO &3&dpE=>Ҿs~5[׶.oeș 8 ĉH' I)gs̘;"HkNz}kQ0w5:*^_=xߩiV'e %нa{wQ)o`Wi2*.491gFȡ]τ!8n(O?TH'jlW-d9QQ LH7.Yy`!1"鰀p"M<CD2Ƞo(߹|Put| d謟+~m# P-;@XrGq(哎xqϙfNmţ-:uq^x^mMm|Z Ђsr_{UrLܗߣ܀-FjThr eΔY d\]vu9k3E [%ݤ]unUm~ܡCRA~:8ȂpCdMޥVo6{EźE\wivmiU:y/oI6?u^c_[v6N'u.-` "-lC40| SsQE+׊d369YB:@꣨R>sf4uG1 Wuǰ=dCC*UZUmG0ݙQI.]UqA:A'Uţ}I moL>Z%˽v T ".~%e">>$-_F[l@A6Rp[6J[>ʰVfQdA>L ORnn 4ܵHņ1 {H*I2w,h|,ivF4uMٜA $0eG6h^6+0`3CYTmP蓊 <P^k5β˜!ZTnj mMفs/Ŧv[!fG7hAW w % P`A!>6I1(rhLjKA$ ೕca l R fh-_#);FBHB43&3&<q`%3r ldvq^(TI1TֈmHU^'/2.ؽc'@|R v=(<] %Ѳ[Ahhv~1҈1u n ×XmFJp5iXdž-U<A O *'ӏfl4Wa,ND|>CMy#gTVܮdT;9LmJ,Ln8Z.+7+o86x ʤ2.f);efA\]#8ݸnܔ{񽴶qَv̍ b˄(6vFnv-[ו:t!1q! B~8 z䶒j-s^ 6lݗ¡7$as|S_.0m+IB}:O`" &wfjB :[NޝD'oorB" "1yS𱽳OdOz63x}4脓IAABW=DÄ s/ˑ ;|D!PRquuT|B|qw GJN*&xJU$&fEϞUۊy7/ganތ;NԄ-J8ZZPqDZ ,>U цm@?"ސh[$ts`uSy`:9}wj(7-n' / +7;Bj`珢E-* 0?'Qm$ HiD۞8 c0%ΞۅnvQZ\/}BXh'S,Tso ~5MD$(nX8@ 1 }v;798 Ә' 'wIcJ1?'0a`6kJ8PHAr\7UpnSsFSs_LaRv7x򶢔Oh(D~qcwYJS>qIM4!f4wC|M. m?/GL1ˉ3ʑ~;Z۪G1?}Ska^srv4 }X淏_|"KdK2.vsw6^f^]?-mEрpq$*7кKkLRM r䠊!&Sp7OH{qpsbY endstream endobj 725 0 obj << /Length 3637 /Filter /FlateDecode >> stream xڽ[ob/]1ç$"@+J{6 kW>qIjA_/_nξ"e6bqsiti"zq^|?>rw,3-V$Zn8{^fbݎ~;>PB-oJ?X(0Hf^ټb:UR:Yn嗀os@eM;`Ou{(ρ-weu?Ȁ10]0el[}.kz.̲h5_~SSiw!rcWoWHq)Wا#/XQBķuxǑwvЏU -O8",54K*\&-%6f]4d68o.W({Ar G$7d=]>/wTdݹ gi+IV~R~OXDQL)p^50l ^܆/ˊ^54nGﯢ@jX㾉y7ÂN ֶVNC|zp< 1g#0(Z.ܺ.Z~sv/ \/ӋӒD=44v"'^v'O dPCA&B5嶈`-69)) yQ:p'y-'펢,ְ'eM#8^ ы2 ^\"SҩT*]3>D:Z,7u)CFҠ~ ߕ S=C8_6<' )hk{Z|;S@4k;'N1pweo`BI:kNۉ UR`9[lyҤU >mAK:7ݒ*vE,ǝ[ʆ @v:@p%{Ps(!"yGogDml9³pn~†R: z:\}&b2_C5@ e5) .M A&{cnYjqeYG 8Y]xZ3߶4YтR]gtA. ݯYow?BJ9&3li#hA *+-3|~6+p+Ȕ#) e߹9}vE=&)e?W"o>h"}R„uGRUˣA!O OI?w8RC@7^LmёHH?qq|zوۨ03 MZ 4$7G\#$~O\lVt]}Y$/OՎ2f,I衶wT2|rPQťcJP>b s`1m`db=C| ιsL˰Rʀp¥.pܓ0}&S <^ǣ [swx'OȢn!NõPI=Bhr\t⊁qA`(+Ai>m=1=e>PqU]^)K qt䷣ 4Ze!qg-ȫA;nLq"7bab`"}-xY<_&+c8w,z\b?pp& KP8W;vx9T\yY!Ohq7Ffv}!ǕţRh_nM\49]4b&\N#ڪEy@CWFaD [TG`Gr RrFBCNGo')ǡ np8B=!†;e2բ mʲFt"K29h&s?R} jsj̸ +0BE}G|YcEs^#ﭛ_/l :C7 _cXnF\۞tpf5o0?υR 51ͦ,"긙 >(p*"&l_V'sxLR 7`c[˻G')Yv~6,էl h*&pjxBz.OW:9D y0F#>'i"z\Ɨ}I7U_+v9 a @%.T3.Ow0'c/[jQb^.f0hT=6 xBT[Sҍ?}.)p\y?{&uqc ({|'|eSC[DК߽‘$r/ݗPK\ \+L #pLaDw48lB_T endstream endobj 736 0 obj << /Length 2727 /Filter /FlateDecode >> stream xڽ[[s6~=+Iiq'nIܧ4dsB2I9q~Eʌl|s{8b0D<`^$ .f7=x'S`$4 #DWMǙ&:¶WGG^GC2ᅔBԛ.>| y_jʅR#k[r' h%Ƥ\]˗fzu;Ka:>Lqo̔0/~П}uIm/w=VdB HH#, ba0 |o #oы1M9)ot|s(~OxX<"¬ }0|Kvr/'1QWpr&.Y(92ݦdյ H !'B0F Am4ԕS iZsry Ѿm۞u(5>EAaYA Z=|i8.}3EulTWyQj>"K`d'Iy#FּU\Tl6ޟw"(z)mV-j@h#ɡjvꮫrySVSQ'ib(61zgqBehZ!T:vƵ'IF4Br7W4UHwa5En%QN:b*1++4"g_$<8" 4{[ue$R[Te\[ p޶E\jg̺  L" B8XBF(O΋MR. fq1;/T ~V}vdSeehE%Y.Wez?ؗ>Dej5ONGu("}L9CJ9 ՞2wg;t|ktc˝$/m_< ȹF(P( vۍMnWy4KPJ*K&NIv݋Aڪ\ dW͆٬|8r4"b(E!€anHl쭮ZxuG;<>8D40L0ĦQ2OWW]U]~O/1I0RMmA N5V jk`8C}L"Ex Ƀ Ldj]VUBYlKUXd x9r1֞,]7\+L5)%L&ĥn?w qt"`C?%%( f㨒 mu7 lAɜ^ғ9;sϺp]͙|Lqc rÙDZlr<6<) ;v''Zu&R.oUjJò27󴛘Yp(ҀFDqzf#鍚~]% ˋBMQ20gRB{( Q^fkc%tñ('c c>hޡ@jB>/7HОqXt[C,gD)\No[|vycUժRsUcwn0gyM0ߨl F/ #q LSD%zu"~Exʉd3o2vG"FHh8CuqDaa3X{ʺU9t x3=TH(p%2EүGfsT&Y X*Se/oP ۥғ:x@Mql6I.nV;TC꺷z;qR%׉1;* 4(Gz$m]5RJIhxÇukGEi59qUN[{T\i%oF 'Grulj3 c]M|$"@,ApCd @ endstream endobj 744 0 obj << /Length 2647 /Filter /FlateDecode >> stream xnF۰t k`6Efq#)\W:o췉}V͸Iv~s=֖spT$,-KErŝfV6=hRt-CG~ ![HRsH  4zVC;@!RYޡHxTcR5!2hKmntc[y1+$ #tgb_-^T'"uC C :m⒊6ìF#BrL&;e]M$|.0Č#[2KW X,>H| }Eәrtnj["E%u]\ BFz9QK PАQW>(A] Ϥ .l~ 2r?@J-OͬF}*o B2=ӣ'h;q@SN"aO3Dê+lCk,6pC 9vmLQ|J=}Q'¡ p3J^ #c<65h^䫣:ї Ϙ>4Ab"mwSJ!8OxZ8WLO&DuW .*&zBǶDo=֯tY'o7bǣTb[qo=4NP~ps+t@PoM/xTQ帑PBQɇR8 qoL_"A0 U8ZD?>?@]іL'^m>J7(RT2NfD+4]^Tƞ\kO$?_/a[i.%DZ %Ε2&$l,I`>X8!:}t\,wyZk &r@8;T6]tz=wAڃPznPܔl^o-3oa<2,ps!U}& Gf^>MV²T=KV_pL'F7d80 z/@kO>~sNWn5͜NO]:B(#6M4J&6.u1B/F,. yԔmQix/OɳHx4οOӑK@2o?J$] 7c&*Ai;۶n=T_Zl;Fߐ)exXఢ~=%uoJ+Ix? uMh_܂(vO;v<#w\Aѹ۹Q`aГU=@@8YB RN\;י)5+S3 YX F O`$Շg.985XJǛBh۠ĖP~Ώ"q|y@8J+&׊f΅܏rn87ԴQX*2Mkv) ϙ:ƴ&Ӓ;EB+L]&o%eUxOP db3 ".WGgS4P^Q/dmm{4g0A4ࠩ,]5􄗢Z ,ffPvG;<;1c~n.n*]LBm".<msd: Ǚ|͚cp#=Ý)>Gj8LX۲ȠS ZcUcM=s8lt%iΎO?XWߎL%+y"A2S]43gNc'fA\~ebgB'rE? )gNzK ZѫgV̴nE[;MoMq]<ȅdHUGWjǕ ޗF(xh]4,ƨRᰧ{}?bCZ endstream endobj 749 0 obj << /Length 2181 /Filter /FlateDecode >> stream x[[S#7~WtS'_ݩL*MBv'vR=*h3 Ծ Fhv(ɒHi链)8TBՄ 5 (X*Qq9>ŏؘ%ַ2hi'kt@_(fIA H. 0a'RXS<6- j5Hힻ->ma* -pИ!mՌ`g(Pewzm>6 kld@RR=,C8"7[6V`7N=Eewp\k1ZIKtZUg$<<CJrڃP#WOL?m}6>I7h_" T:la'^ ~'7ຫE=v~Ι>?x7Qd4Pb SmJCg'gVDq<9|2G% 9PϿ|ӹ3B _]܌g->WOC\Vżz\ϫi95ɰ|C],Q q$Ł%JC eA $X֮뿻Sޮk"s&~eGi˳N07"üs2h1`ypvB񯤢\EqO-] 4O k6.tƘ>gf2B r9 z Duq5 P>:J MUÉ]rAǐ'wtMiy_^MG._t:]2Zen;ܱ韡v\8'/ę$&84Z&EP~lCqTK7D;DsPVnؒܗ8H%*{RƩ-S,"ߪXE&Ϟy:ӈ#1mthSM[LKJw)0MYCm FLvGVr񘑿pWhi܍(_-J`7!$ pݓ^e*_B {*eͺc)EGNUOȕ]mn[ {ʆ3hb82meA97@JV;miH0rta{MG]Iݼ9O.F_{Ϙ6gAW)YDAc):璟lm:_9g3L)LO ݷy>`R }δ ppM Ƨ_ޘ>g,9D}wT&9Q.L[&8fӑ/[3]l W.ߔz+]3\m#7*ZVh~:klu ſB-oJp camwB5VA~orS12ͽ%I=ls->BέO%2Ԕnh2]5tk0'De`Ѹ.J0=G5#agASET@tOrUH~y+ Fh02`تC_OIG> stream x[Ks8W|, 2y$pS6ZmHLRd6P$R6ev1 l4<8x7  >J!.Y$Av|] :Ӏ`FL ǥto/.Tq@@ RLRO'Oa1al!upstTQ5A"sm8_*f.m!v[S6b[#Tʗ|5f>iGeot H''LPX 1 EvB@pZ%  Ji@ǀzx j=lۧa,O"H1pb?  |?t$$dh֮ZJ%?'Eo,*.,+ As>}}ys5<< 9z=h8|o&U( ;ތ:lC=O s\DQu>"x͠G/424rWFY|wU;S ,Y%ilKՔ4 m <(]ʣD2y`!Vl;X+d) Gfeo<2IfJd z&be-ne$7uYp8b3KF r#~  ,wXȐ>xI,h\)7&;C xefh٘[ٽUb-Q^&:r]:~pUYr懋 VA}!'`V]kguvMN&6 mkקOMîbd+?#L,댰+Qa~Gc|Ca$Z$Ri<1*̑/(*lrR2J*aUS.M D}nkh3d4nbA~7դf0{&4U;\VUL)1Z5^,KC Љ#Ej[z~o]x:NR[vyk3w{P[} - *Pa$A2+@Sk^!V<.g: cDaHO= {gj՞ܼ٫W.Kwsyw9x|!e|-FS8/"ST3w殘ow";wv(l| pȯN&_Yt,넉%Ds5+<7Do}MCpИ8#;3,M3iĹ~j$ў'߯.ۥS֑OHѨS,՘Ks~xcN_7ü?}x,xG"O]Td!PZ#I2fKSA^E7l~c{Vp=^^xA Nbш6 !egZTD+_U 8*SxX1#J!Ֆ )d~`FG3&$R*6Jvëv0sX[H~XKthh|t! ? sX/s3j #;Yj42t[Za $C;ZH5D:<tFv4,>jN,VHWُkMh [uvxM4Oҳ;od! ')2$~sͫ8J>q\0ї!"M%̧ 2twX1<4w!xg"4tY7J>.Eq ;RJǽ-nOlXrϬ "UK86wu+ ) endstream endobj 664 0 obj << /Type /ObjStm /N 100 /First 883 /Length 2189 /Filter /FlateDecode >> stream xZMoc|.@0`[Pb K$p8ARjfp!=3y]]cZDk^1- ƞ,9%iSOZ JRLpM]6Rbr06L[%"KĽǓ;'.m^&^3ŻRC} S=LK\;RĎylhؗfHuD @`1`.]1A,G$#gX70J[ On*kVg f&0>bKol]Z3!a1xGP16`ko.bbm}N9;4m(NĘ6NXyhѴy//22*>!w[MXM׍JQZqQEJOb*d٤Me3g{R+x?: ds )-5Ы}C&&8#yx5*c:Q90DxyHAfOޣ 1K3o"rD^p,gH儞%Bp]hqGk_ݏx+D2iLH&a$},:LQv"uND@k4( 2cڱ{ƞX2tm؆򩶱d+8]Wm<ܾk=+|#-DJQ݁Avܼp ; `j#ؚ >H^>,u"(铫 Mq'yĈH)Z3p> stream xYK6WHUYI$=%U+[[wkrpr5E|X;>FQ94nwyDH6E"& =`n>8OoUp4YʝE츔٩{ ׺#y`8)yOGιBP3z%~ bk͛XMzZH? 'E(ЧChh^Cٗ#Ykv'G.ڎSg&j۞ʪ沪O(8c?We*ǮqNrNXSB[KۻЌku5+A1KiPe689'?ھ+S.BOӚ25EUɔ)];.遛GYMFfኩ_(<˅>;:e1bQZR1/ CHH "Z77fO:tNw4yG'TELn`bJ .J>oo#}J72̀@T肋pUU4Nn < *ͱ ۃݏN~i -WM uO]@mؘn$g;M1T0)bROgQ|N]^Y}bx{ŘWE̛1oso2rB)3ẾcgO: eke\q w!y+u6`|TҤ`E059<1Sgb,.EBA]6 C(%Bzn^ V)C>p 9|}NV3Ws~ 53bD=.s d4 3k#w[xr⬕r{bҏH9a&1P`FqLr KمCaC6WfeE\ Rn> eL5t\ڮ.Qa-?0k[4FjEٮe@ /` 7wISW9/gS 8Uw梅jzjOyIC|j-K$h!Cl|b;8 Z&H7 M 7p;iWν:E@h@GWYNB{C8msûp݁; 1U#h'e|u{p7;k b8A|u2tYM9N̮lzd$a43;X z:γ5c7S? PTgz8AYrCC!*6oH.4k }~2E/Y΃cHjw1]fE;a9BBRX*ht< aB]ۈ0zUT ɳ>(SO]Cw>g.hAq߯G~I{._w.a$?>iN&cQjua`:H^=z_b'W6 endstream endobj 781 0 obj << /Length 1980 /Filter /FlateDecode >> stream xYYoF~[) e>nbHS7q4@iJ$#}g^Y~Hs78 ppr< "Gg"% "IPLxpv| _ŧa3 F1n d}\MGI8 Gw/9#2X2%=_uoߝc~9=^'u=Qu_+<6K wY uM< F'Q  8ChlUy}^raK\fu#N^VShbN !++ⲨKNģ=,QCsmY4H/InYޤU/.ZA!(D'vk]pT[WV*g :ViV1h]h7:|+<wBdb4)}6@Uʔ ¥锳K[4Ӥk"WWUі`᪭*ػ)n酽?wύppλD BIeW#t_4$ ?$S ըv cBYZIZT<-ʕSp? . X؀A#paq.fqc+> jvn{x_4g.3}p&z$FG#"~ZvvΘ9,ԋ`9FNogN"2X!tLW4jM1N:/,ڮvs:6'ᤄgy>CD}\>x.gp(UO }Ax\.{4+UMV/:"{p9pCs6p9mA~vs]:"uZώw::jdouX)#''/O#i++ :#LcQ\Fow3X4OBR7IՑYpG1̚.تH/˃Lݶ9D3A^:'tU!%ho&_,2X>uԔ Sr@BeTVZ_NL>ƫoidK 8T1a,%6{'tj&ջ$ 1 G\g+VɅ/dn|`k{i8)u8:j܌^P%u f}cR`q$4Ckg׵ɑB1RspD_\'S;}\١ vl Df/U -mS͛kc䋟u~e*iK(O}G 񤐻\G?qсtCNt|'s,̢\Yg4 {/>D1#WUqR M8xj}5yt$+cظ_89Mv'џjC'b nFI^}[9U7ܪlt?4a=6M0˯7IBofPÄ9bO]+0]ۛwZ_G{ԯuץc 6  ,dC[vavs-r{nrA1s3-}5)ۢ I _Hݬ =y.l%PjOAB}z$ܩQ$- @j %"1:;<| endstream endobj 800 0 obj << /Length 2926 /Filter /FlateDecode >> stream xZ[o8~ϯ05W`fNf2VDXr%9iCRWS4b K$uxx9/U& eO"c1KbFR&gM]}r,3FIJSZP"b : I"T: EtܪsŢ8L$}%h8&i3_?8j*(ۭj7ojSf:*zd*۪IFWP fsWymJ#Qx gU.L|'Uyi6mf ,! TwEMv@_fSo4\geV.Ui*x,b=FPhR4~Lp"E'g7sF)5.% &}APegoh1)[_sTwbInYT_HwvWaVQ$ZjNiA^#{B{ T"'lLs-L)l&ٖY9(6&n9 udlCXfu[6 4_b[{j~fcp:+s,Rਂ c*OtyDfHB׀vW2Va9=h*jBkF1nl]Ȟ5q WA~㸃|=t ), ~}[l0~栅E |"ܡƗDȂX>HO@/]Se`z#!Ry/vb5$C +rHw+DK=]|_gAoT H]yLXQd< q DDl%q + loWa1hItڲ.1 ϵ*7b7X3cįԺAR2Ab(Hjo܀6Bzd:8O7A[Rf!,d72B]};e}2jSapʛ +g"O' nt3-v[SB9'v|4z~HҴvUk3n*+n߬z-X4`:S{ 0ɐ$-т8NAɬ\}41U&,,:Ok[ͤWo\TF[#NnTW&׃ћl d׵RS&bzԞבC S.u\σ](m+-/Y`l|ENP :Xx}&)z--Kul6+SlUln (w#<&a6/(F?zw_ge=JگڃG W,AxՇP0c%3>j{Y!H,^ M~EˬnE Iq$ 6;.JFz\F"zo pQ *SIl+0zW ໿+1"0>÷tO`{Ab-{ߐ%%>!ǐPsڀ>$PIi`TKCDQl?!d4 Us|'Qp=I> stream xڽIs۸^(=/t֔fEZv]Hq/]hw^-Pt}7bIq>`Ha.Ŕ^rYDu&oCc'@7u`Von+au_c˾\!|qſ{E"P$X{)LFSq)E(vFN ՖPg.)7 fl<\L r=ڇ>n :aI 6$ ̘Js=ZS^"4$_N/yY˼QؑoA^ i-9J!.r~7?i#6|%mf KUua/".12[}@#-pv,"hd;pzċ!31I#UmnIbF-٢Heʇ!s|iE b}uNp,.q(6wX\ó|!Pw:w xdO6,X\,nd`ΎMw`\2tqěаAqF<;ᐉ VYfQ@$ C۳es j8 DYnADH2CB v_ׁDYZ-$zo q@מ 7yHDH($3v\XȊ ɶXo3f|q؆۷ь@=yþ?vn[ Y`[#4y 44vx@탓aB0H)m@{ `.s{-v}R, B:mf`3j4M#MvxW1JsW|,7HGg ۣq"KgAs_: i=^}ez/}[/FK҉j uC2?ݜ&ы@.˻OoyZm\ۤ.C&35Sb%oۖ$qxO~My! bvv7LCB,akDV6AgIw$Ik i> stream xZIoHW}QME&; ҇`%&"e罪*R:AsHX,}:?>J33$4.og"Hr=򯋯01JBӂe)Ψ>[Jl) r>.м@hDs]*{>o$t2huXSx&$bzgqUyQ~::L.!f$1J֔iͻ{7&S$>VV/R\(M_qPL%C\ohK0e%`:?Fd7~3DDJ9Fս=.*\͟2x ZW޺kQ[Y. Y(BooF,ƝqLx2W)"ڼ#'%_<(҄l6/6c|g;JxDnbo"0c-1hbD(3]>imxzJqGgKBdha_q7~ĺZ2J)(_ڐq4/SU%4ǐ2Q:8=$ sIҁ{rAu=ػu,i]F0zůj}uY˒1^0}E|ɫږ]%rR([ZE6֑_&w>⇝6/JTlǀ}QUhggUfWBTdjsvuMgkwdOnf`)0ϳrH̏Feh Р3N ܣV  w< p.gx$r..h^F7i\~ $!Sb=(i7R#|&OMxI !+Ҝʾ4p O1 $CY@ǘ^tKxNJy2bjE(9FTMC5<8 xp&>P$<9llU44[L7zcڲ`c+MImL6opa\Xw }g'\8#z]wBZd9=wuC]/ n:׶2"5RpgI*?t)}цY_r0P9BE{4Fo[',AF7?z ?S0%>ה`#ENp:Gjj񇣻m1cݪrLwmP; n كuVk3w]9p#-I tZ~ kPPB.Oe|pvjW`qynyۮ9*qӚ/7*(ۆ ޵U7qdz? 9 ?`{QKS7HVxgSetxyrbtlnhJL®/晵FI62XgvhTWƫ<[So$T>S6$&U 1堳6vW371B'&w f+su3*р&zSCg'1q(ۼVܲ>o CaKΈ^:'x6+DO& h*Z< ґN}$Ђ׮í"B M|cJv~N 8CԜid[Аm gfT"( FjD< dU֏I4ЃѶsx2ZGu'S=`u2i"i+} ?01<%ef> stream xZK6WHZ 6+NVٝ=8gU)Tίn|(iW* @7]ݯWy;iVXCnō!RьX&W7~i?a0_1J,~DdqW4Ht@RGo`[ERKĐW߯ƷQJS[3?|:emQYK]JՆ~1k KPEL7b&66`ֽYo.iK6QTnZWc#F0A,g[shc2܅7 ")!Ԧ^]U7\}ȣ*' ;~ MRۯ}:]8;[IQy\%* +>5 VNbdJFXWۼi^T2umgM͞2_r1Aj寍^ &\6;#+ t n'3r f4t5q5>Gd7y7Os͗a.ԔPn/<#nUMw}7:k}^SU&ybXM^]_ujbڤ]lإF^DM V4*bqaqoC'b(%N_!oJ)c˓.NQ/`':,gdSKѴo e &n6=Yr(E?~dy >O #">@8)@|2RîOŧZǼX?4~هoޡ.U>ܾgM+n5RXh%IMf8 d?YMATsZ˖9$R9qJhAX'tJhZB m9 - zB+Iuĉrb&^j@΢_F9P*Ik^ ˋ6'a)exW"RK)*^c9UuR]2rWle=a_f>V:@CWmlh~ќ:GFj*)b(@Nj p>\-+, 6tfAGb:{@ :&}Vnu'Fa+`6<,ӹ1DY)i!X:Q^~ӇmP%@h1ܚe];L;WE)=-}1g] hU=׽3AtE= u;mێG?jRШJ ynșA>W -\"ynHLzA HJ"2C'^ʹ`לuy5'گeXD08j,E:{ܛ$F4TR"rƘØwhR?C QECX?h?\~C9⹮*&0_ ٚӎVd>@υ}l?Cp8!`$% a0h|1nOGsNpvmvO- Uz<"iL: _-5yT8E_1(1;̶U>>9.jg;Ipa, endstream endobj 859 0 obj << /Length 2644 /Filter /FlateDecode >> stream x͚K6+xTY0oS+^ϞdaEvSDyI3@Ig4_w7/J e:Ef4#n}~_~:Q %B[S;8˷u{%D(ͅ"Vpӻi6g(BL\P=+ǖ]8VaY ]u|*vvpygUo]GnYrEZY}oT /BY??ߠl&'0LRȸ~3{\by,^@#Eb!` 꾄2L`U~ȫޖz53 {{':F&-]1 ꑯP!@G@Paq M|]-aFAQշ2`xALH xg &)x~$L1P黇8(2 [no>~ $`_}m88>ܼ!(g6LD!hơ;@1 0B= A>94^? -ь>Q\2AjuNW&@_{ C^VU)X-MYճJ,? NLa 攰Q_'"|v ‰RR `c݋KA0۠xDyCɿh~\l8i~(×~` `KghQ- fGmi9RbDiQ@_*JbSH©#BL#BzB=L8xc1ņK9Rtz5Eq*TwCi?ouH{%+ &I@e'3 XOB@mXILk8GGE3oSK6C6NB@.#`kyֳ=±I ։q#qE^Qp5@K ]Qc}uQ3,nIX#ŨDmMrY ll9c=w[ɭ T6__wJ&Gα5XCjب/ǣHj|7%:]w ;uX'~Etp:"ri .cap*VU7yز3~ oXU±M^]wMe _+ɛ e3}GMUV&efW 'Q7bSL /vcD=t5ԌaraX"5QzRrlOSm8Hb ~~"K3M.΅Y_,,卌BlPOcQ8|G;&wD0N#@'aHTBN^כNM ~3%]!1 Xt9Sl2q8|XMx fT> stream xZˎD߯%lvH !0" WsDAs'Nғqn橤*5f=y V-q#'8J2[H=58z.(c\k%uQƉ  )=x#iL+{ "j"D՘)DŽ嘰3&tY 8 Kn *=z ⧧COi1t}e9D;U >θ5*w_|Ͼ:gCCM2+ kdRa0g Q=.٤. a 4G`FcXQ0+#Hܳ1yB^ǰdp7IF怛q+>`n2B94 [2A-ʁ^i" (Ag`\"QmG *#2#ffr/2B !CY͂T -r7B`bb*W?2mf2L'0jfVzYư爟lXk[n9 nj 7ʹeKC+0VG%;-K]{MC_ mڒTt$kq}Dp] lbїI!4kqE14=uLxP nH'ȼ1;Q`ߔ| -[Wr  HMKy˽Dܲ>$">1 ;Dطa3[ö!U!l$UvY"a_ltt=7Gm؛Tc[[(q"[6hx Cet=QYt*tmH(sJ P1n)DA 2%haN#l{B6n~G CTR ")9RGMКY) ȹ/b:?OW0镛v;x> stream xZIQJګ8@Ldr`K%53)j᪢;F^7mgxw߼jP0ofT)%)IPB~=?tF0JpG3԰'tMTڒ3h"gK&Ϯo`q4{mDI8$L3^uI!˻)>}_.*ŒMzzhV$!D#-PW x3&:!1 bK1qԛ/ɶCT j5 Vq"Bh$dlu.N) bk98)Db1tMQ.TaۭMEYb,_/b DC FH3™R!6~'kI*FѼu3B9#gT;#gVQH :v YgN*j/>ԘTp6t~n.Ny@ g|jI[Mut+x+E)&^5//gdL$ ݎO?8*uXCQh( EIFz6b8/0)G[2aDrIUW^e#T_etGo, i}iVDzeX/}r;P4HPU:kO̝ l&y>G#$b9WfyoԯԘqyf>+ Kħ0ZmF:|IT [^4!?Q]~9bb'yߍ|ћdlI.p"5]rRԔl'k~6C_|:M2ؽI}sLi2vhk h G`/%>)2{bȁhR}ѱxӏ W^;eۆ 6 L?0sy5lO i=,5ZE1,E-9,Wcڙ0#ַ{rV&z+quRqg* R1Ǖ1LnX> stream xYI۶ϯБ싫!qlWrHM\NNҰ"2I$>-v0%F_fg{W3dQl$Aj1PzNE<'" ; :@VK RS`_ˬ'M;$oU3g "uʵzjNqX;Ur:bg1.Md,򅛲2?Q囼H~z_euV@Bd`Uyϛ64GRSh6[7v$Yvh<<$l ?Sy~@cQBP v- 7A0^ʠ1:X8PzVO}M8l"ٙ}*) q<#8+?ǁ}Wu @dߐK?M ;ՁcG,yH|} @AJI%iwSW1q#1ZeIr ݀Cb kW" 5L86Ώ(?߮mfJyG^artw}LCxewwO(&Ve m@PLz|"Skv{V+wŒ'+I˒^B"UPDAB7XnE2.L D{edc ,SϴZl@2$SBrd Vd277;0K3 Ҥ0w(vfzz <9 Jo?Xr{vt?ݿB2 s8J#u$9ye4DkՋ&x<9_B1#_7BŠsL~X(},L[Tv 6)tRѧd *͂l Aዙ*PMhkD8Gm=bq=b_>]""|A\=c*V6_ϟv NPoCs_gU,Byu"-ȿaBB %yf&Ң=nzTsu;ڨE]b6Kr8xF+7ƨq9`_P-+rңr٬ҳޣvj}ږB6< mZ>3Чز0 \\݁xpaQp݁.ܳ†|.`]]&ͳN< MjN'=yy;`gOyo}]e5j@Mؿu_iY;!<4&Dc'H#!M_94}sq4C1-V$Í Kw }QBhIڇU6f0YQq FJ(v5$^-0>/(+kw$ܥ6.iPV)Vx&PB"h2~KgOG endstream endobj 897 0 obj << /Length 2363 /Filter /FlateDecode >> stream xZK6ϯБ2< =xTj@Q59(OAO"yԤ`Џ?4/6 7}r!,nTJ#Az)o'L#0bY<I7IxA@9#h2T$KH""/͢??,>cil$aITIz-Yw/B BJtn}vː^}= pry-"{ A^w}K $|K;tFb; ߝ̊~r[53ƐlJ)7_LRVV]qXDAM`i1RQRjnIpv2=İ%%[XоMEpQDák:;I98__#?|-A8t⽓Ze6*cSF,X 2ŝm^cmlWNYcL8@CrPh nYQlfc VmOtmz,( vc/"[yvtbG@~3΂mlPqG7wLqH,124>ZUOm>wGigv.=).gy\n|݃y3 ! q֓vk 7}ޘ8tSYӱ lF͋<̫so"{ZM0A\=N }.75e%_o>A [1j sK!mZ ]|t/;PUߒ#Lh>U [MOEtEw3.z \}_{(٠SVT_W@Xg*jA=`.ϧ/^=M &53rwuA$;\~}K5zv]{E)FMZr8D-bC^V[Z^//JKgSgvx ֝ٽ.ִķ paK?JcPk<ګWq3Nzs t'hq=4 BD7G" 1MekG:R\o* }@CGׇ#7jl:P ߞ̮k>84T)`0ȅgs|5Ƌ*?*A"XJV#Vs܈^@6 $Û ,$n.RwN'ػчxإvwv4^+Z-bן D&^gsjc'V?6}[]y(|U{ϷFW|E8O^1S: Ӊ3>͕?KO۳/f3.[ FL'Ů1n3sV\7mH+Y$/oV`^?8ЗUҩhī1Bo5C__xI t`NIh$L eo̱si^-_=F^GOφĽ endstream endobj 908 0 obj << /Length 2265 /Filter /FlateDecode >> stream xZKQZ!xrXo֩rU\v<9>P4b"|d2>)RHڝu|aF 6/x7<˷<]H,v 'l&)W>|`rF,`˶i{5gQ,L cWk&˼.KwE]b"xY=搕o5 w}ubVk&sJ*wj'+m]nu7oܚ}uuӚք!H3I]3(KwUy?zȖw3Zؐ@etOERC Bsx"ə{=-UӶ(,d1s aJCoO[-eC,戱!B_W$K0cpu_>/&_U_st>nnm?ޭj~廘EHs0r[2$l?Kϒ`wE%Z_-_,qbOΚ*xʠ%RS?m_֎ åqÏV7 S_f/=Ǡ!I#H`y!kVk}+c1y֔@n"!< -Ր'1PfӾ뀓:p2.zS[{^%FC{Їbiլl}H1R9^h^翵1QV_P2F5:x^?Y<.7K,Xt˚ Ŧ{M%__}_w: {k 35ڬ_[.wf Cj 4X>~FCoc85l 6ZK8iY1w }Fq`%5,c]p"2gz) ~86-!ͱsp+1")\ ~="g] >$ O(:[r.X4&[0E̤IOJ wOK'w}ew895/`i=v(KqCosL13<\yY`3@=̂> H[8kV;(*_p-8ԔVŴ1`u2-NK mߚr[4:=K' 1`V98vdkmxֳ@dnUy ُ =6Ai*?gCH.+c Ԯ_/ᑗof=/a| BҫO%^  F:=K%Ixk, "Y"dPwQ|˺*Z;Ee/F(!'0cy>oSP2oPHJv72sv9ch!ІR6#m(~6 &L\ũ8 Yc Ѵ<l[0L=Ӥuk}L-Իx%=>8*4 Lx(0F#S21ҔWEFc `XefRu->q8wlS,t$h-`uqv5tM]pQ=ӇlCԶL&"y4( 4/=;Lֺ^;.y@!8 >H)YWqɰ5ZKޖ5f8l/bVi8wOrrsj{9vf MYa@? r`޶S1Q)lꝴۢzZr&cq&́WLҙ4`qi]tZ\$(93u/%͸1jJӔf`NS{$uw $чRPQRM3*F*6#(KaI>!,9'vPu㼸= @#H> stream xZK۸WȩI:8n%rw #"><|8ݔ*DW]ݛ? ULҘÊ1ZbHn~n~L+FIJS-(:ZnJ7SdTBD++j2y(>d͚kU W5>a*z* S4MSV]E|ئ*Sm^份 `cg Se~ TVUJx,VkUEDF20[yKڦmkS#GS(^ޘ## y{bkؘm"#}bNT7cS[69:'2M,Ax)ŝ510E%vg_[_vA(Dͧ_Sloo`-*kACXJc(oL _$9s27TQxjSI( 5ѢW>PbGK$h}h  2*cA Drys\TaS-$zF\t 'R 0Ibta9,J{hp /Ȓӌ爪i4S=E$v)m R+򱐾/fg z4Zq9k,ܪLaiX k딝M,C'eL5NqZ˶ƞ!}ɲ ӜPX,wu|q%TM* \ @_끎t@@T 6Hz=1t̪NjȗB5r4|t)cW!ݭU ejec I<9$1!ۄV=H*a}^a`ӇJT; С])|5Jg ç RKS$B )"|2©> qOg#kj8/fCYP5o& -3 %b*(5h&Ϧ -&e!zlv LS/B6:B!n#-j)'I'SA`kqJfXOWVH=1N$w#\WtȞivӴi 7"k,X3"f9gӘ!#*d}_SGK1ɡg:Sb?)u}Ⓘ;=p0`qCBLgDp.AE.rD/ {1٩z:+2"]oKp%%8TW)Nǒ5Tfy9Hgni)f_NZOЋ/}wrx 8reacz^]}8=Ձ:*R '"Z aC~b8 RRēMu{t֖<'H >kn89ݘ9]~=D5?I/lPU/T6bc̴ɭvVؼy̙?G]F)ܧ4iBS([{>D*_eؠڗMVUS_ѡ^hޖ/:nM[&hʇ`Dxo.RV褀 P/j$t2'-arH_ >mg?-쭁7 ,XsaȂ6 ,|m:qUXsZo. yG/<^k#ޒEnWAYÅe aq c7BVVL~uV(id W!kHعh)79kwb |}]zAp†܋ӳky> ] jޟ6l>ܽ/  endstream endobj 933 0 obj << /Length 2656 /Filter /FlateDecode >> stream xZIoWȅJ8d&&V-)5MUEQ 9U}Uۅ\ꇫWƋXTBDZYđzÿ/|XJTHah:WS_BjX'J[lrl벬/[-O-e}ƙhX}W!k&}-y#H5;6wVgS@~\ǃf~f wۺz2OX{"1'elH5ND&sC-ڑ]=^b0C?I|úe INDdn=Fyh2ad/<6k&{6+z!<6вV6ZijM`A5 43Kx^9)aG#|֭)KeJ"㒢Β@A9Y҇-q#94P 8Ds0[oY0~}I,h=v<2߶>G Fۻ6B*Cڇq+{ ElU-1qbZ)\3ϼF{2XnN]4rs}u,M+!{*cO!E3h9pKA] 1rj3iba81: 9/':CrWJغN.˟Hc`^3&YmH#7ǙCxdœ;^5E[Ԟ9 cP)UwU[]읨 4 .ˬ^K.e|388_:+1h!a:kdҨ> +K'.0hᩱF$tֲ{ugDOU Lp *~5N?dO^+φa۷T= Li"48XTDLXMuil8,@>If~z`L 팚jÇLW>R4ȡ7>6=N'Z0LB'dF [HV$q_˪~І,s2@ŀVup=+409tB/!9`oV:KOr1>ŝ0%B):ToDn/ wyv+4å@錗~%?I׈ VXSχx" XgG<Ogb vEYdbq1Ɠ`x= V?Էl:Dj[yE/p:C$a !ȽwӒ[}*>TA+fZsF|dir6VX'`6+ق+(:INC!+ !v1%6;tރI4JrT ui5JGc Y'Y-ʟciP}hY"բi?B*aWUr{)1J2+)I2>'H(zEYa҈'"[9CJ"q%A uT79cPGw*D ֓R:o[8vTIe`z&B@֞Ka+dV]sY V;@Ĥņ\wA;ýP,DQc3o@Ao>+o" A0doi*c11B'ӳzhPϒBU8JBztFDTAiҘ~,T>&F8xYX X/e Pjp0AT$bIXG;Ӊp$>cm zfzN9"4̲:rEfu2ׇ׻.X t-_D=L5Dv%ӳ1Б{!ʝGf7~⿗_>.?b^#='n3٣HoLEx<_k 95:hy1ȏqcρMjE'2`a@N|,YT#[}`(c Ϯt RD?vlˠ#x̨"I-bjwBb؝"1a$=; \,> n 3 bl 'قVKb xPX ta%@d7qYÆSBS<(}`[yA l}hTO)XGL&&wASZh %` 1Q=SóOc)(,~Nz,5m03aa)Z3h@o׹a=S$L4< z w#AGWq/n߁;OzD`<xE㎥ ?YףbcS`?-B0$?%x4oWE endstream endobj 944 0 obj << /Length 2979 /Filter /FlateDecode >> stream xZsBof"y3}\/vҜs͔hIʾł>צ}bX݌޿w?h;,\̮ngZ#5`гz翯~Y|+<,g'LE1rEzŽR+d͖ʰ82Ts6zuVxaߖS(;TT;dR x Þkꪛ6NpJa|`?MR렆V1뉊cK)@-F_nIe?54UͺOtdkbkgK +QNB̝hMwEm͊tT6HtsG;x^M 2f.(ER~T.b6/MNuKsN(ۄ, .2GOUޤ7[.ֿ[e۴< a -IB%|Ww }453qyäL*_-SqBpz'nҪ6`hr?:+Uov,+PoDnqBI I6ҙ"2p)%wUv\"!aGf?:n>VӤμ_I"-Vy"[?yXo͡Oy[)'GJua^`h5 Lb1Ǔa%i"tD= vѳn6<TBB (FJ"&1^&<&1uM5uco|1#)D̴gHDgh&D UYuWRYo \K>?JЧ%Q1cAWv:]:}qLzJ=0"Lbw: T.r{((}VYjPj\`gcCIt~w]i*N lSNN!e(!l2@-}y(6Aw16=ܸz߶CrZc^:#n; B0[\OT!:mL9 y_yl_ 7RdWa?fHMZx9fE?׿C/p[xNwPއ]O0v(1:Ujync/-+iCwu "3l`RO]o^0PbL|#CStzS6˺a~Xؔ;ʵ5u&M0OXu]Uyt( D +re4Ew=+duz-Ai^Z qQ NڇC1%fdo} TxNro&իG;^sOr>1L.*^9-)xz6NGr#8GWAGl4@"WW0E< (qCq?-e3"Q+PK{Pl]Ŷ/6.:ˬ.ѴH2cV˛o},$/(~;1_7#Ǵ̇8lX9T&eSnm}A 0Rv;N0L0'ƈ) 7= c)&>KBFK0#.1înwyЋ,Q71 PƜb.{NB~!'ю fhEvk+nͧS8ۈL.xy ICq b%_aJV@?U  3AL`yYB9W ^@ԚJpqIGfv QU5b}rj=nAM.++:_{X;g>Gl _zZf{7rk0Īؕ{}#A{r-O۩ДmK_!+1BP }mg!v`o(/ tP_͠J#KO"hY+d2{wƝBZ*Ɂ_(l!OB&tb+l8 ceX@'!vY@Tgž;6<^ oC'Of݆=-;btQdzRwNr:bƋd ~$| RG޼ݕDac?}+c {f)Ҟ>Ř 2@-c.I1Me@a c5J2&i(ɔ!Buq|0XCT lpr:C1#5KFo~kgl/DNJbljߝ9&ڹ{&I =^>Xv_x:"s) } z> stream xZK-RśS998MU85bJ"$iv3 )jk@t񴠋G,bO"X$amï|(hAdqAh>kV/BĹѨtKx"ZMZlj{We5[YѤM^4(, .d("=fQ1X'D.NCZ?b,aȼ^7Mym[1Lχ& kJ|jAZq,E͚vmԛ*?9ݴs킰}/cbj <ޝ}zj Hi1n'oKY;H8wkdGҀi:t,Z0(̽%j4t>;L+LmnLU>U8 1 |wvJbLڕձƕ˛m=H@Zk\ 3 kA׀ u$]0 xB1q:v QJ^I]bf9},=ӉpDM_ƸOwSDc 6ɿCDcxF 0fs KaN{7Pk*PkR&\໰xS]<:Hއd T{ƂRc;yy(W a;35w(셪IX7lr6Y] ۼ6.0kjՂJ^C.ĮTi4̺<ׇl۔&7kF􂗧<'=ߗ6@\(: -A!V!5pv hyUGb#x,iw$$5E+`dN`nTOgp I"4iDwc LIyЁ DEi;I/.K={SG\ ^q͖}-*/e1df`y6<]MT0:>I6)gso6J|>fR ǎA@:RAOb ޫ쐎oo;xUV/c7Frv[(%T$Ʌ':ɵsle(3!J_N.l;0:;;!2{w&&eBjҋW'dKmk詧;_H=?@bAVD)]m9%7gam6aM3/aj/I)k_xl~EI"ƴz>7 5 Aފri*T]#ꤡT5&f &sTWj.9*2`ds*uz%q#gH=(#NX@)O,dSCu$ntcdst5I~}U֜b Vb=٘hdppBɫ@kqqO>{B6 BK?JaQDM52 D=tK,M(@)ZNpUn1+70/)eHVwtT-ؔl(~ WsYuu:Xj~rR,,)+ 4XBNj{Yf l u5/X"g -#-0QӮțL̇ j|AaЇHۙ:r W["Sr}>4 ]@e hEKꔸB%~EtMn#7abH < RV"+Oظ8ci,P0fp/d|ħ7/z lޢßݐ]-/ 2dWǨ$Cʊ0xTB53:}qJ۳3[hf. Gȏŋ$hb15D|sw`k5֒]XV'YHr[m{0.nx.nxw^bMW?{KɈݜnJ8>WD]\Ç_m0~2VY=)0'r4T rxZ895Zۀ j{^Jn흴Vꨶw }&Py'W&?jnpeyK}y奖 Caz"elk)N >>_HKL3onqL<2Xboބ7s ;c>y|0b09{0_@Qw|:8RAiUR \u5p> stream xYY~[Z˳o^Y{<^鑨Fn:>U$5xExuXW5tqg?>L e' X$1#f!z_~+ Fڝ8Z\3:e+$J/VB4Vec~ ׄ2~d**J05empd4Kncg?IdwܗabC^CSz{ږվvlMHDycn-u?vN JjGɊMVm+ht]MeV⹢R!c\QƼvN.~1zbEýc[-Y{7C~,/f5.!,Mbu.h)L5{ Xq0$=RY3s<|4IBJVDrAtrY쾸;/pfbm,N,$;DxfCu v]y*wXw_m-5<ӟڲᐛuWc5#TgO4Yþt}uӂ<_mmލ]Oq :>23t1Vv8./_TŊpbJ$BUY`$wN4dݶv_| w@bjk>\,% yMsBS\$% uB󢤣 0{$Ԓ@LzaDj*6%v׸h vKϘjW`Iٓ)=?`RQU7yLhsg""G:ϴ2ޜF.jK`lb_I-%6Y˜ L\u_+붪l! a/󧽼ܲ5&wװ &.hICgs%__7e,,GhJ![x "#9g!l2Wy|?YEB'A|@s1.‘^eM %)B 9 ;U fޛ]1x] I,("|i,Ytēn.7۲-,[z ^-ѿ)|DӀܔG̕KF>ߜ0z:6/8P]c[1/r6Ҿ[qGݧ*۪e/ں~8!_?8Y23ڷ ʝ1f(AQg uZŠe6z;!P*Ǽy̺z۸2;vmȞR6bc|\``tnUJ[uԯI:!;Q'(;1"Y_UVgC1p_舡O,t^ޘb $2SŅN"9ҹJW2[I;[/ ~H@rI!b|AA9ai|\ppY7N |LthFHNc >gHIL ,1uxB\5lziBj(/[z~hOQ3}aQ4*N1ĬqLǐjOه4np:ؖ3.A=*y>vҪ:vz,vfQ(S)mshCGfw(2a"$?`D!&R`WyHHyǐ۪<|XصpI7ꏁ2O,^@:hvݼ͟wL'cyw.hƜPv %Sh@:*&"+!ξyYӨ/&.}H&3l\d$O{fSJoYB2$ǘR-+םfF7J_WmKؤ@ 2Ĕ`p{BYԶ,4mUx m93MmwMqh׷Jg`tB_ 7q{Z r%R{CvT$hl.&SB҄Ʈ_@<;Kqv_b ]Mea϶yJg;F W0^h /vӘM4Ee ̋i]kF8:;O}VM7ytw7R{s>\(Nr19dkjX:㿧`";d`>#lX z]zH'sCYxaJ4ٝ\\RniJ) endstream endobj 868 0 obj << /Type /ObjStm /N 100 /First 886 /Length 1936 /Filter /FlateDecode >> stream xZM5ϯ.ח"$h $DrV9dv7{^̆M;vzURIjRRD©[KjMՓv`4uϢib/.~_,/߮.˫oi [%gFӖ)xsЬg+fH˯/ [_0"[<6-\r:>#"6ipDA4h  55|֐Vj Z3#j#$ނMlPlx-+ xLjf!Y!sDߛAvybBvybif&~HT賒8rHNMdt?xnׇd 1gc(G:&8$+9 !VWdL:*rܝ0?rob=({Nf=0%|($ڍ,LlsYi5$aZ4Gh`gXro͂>WKJ]R2rܣږpQcd/EE=7J;26V ^ncj#,k~$%?${k1v!;8-l<^ 7f>R yU.'Lh;lR-\AF> Wl6&+蔔d+12W@GEJc?< #9zEP&t"xc_͙aQUHF`AuXy#W-Nb V4+*=Lxg;7qʃ ɱLrD 隇DRph,̂ l(nؐIq=]u{4wFx+Dj`Em`lF`Q. nw$оo^]:q` ʬNA~E3X,SnG}&Qfmf(1Yst/^!Q8S+Jn\P3tن\sv#zEPפM"GP@z,ă\F[+GN㪑Z`@w1v"SPiNV5l$wFoᣱ]-E ,\d5T鱺, \pEGP>K9ӵ͵ILh$+VDM_S.3~$ o49)yX!Xͣҧ0A)z:(tPg2oDϷDG3X4fIk0?k endstream endobj 988 0 obj << /Length 2522 /Filter /FlateDecode >> stream xZK6WrY*D$H8lxÖ%hIJD|ęh43[N|@׍~tug_?+M2MzZNɘ\]oW?Ϳֿ]&$-(I kyIϨ_שΎ`g*r/}7ᦪu̢v Sqo2_>#jkX4旮UOX5D|39{͋ٮc%hk56uqjl\g(6qjOc~-OX]+GBWO)oVWVK] >L pBбdB)z+X٘rm’ MXփYO]Qn1g`}˄(МP:H)IdSW7u~tsѩ6kߋk?4TG?g~fx1e%u @xls[<)}J /Ă"R śj̀V" h>uU[ukoSkmyQ@qSW1MCBDƌrB~ZEw]AXx? AR..E&_J9E*d5%eazw$`̘TDcDȞKH%Yꯦeo d-}]WGYƦֵlAa%h2EU=EsEpzDBpB`kTs#.N^ ^kF%8}$y325acRۍ,%GK$\#)Sk{`{t4`cn?(hG(c]idx.}(;~ ϚTpʴ7UlMZx$QnZ7~jmQޜ+d?UϾA ko /¾_BbP{'O&=.'s&Ff6ǭL@Xb1̻?67Db15>?\O `Ԍx4_pnfյ~*ȍda"z8Tͪ"hEE_\,Jy>_s:TG!4}`3|.ߨrW] SipDEs endstream endobj 998 0 obj << /Length 2173 /Filter /FlateDecode >> stream xZK6ϯPTUIcvS={j9QEC$5o7hp$JÔn4:۫^K=$Քn35阑j>zk0%)MlAe']F:̦3r8{!#- Og #&%-1Q9]a,2÷bMbkB1U7e dP!~kُ75hD+ي X362 b0yl!a - J.2pF"1iAR!Or8"D`ds{8뢜/ ޣ*8Q P$I;N\+vesF찫ݍm^2\EsFĄ'bo_KSU&j[e=ZD;-!LE@ŦEN7\qL~hfԦy'F !ڔb S3^<_=|iVlh'޴HX\ad_6CǍVK4#K0 aiqɇ ,*}gj'(c'ŷkvn %lLY+$wF ɜ8clqqu&n&}gH >E(mR޵UCE+x{- VeɷUbo&"E;+U Q:́ā`|iʇCmc!jG`qL HP󫐺`n=8PTop1/"*iߨ͏F2(ȚUdYcVXQ}`+8 9*vn)aJmP3`R ʽ)Mxs(4o Rőv?k^S(|8n4-zx< Nf~VA㴣Z*BZk(Wo.0 CPg Ǣ>jiHL:y^o[KX?4nRj,7%2 䓎 M}*e(~r *i wliz:lsE$q13belZʂJ*7ݶ [sD e`"N5oBv 8 75D.i#)kz)ls΢NPLza (T= =g!z=|kcEezot!VI{eXC6 j;mͫa7'ŠlSnv3]N >EiVax|' PEٻy U͵}Zh8ʘ¥8_S)&x ,o'N3wXltX'w9Ibyo0¼t78~gӇuMѣ(ʦ Sw־FqS@]ᄧv V['Z'4z>9wVqٙ#8vT8ei1I,1 GyQw~:#Džu ;fy0hr>ۙZ*p+pK Tmng`KJ>*7m`<`";~[d;#(*! UZt Fd RBEi8H8>oi>7 f3vgLC;?:;?03bpseb`O\,ܣ-A/wSUpx]_X2@6k,Q{h/z+1R4d _8Jwţ) B$ϔm>XhhwC!Q˖opѱ^fuF=h |J6= h0c{u.3ls}Ta >^CxƇapźRӜ2}u{?L/ endstream endobj 1013 0 obj << /Length 2492 /Filter /FlateDecode >> stream xYK6WMAq.o7ϤrHRDPH;~ipFd` F1tu/{(Y%D%+$$*Q,ZW͏W DQV JD,.WEDHENڡ6%9L$cN )7G'IpZy^*kWLZ9hB.9℃sU~ XMR9<y Z"N9s'ܘp/ak\7(|TՆ "#~FoblrhɐDRv+6o=_mYv)+Z,kt_YsS>umrut%?Ipd[,xhPːnQ磩OuH$Iq.>+Lct~{pOsnсALBQM$ Òߞ.{}8&$?IQLxWᠾE622ʲ ŢH Z̞!X1>k6ˍ.i?pXO!iL ؇@)чܫ@6uC`n~`RTa&Rֻt"3?5~n6s0[e aA'RF,_s  I`ҡFOMH@ EDG3GPթ7:0oi<"Ggk|v =m묚tQ纋~e6Nv\7D}S =qHy i:Wd)= X@uS}y{{}Ȅq`Kig#$U< z>!`LtYrDO΄IHޅ#H棦DH@gVу?cP7gm|f{E6CƃP1Gb!Ԋ@CfocyXֹ)278H%]Fb{hg*[j auKլyyc qso7nT 0+ q*+[  GwSM[u0ߎӾp@!/Ѥ/iNSp[`Q!6d gUgdQؗP(7|^A/8j,@%x FOGjaէ61?6']}tSƣ!%-)M+,NusԍG0)Ğ[׿r.?O}bC4<;0qŸx%i2I؝nlb&Z9/W c$CN*xYyYX'MT\IwPImE))LLFboA 0\/mH8łijqH5NbԒ0ELy]z#z <)R.?eN> stream xXK6Q @ E$H rHzZ,9w}Z/vz0L7oÌ~2Ĥ3Dj1K5#j9w Qb݂3i6}Ll!ɴ]WYv=,*zij3}yu퀸/  jB5|MaΒ~ wX}k T_=46XQ`ixwJ/,TWu ~^ǘ\"#.l!BZiE}ۡA+[uEm{ѫ߯]OTB)oP.ٶODC(Si%l<^ Dn1?6h}T-4'L~[w骏O $vI; G|p} P6XP>FHarwBqw"\Qs䰷_ۮq5sk,yCH\12β;i s 3X%GD]ݗ)xyW66B gK!w?c9$8.ӥЩGi fO { ['_I8U4I_ 7X/KJ$e5Q{0HAeJn^-6W4x} oE b]1t ť^ke  Tf&GPwG{<6ڎ-8v׹h~ qVے=lpxmXR:}z`B=VK8D3Zrv]W:߬;B%ƃK-B x'Pd>93$Ka\pfW ~z_ⳏqwop+Foq]N+W aPIC7Bs:I|lwVgFhdqcctjڥ;1 'Ms~H CГ1Ks9;`r'E nXg ? ~ endstream endobj 1032 0 obj << /Length 1920 /Filter /FlateDecode >> stream xڭXYo8~ϯ6P$E iM8>iG,:v/YÛ<ؒgWoO(FA@wq{'ȧw57e9Q_aʥ̭oD=h 5^!*Ds%EKQ0twI)x(BT>=g>=wQrC:C JfYN,F3p0e2os9y4,pnd&vŞ Bꐺ l& GFX킜qrA1ZI<"FN>n,|[N@ŐTug]bR&ҨߏwY?ļZϟa,ɖv!##O*R-٧ADapc@qoq$8$/a0">eI1spy8Fn /E x] zNy7\so(d"<܃X!2C@2LaP#E̎e^&jMΛlng(4kjh[@fQȃ/=1xp7 :_yESCyWp<(XɖvZMqf(E۠u@!~Iȵc|#}PLԳf5b 8QAn#\W\1۠mLE4~%G!Es L[`lYY7l? q<{ NWP8o,ګFDz\5gzE#y"Xu^>j޺oOH'0vh5Rd2 NRU 0.U|<+:)qGAGl#OF_!h!É_kҤ,?.,fI RV@W.3ZG#dk A0w2iRsUJAE}&54[UtPcG%lŁ>΁1{/[=0,Afe] "M!yMEZTزN 2Q;(ҝS+̣ q1vn8g"Fr]\q4ln$ ՘YώHb?U/>U떴%m+XY a[>SϨkpaEFv2:(,/熤h n$pi|g*]7J?ٍeoJJfZՍUt nn4JQJ"()0M2LuVwo}6~P=ƾX7@`^+X5gc_eP!C3"ySfvCy-^'\u4( $}F"i?RjEsn-ǶHOԔ\EV)dݪ@n"oUu7 N endstream endobj 1045 0 obj << /Length 3160 /Filter /FlateDecode >> stream xڽZKsܸWA ueSo%Y{{f(9&9տO 5=\{FmDw_]Ȣ茲&JGYʈf"D/ &'DS9%$`7xs y3;AOS'^t'm(HHB0N꾬*0FM* vV]fY@/x[[wnݖH, ~T \x5ps {ϝ[xs 48~8x߅G^KG.LG)gٝr `][m<Vy׻u>yw8͗dƟi s,{ Jr뻦8xSEHz1MY|u`ʺ;>Ylpe/$̄03UUփ78H9`ɳRj RjsRZ%sBRqBI ? =cC(c&y=gBgR> }UГw| 4%| N ! 2eA,d!b:?F) "/1 n|ZL@{%Y`aDR{8fv5H22ߧ].MNQt޹f0`3]$DXHYԎ*(S/ӈɵ Mkfv Yg.UzBTIRNDn>} SR2%JY`6k}.wlXƛB\%TLs& oJ9Mr&20DBܾ B3" "Tb0n[X6~k0r|6Rhtl?~ eXmCҪS쾄$@ͷ& \죨_9XTΜH,×zc}]K8.MBH{C8)b?|,o~cI0+àtcg ԌL: lv6D f>>\т(.sJ`tZ)?E-aϖ#L񿊰̖/ݺoJ A,+oC*TZhw}8mLZ;X{LNG2c= yۙf,#fz\Ng-]8A10FȧY$z,(K ,ЊRA0ju{ޡؠ~d!)`(CGWaI> b" ^wLJb0HXtY ._GMFx2js1CQ1Ll{B; q R.ru!8 ͘x:2@4;B,1Lզ lZT yn| |ڵE{GCɅyﱿeޯ~5U91Sh RX%!M% jz8o @#0/D#$ -<9S^*ɫcI1o3?%I֠1 K>RRJLSƆI:x83:A@'ZBwD ❤7!]5mI<-5t.^%P ~aBESK|c9S$eUB8A Yd u&TBk,;i(Tb )䓄p erϔJ^>C„y#H=1>!zRϓg\\P[J< sqlsqH2vE T5qsqdsqӘ&a>2I'& 5@`xIk~CpUXx̘^ȅ`&f6 F4<;3q]Ut vLмco-"ܗ]ӌhLzp8, E+_vg[A-nES%ru?'[԰WFύ엢`dmQu3*M4s#f` Ó[yU;F0&ˡ]$)~ca8O =|ijD=pDcdc[;YQ zL+?KJ$/jLKBݞ|LԅйԀUg5CwLF};4A:7;\qJ|p] endstream endobj 1056 0 obj << /Length 3533 /Filter /FlateDecode >> stream xZIܶWtNj*%JdŚTS41==<[=#]r"|ofa^|{tYn#4If<_7_W ga2-Y(sqI^0;f(dBn2UӨ,fJ+ڊ4 ;zvp(=ծ+k;6k >ണ}S' ëT"/4pjj$,t(x,vM,׮&}Ȼiq-ae1*10Sc*dqv*BEØ7#`n]DHSw) ]P#B(q~x/ k=5wyE><«C]rnx\Ta*9Nc^Pb궥ىڼdT/s-7 FSn ;>>=Sa̭zۘƯ_ N'+BZx5 NVUuG]}%eL,䂻h8]Y.4Q9逝< F"fi [jѤb#l%2 `$0YS{nԱoDIa[ e5X 2 ݎ_fa6Øy'sV?V C3t: 3oTTZ74䯨~&pPq.\rNU6@+ݩ-qˆFe?Ao?(iǜ >(;7z"<E5C2 c~<lǭ>hWI,0'N$H+6,~`R"GЖH"]?7Mc +>X6ᙁ).&>J貑`ax_ pleQv}:+>[eɉ xȓA!xgG !xV1~ $X@oJi|<~ڎ[r?VwW`0ʹ aA\[%.)?N%&@r.x矺˼* ttriNzW~dL`#P0guț+6P4SrKW4L'/(рWi oHK@jw)7 0OR=av~‚⷏OQ:Y,+6:j&>48 p΋vJGX`ѦYU8^l$d+)`cD<,Y[}-v dԼ}DL,9rf \V<.8F fJf>0hj2YBJcKJDA;걡2sݭB-.im:V 3[[w$BEl>%8l$ h!e}e7BDȢMIC0 >[za#7E3 `kE9Kç !lېetPCr!|44}ҁv}so[.Dtg#?/ 605 T{ ;E'jij`y<)Ku286wo9;ybk[Yf˂0<Z3(\h㢔<t`iиD{o,zx=I1Td oҹj$/>?ωQޯ{6&_Bhr|DXzΕ©#S/-R&gܝBȕ<>e}(pSTv*my|ӽSS i6ݩa~"o<}vyI}Psa-5[]$?3(Vag3>t1K-9shJ !i|Tq."Q$oK`Gy3W2g@"/Y̒a?"N8k|* Q./-KN=I"F;0 C'8WaRaLwMYf[ɱfG ,Z/;-A|1&C{o\2WB5J3 =Y+Z`C#D4p͕T cwOOQVY`/hcreyX#O1#{۷~35=pj/єE͉x\jؤK _nRDWM+*٢rC51zF3;ox'dtG[@xPBsf_]+`m8DNTug[(ްe"4Ӊsb]:Lj[:Sv Leeh,ξ!@qWOy5j?E642/Q cDTf)rS\ZlUy;Y)(.c B,P@lw}k/MGσ=wn%k NjBY6I{.xH|͢͢HI&ku:-)0W>y`i^E}3Vxꐟ ">W:K s3d Ј{Wupe6w{x;|ΞэDtb@u=<v]/o ;!򦃀%鳮:\f)OJ 3 ( J4v,QZ(Ȳ`> stream xڭZo~~ ܪ|HҦH_}H Tk!zq> cMyHQÙflwܱ|{GjL1 (;05]?qf,ޒ2Ia,O1]LIA%$2\ n^DIЌaeyS~ٜ:/Vt3#uts]c^8xo&ڮ̫~Pv$$8lP&=q*^P)߷cu$T+_?ek9RIKWKD?hJg=qdZO{ʶyë)Ӭ-LQЕ~ӿw{!d(x-C1ټ -;VHIo 4?)2AѦ>]&"Ћ2!ZvI0 ꜎0[^1I@QFx&lĩk]^Ӡ! z-aAFee9F=ؘ3R!PYfOTfKw!ؠ_ڑhP9+΂|}[ J/n{mk>^~DkuF&a*Zg<ƹ0{4;9;„K=MD8#Yo'R@E> (ƖV|6l˫m gQpsQdKc߃Yx8P>?F]Tpi2).X88ptg|dpPzb <~~r2ZgempōۦJ;I$z:2B_|]-98/|4'T>"]Pk_uvW14;b+co+FQٸO߁qQI\+O(-zNz8c+rL!"~miYQ׎3UjU /^g3~_@IuAb:p}.!A#ÃAG9q~o쁨9K bv"A_Tr1Xy3sX}姓Yt rS# g@ϸɼ8m ޑd2O^8&h! }! vˣrS@mKx[]Ai=0o6TNhL9;#XV+*_3/}Oo ɖ0"Yk? ha Rݶ8*|@ȑhԍ́_ $9lYb=KgB%!6|ݛ};@^Om p$S!i`PB{(A*}a{. F] >x$9v Ӈإ>PQ`k!+IcP,DsNOd-@iwe!e l|ЁB~K E ^lV}Q9hѨEygsKF'Y]z6}F:`]vac.þ4> 剄R%l]9 WCO_(a1#u!5:a6f{I>T`* 7zB> 9ذ/B0MEJDX$2CB?0`cKA\fs-y鮭*`il 4=fb-s&X$ }Y`# ć?`p\*ӪaZy20 z"i?(@ >Ȁf|\Ⴣz+yM'>my*ϣ;u۝K8Ƞ}ërEV.R =:m&:o" hL'F,0 `=ʔā!V4qh ~C>>x&C*ƊԀZ? aOnQ4L(+9(]ME6)F|ه)PM㓮Q5`r={ErGOGI7vNPPLxM rL] ! 8LYsdf(̬Sxhh}[ۚ<<^tf"ўM LkxVlN(E$=:8IQRN kh5퐿<9(Xe2\>}3GIneanOWh;h$mn*R1IWު;ugK<=PHЪިf_5ϒ?6Äv6l@&p)B]k2cuh<{z3 s ^\&hIoW$,anz(KX87fFyA0U":e-#|qdSNO7.ҋf SfQH":$UeZ1XL x 6 l)HĤ(q2/!K>bҤok gA%='^\.cpoϏ_u3#y#/.ox. R$b1$TڭZ%,Qddu;,9kٸɥXD|e8R!84;]ĺͬ ѹ$ֈ*.jtjVl!:xaȻ2nuкq/P_q}!.̬t8ߌC[ Ncy?W ˕IC)ZQQVt(#2:$,>Arؖ}[ْd{/O0gpr\[bXY - 9_&ڜ:[Ϗ 3?IsriJFM[5s VojguICwdAwhUƩ|YM f^z,LƤʂ^@Ri&_OA IFvkPEy=ܗXPվ@%P[) vݼ+ endstream endobj 1079 0 obj << /Length 3114 /Filter /FlateDecode >> stream xڽZK۸Wȩ!xvś( k)R&){'>h9$R9L B q7^/ouXqt(b:T(,zi-x>ߟFpF+T\v\$p+fl5׌K*Ш@S Mgz[-dIa v9<"cjOoiNVlڰȈ~g6fά&=yhiʚC\2 A}x:?-̀ ta>8Sٺn$]=I1!k0Sp l,=# P C#HZ&6p<^撯860NfAީd<쥨,Acq X4f0j68ʚ7Q.U`L}jVh/$q!&&kEwM! PUs;~`[f;4a4LзIcnb]@t&i՟.k3 18W"<9QkD)L(y*Yr''uyH2Hn!bNy"f[#Ҵl16b2Rkan_}޼!Ɛ߼E1K [Xg.$B<+^أ#8qUg6!!- tguG<{19K‰ lgpI\ؾ9}Z1s _H#PR.VnUs8Ru10B)#*w̪o<+}PBtlQJA&t1X-RB `'K1 szl.SkX݄r؇bD~VF%$yuoW²T mP4݅纂L" 4Y _MBV-Fk*4/iIMD} #sĞc.gayFǥG#NB,u5i}5bk A=<үyaf]aMfBr-HZ [X9e<6lщ"_̅3c~<%,WC*Ok9˻vq h82F~Xkݦ݉` QЋXO N:`N5u%xy R9)9YPd v=9f^fQᢾJVK`&5Ak" R݈mo郞-/3n9ڲF|-)0\wȚ/XZ`@QPMBR1jW~7C~e)r| 晆Q5tN[6"noAd|o@XK9 n2>'mx_l]G&ngu-pt et=S`5T^pU@em }h%Vf^+CeRU8]*zUB3'\[((FbZl_/Z挑zgIJ-Փ$hQ|dՠ1>?: G 2Aq@o--h# %MRlw1Z`,zOGa%xIw`j5k_´swrz1ZJ᝙=P-3D)R*xoWZΤa/GJB /̢#kzRhOHEa$Uu,Ǵ yLljYCT.*A@N~Ø|nYA)"džИlA&1=ijs Cltl}"uÅ´Ԭ,=W4lg MF`xҋh/za!`#},?#+-$Z-% X^2!5,J>X:a"ZDA4+e!òW.L! 7xI.Cx_ !40GCG첅Q da3L"^Dk6ަihi1ls&$,:؋hF"傗T9e}!ϘcNx落E.A(R&Yv4~qۉP FIS_ڌ?Q[[-{[lre7[ LoLWԀ}^Ӹ5Nl~`6K] endstream endobj 982 0 obj << /Type /ObjStm /N 100 /First 948 /Length 2006 /Filter /FlateDecode >> stream xڽZ[o\~ׯc\IF'-~H+q@2~5ڕ̕N>óCrp իzRIjjK$'«^[bjxΩ8 cc)yO4I1nXñ|úT0h=؛ D#zDJB &r~| @sèwM\[v!c1XE (N\/@ JkYPXlp|q3*(AA Q%d[1pؖBIF؂4 W@@a)񣁂jAy1w-񮃲xXN{ *!$$BZsrXABd,-"I0B4CF .Ik He4PCP6 P@QMJUa+ < |A q(fvN[%-*`.Cv{ -,a7X"u- VH"o{xޓh̻X/Vnn~Yߌ˻_W[}wEc~G"VZz& M`4?^xVټ$ߟ>o}-"Bvq́;'Oqs-ؗB @N{&J@YT5p" :rf`[;[3~Np&}RgXl +=,r Xc dvw_9ۂ`!3B"A2 2Bi[g^'87|2r3Șdd/Z,|uH%SЋD'tI6ס 3c6/E8[~Uj~4b9ʔ^ ԹuJV9^) /ꏌDD%ArdBQ8.;$*p,Q R,Pl$3)8,$F4)518;x; 9mFrWQ,xtN3 O@' ||Rtwh-)MEB&xK}4[Fգ%:?9z[Kk1Jh^3f+LJRdQϳ3=\^uNTtZvNӡZgXC`dWZpkU-X0AB@s~Qk_z <;kne7昵,3a x8cǶk|=!7mNF~Gj@Jt h[UN-K87 gVxYXlվ%;&3JEjxduQr­8b.j:E-Kft J(ؙ* V0b_1%J&C_/'vMpEE#*vNm<2 Kddt9NW' >3ɬie?ԧ E*J`{`tGF _$t9p?.9P| m T("i&Mʹzti"V\i\3@aZ ZF:]6 cԠ<pH&fzg^?q!2e^lV<>R>6.=1pl}ZUU h hJ!0HU´ܖ endstream endobj 1088 0 obj << /Length 2735 /Filter /FlateDecode >> stream xZI6W6R`Tvc( =V(R!)/~ -j`nÂ.^>yq_dHIR_4%24a$grq[|o0/%9lAH2e'=NLo`b-e_kIZt in*Ϥ_p[]7YsZ&2X3Akz[ni޷mt{?C+VL-uvo>[ ')OoiZe1y]똑^d謁%9<]׃\_F&taa1x H&gbE0[emo4Fs~AOF|2 '0͉ô 6Mub"XKgpuE^Z.{ݮZgޢP`}y|ZvEWԀO;沟IR1ػ6JHt8L~eh#+щVD-{3>xеn^8wk;rߴQbzr!ҙEN‰x}k&9/S¡oc*Ex"2DL4# VrO%Z:DJt@Z,ىNAM`S 1 mVD Fl][.uC Eh:>l$<]܁T%.Z$P5ڰ'9@-adpƏlͶA_7Eb "F5ZPfߴ}w21/N¾a_(jmG4jgSyNtzhIsO%rq[A 4 LY<_Wf 䗲$4 u9`12T@%eܲ6OR`j{{)3KP&Hg+sWiűd/KρI$ }7 F Ɯ qtS C]numiy,JDȘ=Jj3$pt00MgM2tn.3`q5R\V#>-Tlm2Fs䛜hs3;9`5q[K뚧6:MI/XԔH NTN9U&$IdGN˘ @r-^aV" qlCy\Il(rzh0"h9R.gSPv(/=OH:湇yh n[uvwZ\)(Lnw}8( ,  YgdrZ[5)=_?Py|TSSEˈ'ܾS|U~IT6fvݺ\p>$1S߯j T^81&[M j UuK!ۥԠkLLIJwQπC#o/6*(CݐRX^dJ6yʇi{lG\;kK񇳱-^Iz%kmR]@Uۥ]i,a]W#$Tl7'ɈyKp\Xqf pw܀6(Fp9@tv@|coհ@MU5?`1e]A6Rg'`%?LoȴhNf.3vkAϦi*]nҔ0=lDd l혵,E2R&9Ï,nUʟWJ`cې5EY?ô#)v$|.)ZjA-Ym=jk.~R;0-nc8Z /PS6My[F&f~cP@V(nI&3- / Y0 YZC)"70\ |Wl}n xjtF8J{W}њ#6w0ɇf`Vν{ci !ev6u'>݂L9P!4㙏Iw_X#L '⿌\oP g~<#x;plR1rSl`p3<_SHfӳ/AQ+tJaʀ]d8>!QwHHN[RH 4d -[tZ\dk\? 8Ļa-{+M >e-jkZHCA7]r|俢 endstream endobj 1096 0 obj << /Length 2989 /Filter /FlateDecode >> stream xڥ˒6>_IS5B#[{'vjuֳIH;n4#;AE4~C|s7nMҘa#HmHT~r_0Yng)OiLE rbn߿I|Ns͸T2, -,;#̈́ g2aOY풶P}>֮")㑾@켜$v'fyfu>M-jɄT2G`W7,d56/~\ڰsyۢ?Y}g~{?wo{vSo_=Vm6"EbɷBoZUSh}cN t5 a^jIfDD"ۦo~*EuDPwrO߸uKOүE7 nwN-Kf z蛡¯xr{D|ɩn5~³تUn?͙DI]~D,¦&womznm$bRE_2yJmV:nK]Ph* `5b\x/*b<їuv*,/_(a"A 5PZa3k6 ʢ_8Q%e-NUzÎCGW}D*7D&><Hٹ)7o?@X“Mb| l>gR_țRu M:d\HK[+aK-[c@Y$5$|%3hWPTjGQtWőLh(bC`4MkLzhF~hv634ϯgd˟> _Dʢ8K(F:N"%2ԻͤDj-T>Cg>66tYWS5Mk;#Y_ԕ_zlE1s[8m,Auۜ TH5=k#Z{+/-GۢGAi`S=@B#A/EջS)Xś@[˪ }#9!VŽC9z?m1YqcL_kb'4۞144lc Q.b G+c&c.ksb;ۛv[lg R/~< :v@} A|^OC I+ƵpS@*QS24?5D]s!a"Ӆ*L]Oeo!MCm1 _11p؄z&kD&Ҁyc|lWJ[ķӖupvjƵ&ࣽ0M֟z,M0-S 3]D%!T";y_Ŭ"0;YzH9_Otٜ0@B.M\dSRvFlWԔCdy L1]Ӱ[:ʶm '3|F&wɑ o`CL~B,a۸ރ]w]h_c>4264M fz)XYI/ )3"3򞉿0pj)ܲ=7u9yK.M,_mD)0|\bz*ր:ٙRr4#z}){'M_u8`3Šh9IHj3Z;Gܟ ։ׇ,,$i 咂S|͕jd1O15&&ˇ6uW\X+b#xc\PsVY=x^Л|M Ӡ( ~3)N"&4༖0 Ot)rrWp) n + .,5FB\K@Bwz.,%3O̷op3WG@+:21#MS9rt!\gN8V@p.߼\dWTN(p/~hi>o] d{FS* a{Ey,'8a_P8pW/xZ}DC/Cn 6ur+28+7_l #G`AsKYN`n['g"i]2;JSʒV#\LjT/v^:4z?Hi36j44r7L7LW=]{*B!@YPxՅ~(`E!E=sld<TǗv֫ i⎄/^}I@MgN A*NʝJ/c9T>V@T$0YdWbgxIr$eQ'ƧTN 6_::z!=\u+ѯ=Cx=A 1ߌf%O'G3S/t,)Xc3_Go;Ex(v]prƼ?YeW]=l]yJ%N= ç;P14 C&<}PXqM lJ^|!2'i&+%r%_T6VʕxƤE!_`0:Mf)OE׀9{ CZ#oMg@Z>CPl!GZG̽ ld=&T'~ߠpytwM_K͸H^ IGתf%_>ϸÂ!pb> stream x}SMO0+z&X˒hvi! n|f. VL S0vH @ S@o9m2."HEb{ y仏*U1Tr׺ZCo)bex}1}0N MȈ^/) rV}eGY@f$r41G97n7-\YHH$/ GgUVp![;cъʙݓd6*'> stream xZ[6~_a fx`f;[%Gz}/l =7  )xx5xɻ ڿ_] HJ*&WH01 Fj>5yJMV]NIZNy@9RZ 'Sn&/&]b!U;o>|~$8Ig2 NFZ0=bJZ 85Ҙ;ns HbtsrY׾Wyd}PI^I4^l., o@u]1.IR_``y?d*9"z2% N*MV4Vf*:R4/6|w{ۢfH{{\eu'O?7cNg~O~`F*ӍưDTvGD7E=ޝ8; \2욏,Mp 3#&W8ٯe0G?fU8lVnpwu9Ʒ,Y`RRjV`24OHH־A\ ):eS xÙ!A\J6ս?~- cbΔ5#b2 XرҴSuN#II+!\eM0P67@h8zsG!!aFN*/'s%&oxcR7`z{W:4ɒCcu~mh3_Y0!R g: 8fو*uĎ[pctyG)>a dgUZ$)Cf4%9vaӵ_{qtnv-:Ym4a,z4țyҧn%M\!1f.NE2 Md*j ,eSYܛY]CaᝅXdga>Lq9c%Sicb/P;*r˟!LR?Fםm]*D|DcYWN <:6r Ka37: &C(JHĎ7@Ħ(S2S,Oܧ9BАΑ-B)E,`/o!))m{?mjuC#HIl"ƀh@cИ"2)&%P/QܲoSԻ5HysXL$,^1(8z|8:l*za cK\]|nV'ů~=ٻjqדO?a0kAG*dd { NF "( D#@c9yw #tIg~*`a#Wwؓ庻5i'|k@Gp(Mi]8`k >DUjƢ7Õy@:S_'Ag:lJ4AXo!3KFMz0 -2܎_ӰPʏSjn6&L jP.M~60M>+.޹-2 oϳeڭoWs9c++O[ [%P1tmG&|d)̑c!P%5IZ·It8tn ;lPLv%E{^c|׺ZJp~ ?YA8?QOL6Qzpܒ䃯d.AR>sD $ᠭf"_p7a؝r!J/zSO,[/xC&ͣ.Wyq.UZԫQNBFVEd=J:"^A)g\ד7jR /0FBCS_ڤE vVE+fS[I aճt+#ͱlH 0A1 2殕ZrPe THQ |>D+%*"FNw&~W{ɲ@AN>Jχh~UUΩu[2kJ*q1Ϳ8m* endstream endobj 1111 0 obj << /Length 3611 /Filter /FlateDecode >> stream xڭZmo6_1Nѻ8`{[+mn:3NƷ34Ϳ?R;/~HƖd(!)]ջo.&e|uu&ȕ5/;l–t=XvMdD6z -%B႐ݮh:\O턑Mu8|;;9:=>77Wn`+2z_(W^}#lz 1h!t:_MTqvItw8A&=Tn}ptf7K&߬EyqѱTD:I%P}u]v.s O#1C5c,P /٦ LY lC`WfQH%}@L :TIGp6EMU(!ipnVΫK (,)=6%mb2Q\EUqrKOEߡ ??a<E"9u鰆w! P= ﳦ R eX:xP4}/7~VxJ',uFfsa,`Ԓ a885QK9-y4=q*"vi\vu Xgp87/uqH+H]B ~ë,xY q2C[<>—66NHdc];} a\g}p!iG&>8XfM.^v)PWj ObzV;m~y30i4Q|Dq!mT*(?ވna Jd\bLRB3z |~O9V\ SAE]lL0Xn},/$ Qv?+_-ޠ񄢏6$<5ymF"o /=J HTdlNuCSQd΢jZL*1n*nx%vx&:LTVcMgatЋ~l)Xr66/J])>m5^pӄ\l]:[\Ka%-9u)I*C5å&oJ] nr߾|Z?1>CyXЈNAEq ~P1_XJ:]XxS8Bᤙ^Kxj6˼yW6/uJ\L;R(Nw [KiU*x=)!H7{RU VY8"t<0 ]̵5ǜN z3ѩ":"лh@Z=cɸzXB *QSN b,kBOaB`9} I"9_LOj { VʼnX$37/\&#)0wPb&ZL6ӾmXvFU VBzxp|=GyYaX;p՗'e_\]zč7?m󼮫1He?;v8Ҳ1UH_ò>o\RId 38;!h@EQ "=t߶c KQXGcd\ mV]m{bMH>J~Ε+#0xpoA,7,WBN\AH^+ei0px;&4frd@.L,/ ȝG d:'RI'K,%}2-?SvS @u/J݈ dfX^ s @tOA5՟pENK.8*nY.G?SY>,$7pϴL3]PUʳ۬7pbi#^^ @ЄjNMpNXzL*"!CS ξ&C  ʒQ߀ 1{[ga{U$>&>OklON__Oں"> stream xڭZmoF_~}.Sp\.HkE E߯7J)٬Aj<3;oK-"տ$J$&]DD8&Y%(iLc1 ^kZry38+/-  QG@''P,`M"AX"(N\O/yVrfJ&UKV<ĊH)PT7yV,8YQ7i T,^t  <9xmYf 7Ճ`wwM@ tlwKmyx !X4v!>H uWML9Şʍ,ӇMuB W|}fH`uD8Hݕ՞M Hػލi1mA-I $;"(,n~C>yiU =^>&DO؈%yT# ̩ٯm0jDàf/(V': ̈Q m(]X48Y aUGVr_m*/gi~c\91OMZ5}6>FW,DƎm[I=Yfydb-VF$dH P{;iW@P+"a˞xVBUGZ9N+7!ЀsQa 枋d4}@ Lu\À8;k01ZxBcvi"ATx/O(#c:T"Nmd4}AEGP+|ИTyAW~3{X*Pm:5t#N Nl5Sm֮SdD Z]oGy276.߻6qpù +;q!o3_3|#h7ާdxUe P^3NZڝ'%jRĤDN „;p7!Um.G>TÌiW ; ̲!0ϩvmӭy۶ooeҳbpc1s$1G"Av G#lfJ!/YB.ۨ.&oZdIpe&2f*$$R`=P0 |P q3q[0ojzЀ0.K83tɰaj1RXS"&xkf}QwSqT~ 7X8X,C(DI=^@Kd9smwr{hTa1quQo/F4T&6vPyHhkNaVe&K s9QCyoBeP2\23{φ4m2f:aҊs>PI+n:fYjZi]#3VRKSbU4Q̛M3T7ze]*+Rx_icncZ;gNmTn[uڡW#xaadX6C*C5 п_7!2&lsC2r}e~ )׮Œ춇=7cB#֯}.2/!2o;Жbstw+l:~monX{ļ-4I?| {wsaCl[amSk.ܮpfQIyKdɉF kzڄ6>6[{kvW!FߌS&_3gsly d6ܛqm[99hl,w"=dh4Pm;V4hjm9E~.Rgs׿  QJw2 OF&OdEWƸWNyAG&GID|;pHI@"0%s}-pgn< })@JB2|' =<"hvYӳ| ;H30`qjX=lGǾDN(.o endstream endobj 1122 0 obj << /Length 1358 /Filter /FlateDecode >> stream xڵX[o6~=LNqe[@K]Q6 %Ue}"%"8pp6r0~UVWU q% ҄sxr; HcFLFS%`rm@` b"PL_p0w0QpP.,5"HLiI>T"̵=^V8ͧq:$:.UT$Bgo8A`"f^ߖYrp$}>갡OrPxxal{b= $ HGzZg%WI~Q,`Bl)d['pDesc*4f4IU-+C\mWŖD"!vr @Deffd很A5y25Qφ] 7h8b2Y2 sLӕ 4u[xHqx;$"n`DF RwDuCC`0ށ'qմLڭy\rU^K/z} aT?[oL&}6$m^vẝ]A[͒L@ypED Ϣ (&>-=&+͠U@JDx:"kѾjUYzniBhs8`^9| 'MZ.üfXBUa*Q8Fۃ@'$,n8pQ-QWN]3vj9!Gw˝\!Fxo7ZKYK'06zd hqeaj,!䥠h[8Rk_u/כC nnJ<BAm$1*JІa_pI QOZX)N:AV 00? ]v@4)p}…Ƕc!D6)la2zkI` uAYR̸m;dM kU.kcg;o.vP{~η(2= aDMwݼ6l`]`MA[tm endstream endobj 1128 0 obj << /Length 2766 /Filter /FlateDecode >> stream xڭZmo8_a},Iziv m}.flɕ7!e٩\ EQgy!>[/wU|&9"gw8b:ԳH tv|%uݚbKaϻ^pgZͺd$(*eIf65Ir ;r&8Ky!Sݓ0!9d˼ޮW4A&1X9A'G'ȊuqYJ-,ztE1F 4%!Cʺ ~O}cTYQ3{ԔSd]|;ԐGF0IiA4aA}bDRa\un#[uh"b,mܠU^^l? (5PLNZRUk&,mc*2,mr7Ɋ]1xM]۞iu`3)N״ ;RN i/WO}\-q͔y0BJ/OQ`4Z !+V; XdbE϶\WN京:bSCJ5x JsD½y=e/x@^[)[ TP p+=ajo6f 4Nzl* <[ C.IYCF]aԋ0Y?@@N_U@q;׹;K}] Ske%ȠNTIEiR iDfǶ!h-Y,3v~;g0U>UmpP3[8%$%Է m6ƭCpǺStcDPmҗ%}C O6\~7q4iZ.KScpT䚅I2HY[E, 8N;ܙn}=ͧ&'qk̼%VhҦ@V[M aض'=;d  JܖpAQsK 'L9+01}t]=J XMKpTvgKhnЄx[48{ 'anELH lܾ4[HH0szfQ/:"2j!B0Y"bi]QMn|+IǁMqҷ> ~l}8>"׍[9NftTܶ7c9&Eғ>HY*0q4ݜ30iΎ=iSBຫ`7̟.]|&B\'-t,Oؕ|Pǚ}$,ddSv=9(+[9 3$Iza" IH)DlIL|aBũxmNީ\w5+ll$ӗ:7[Oa#t'8$$t󷛫y!z^Z8nNC䎶-x}*GY`R}yUY/SdzÒD [xcBȐ1, Bߚ+u-:og3^sUm;G1h+.VtFNw Y1^@F1(J2-nbcJ[K?O9Onfr}~6EmwctTxEqhoyv݃kh!./1WNcׁ:0Mtt8VdÎ`saclTMyD-6>cCŴt^jSlNsbf{L]PWMXsFqn4΂UfWp `cBîxᅤFq>, DzoT(dFR=[ynC=-Z$h[?x'[>e>dR Iׯ{A?㺰bC.r6Q;1jIdz\%>j} (BR-/q8ڭL+q'P;1jb: DV8O׻\B^_KC˶SqpҰe}dAw\0Rn;_!ם_uPt]Kחw1J_t3_d+@A@iŔcgnӂao]j>d @ϔ&L v}7jSe P)-!?uv9WVG N5` awEPy_:L$ DWT endstream endobj 1133 0 obj << /Length 1688 /Filter /FlateDecode >> stream xڭKsF "ϔ]`ũqLͺ+ނH =\PX ol(JABPcQ{W?d(VIl }g5']o/~\W"x]|gXճ鷝+FLERɃ5HOM˟4.޴|ezŠ/JWGa5Qʙ5C'tBfn@{լ?K`>ѣ\hPwlURrAU x[./@L_s.gy.*?@vce;T'Ht3[z$Łm?.fR I 8JСU6}'H%p(-c#Fa6 ۭC'*H;41gC,q(98,՛I3Cnf' ł\*er3Y{²N ɉwUr`(cV*H]'jyQiz-ڭQ9-Z &9 13: 8:0K<ǏO?^KqqhG2t7H/fy '^@!y趇<5Nq/)Qz,tv' \ :mԕyj9p * 1ڶ>vq(_bQ IM8a>s\נb}UAE8kbR=hyc}ču/MZL+i 6_p^ÂbYU7X0g`tI JQ⎩tGv> stream xڭZ[o8~ϯ0ڇ:@)^v1vw`٧nmFIN&~E.vQ$ux.߹t0YMNj?DXtr}3aJ.ÉĔO׿d6hyIf0@PLc@M?~8ܛ k 1&.<$&dWa~$ү?]XS1[n[5X4"g u1('AĐO_vfW t_ҩ Wf'8FhM7(?u}<}#ID|Kx(nEIW~단8,֕*"E'U;xbHFdtKIIYJ 9:N:"'=vH8aDg3HX=;RmMC*c8DOr4}@yL 91̇U0?X}_%#y WrWqGgc@q tuBD~,΢ysuDqƯAga?bDD] P"kmd`MZV54Jn8ڴqrIhډ{VuwNFIWTPb(ODvZJŝk{VEb7nw]YM/܇bLE[ސ -q_iB@AHs(6m9$ֶ]l+rc4fH~ACerۤ.K+v_q_'U>#]svB:"$g$|0]9Q#gXdMaյn=1`3t 0J-pP`% [aaw.OL}fY-"l{, Hn$͓:]Ra[9v!!\,s+1tV(aQsT0~j2 㘨(hr璮") BFv {RDU6|^:^Ƹ(M`aUq'*rg4.A{BJ61+xi}Z %T1EC^CVu}FK(SփpV8WNTrzcB9Ď>I:ژ>R^E`x] 6Ipk<6v!}l7[à Zuؓ0kRnǍqEgS*lCt=n;M in4b.X:|vPb+^4Aɉ\+(ZPav t8xxW}T[4h._$;ӗM/,`΢ɐϻF(@7#q\,JV4ΧGrIhPrz,82V-GxG;x&>UhذԾl3Sv$,&&a0P5>R` @k_7Yq,[0sbl^,]{7vM۰V`˴Zv[Jn[1!Q眍"j}93Pd%3/ `@i hxvp#?bd´_wnZxO9 u7w9%s}9hj^Ѫk3Pfa\t.M_oZHrjod1OB]oC~B o = endstream endobj 1147 0 obj << /Length 2215 /Filter /FlateDecode >> stream x՚Ks6Pc!x?3M[gɤn8ZM%Q&$]^BAYLbK,N<;yzy蜫D!0I.%JdO.o/} 4 `Sf1 v|ypB'Ntprru[%NN>V-'5-D2N^Vϑ #hG*AE/퓞yʡ+_rV緫EVt\uOd6ξDM'.0՟&)$a>}_^^K0hgK;/Y/fo`NSfkx UI<]:Cuvqu:svrႩ{ ' t%50Z{ OzoiV(V;.߯,D¨,$DE2!Y+$RiDg}2!YKZJDc=lutc}{i.^dwy11LjWzg][*ϟi?$8 Mmtd^kew|ZO$`FӮ8p7V_i15UIٚ'><"-ek pVdI5 ҟ58 t1X"'sp1(2aKQ>;eq|1]>&=4* ň0M(ޯl1}ƛNt NL'4E1+j}S!&+bu˻p.}1޿f ." #Uh0(a#Vl`3;)O]Om!-k,L_I:!F[b82q.VbĴ gQ1] 8mA*O~hHnL"3m3X`V8`E7j&[Q-Xb7z7܍VhB4CLD4%2|[ F?3L5+ǿ5j۲C>E x\qd!CVMu p6-Oàa{>mn}{_})} 'k[[f4 N@|pFvTd/h zlO[tS*$]>jSE:9s-]+6!쇋<%SMivj4LOPO_M<ƅ*.lB\$4og ocz=,F>_7R,K Z~>'}`ؓ*SXOq\ʊٕCbIp:qeI11lV0&4xi\GDtJGi,,+߉Cp'+a-mux.U3 o^~z]nPp6D:վjm{?l'a5틖m Hm ėO؝Eđequj]4_- 换TDsZ ‡g "KMB86$Hq~ 4|;j% vvYZ?[G 9ͣ$RNgC&Rǝ.؏qt($(;py}dM  > stream x[moF_!$8X}LI/ Rzn/I%"7/ߤ#>$W33fFgo^^g> }fW}"j~^zggDΨzDHűB Fxf @yvp[_q3k>l~(b=:*4VI([O>_0hHwQw_y˖-l% ,i loxe^om;"KtI.7yNؿQ4 rrCx! h=O8u,<0&þ!}6O*TRZuZ({sU8 @ƒ``x24Bj{-M"N7/.=Pjuxn _eFFhlJ4*Ђhm2^TL;ۀ=X)Ń@Ѯ=P4QܻgA{\f% Fk_&Li{, RNO*=+XʨJy2sMʛL¸v!F;milcܯx+avo.O^k-UCJKmvw,o &ByD-TXi\ڨ7yVVR+{ PJЈj^yR}uu ߅8 !x›7*l9{V0Et 8^拾wg4!ŕI!B`0bl0>-}->Agb`c}N!H9: s ш0l;Boo@aDK% %hFp|0 &{ m8O1 G؅I teg :# %_ՓFP%RYO|J2:OݼggƟ8#D茐 2H2+* כ81ⓜDYCMX{y!hMeD1LJ ho-.6U":`qnZlq ll`|L,8 8B!^eu~\pnƽUG^ _&dzuF!-Eq^aKoǐ#VPLl>6 Y"v[˷+#͗X R#G i2 챙AُE)V'tn<:}auá$#>Է A0:5l ;[F@XPxHN "M Bwy٘x4]X 7A~-Cvۧm<ƿoB3Lk됫ǚpݎl֊ĆшAV,k\9{-epoudꏖ$?Pʼǯ6elWys7M6hGs,7Go?U$'Nh)i.n-~t/g_U 7>%a]yWWoIXItŽ*cT-g_UɉӘU*#ʮQv}ee4vpV);jŽ, "N˾%+K*,+%JLkSFYY";D]s+*Z1]7[^aH Agx|Wd@TU"PDUU$xAi̗D*eLRzࣿ\ +t8 V>Cl>9tI /Oܞz๫Gt#xGeU&;C>ۯBn4Mxg+۹ڡnij/OmVa4EuP9Z ua#E^曍a)% MHLSb;a70:eVV 8\W0{ c{i% >c7Nl㕣6V<17X/;Of*1kڂM_D ,Pm[K%"-a ojz~2en:L2MKK--Z`F 8a:4}m~TV55-O.f|hZ9$Jk w䕵emAʢe1jC%L8ոU$7H!&!)Q4Idn * Op|?|QB U&BCTU>gh{CŸOc2ʴSΦ;E` BX=qvnuJ???J93݇qZA%rZU (g-.՗ gCLB`ч ڐ„_d8!uQƣX&ƿ$#:5uh} OdHb'ՠrbx U W#;lS 玎D-{TտTyP}.9Z> Ȋa&vNzT7^xU? endstream endobj 1158 0 obj << /Length 2913 /Filter /FlateDecode >> stream x[o8_auOQڠ"*Jbm9 ?lY(r7ƴwۣ_N~z'uO)]DF#F q?..>_yQbq%"a-;/8^ܟ09yo4;L{cx[1qΜl[޴(Lw50?yD4ng*gO4=cl/tzk\ܿH`v~<4[ I= $/DIvMkEu%(abo{IBmxi `ڂTNf/gH;1]u\{ _Ѳo2b=)sOXݪ+ƶ!Re0YZ~-d+] WXSq@DH[AJN8UЯib(;:M&N3ХGUB>wjq(\׬Uu&1F~ <)'{P*$3G(-\H) !v03J SngUp!!l=ӭ@Pi~ X?7wswfɨ8uf2x^6fZX&k830Z0r)K1=l^yR tmg[CPX!IL>gF٦o "QGoYpFXdٺiA#gO /`DQtqA:Ǐi~~>``2E۸sx [Ձ*It^r5=As8ISZ~.c{phv$BCųk..2X&y$m!jjxA k`PXgi7L* \]v"Wq"c6;*:TY8z$z?d7!%YŹ/'&> JKhFbٍhD]޽XX;oo^]F/yClm^|Hyl]lc &RGڲwp|9Cy=:_.I@qzZA}1ڎ */3-f&8lZ|q+텸*()7ĆllK$綴mF,Xܿ]X:B츊M\W1/KWYxna+I8k,v=3-ؚ92iEDXO!L# Z d ԹYX)4G|2Dfh'lYVLpӽ{uGdl}E"6~`!QMڅ6q>q.FSPf!X]En$ ee㜂1P4] L:e _a?r62P7+3DP&Ct)*#N(5`?fKr[uUid^+2Ē^'s֢_H˕uRO؏†E j.-ߜ!34b'S8E6 eқ8yRUo}HˤL0,\+> stream x[[o8~ϯ҇@.q-̶A3d&颊-'Bmɑt:~ER.v+GCRE~; <]_|}GĻ{%Apz݌>jL=f1Xe@N'؎@{D>O)O#fQԽan!ɕ)O!%Գ*T"̕`GϦr&DP>ZYR4Hpr8po 1 ddܖ,0ke,i0"5ˇ[0IC>Hcy/)"R.\1,sn7M ;O0@ˢ"K׫?A+7Ƚ~c#JuڑSI<* $jJ(I Y흆 &{]DYXYno,ovӲI>?~( {OٖZR$a4'%{OٖZ`(q\1.ұ8' Ua,7_'"NU$TXg6M|͋iƶ( zқH$8A*k6۠n,|`P0_Z}u~Bi6l-C|mNY_c61F9#rWJl܏ۘq̇\H݁6^Ps5R%CܹV\ނ}0jc[R@GzЄ~r:V?loPSSAXE}Duu,u`nOdow$+Iu4 "۞גlD J[k?fiOpZDm^5)xXwXkJҝAވƔBgGRf Dp v%[QǤ k#"a~Np\] -Ϩ{}y:Vp_ _~sׁ^;f^}әȢ^eB C wiѡY6bKLٓX[z x8CKVb댫ɥ>F>7N̳tL`FJgS,(Ž\D@?2%iak椃IeM2N`N"Ef2Xljf su=?ȶI5A> stream xڭMs9)rqZ"kP8~fi.dtn^|+xWayˡZ,AqqsqO8X-9\8gzax B{b}*pȇh|Ŭ}4J_x0ۧzpFaWziz,-\r߾B_,WǗ†2 iӡm4@\q_{&!H8 .+:[śjnG['3LT+Pgd"2:j|dq1U(:&;k> |L3 +|M#4+ӊIpv5IcJǬ5b'A4N@;?|zq=[ {z$&'Qz$p& ,.cC S_;">yBY"@Y %n $ɋWw"HRY{VY3O~~5vSJbsT#Zᔸfg2m2篿%LISH[sbwt[́pFuHOQl1! <ҽPYS-iK&Ț",5* *Rb,'yx󪥷t)Ʋh&oa};*"KgJer%֛x DY3G;^uE KtRy?{ ٢9Ɩi`K@vKe$Bb(^^$ c#2y4Χ$dKL^ _}v"]w,]SlI/g.lɂcf1ygR2Ús]uK,eh_Y(d1 wkK#`dE+ld s>O3Jb]?Y|̏'WB YzǢ9Qu(xziabhVhn7!b;p8 i,wA#}"H|uL `ܚ, >6F7!t1㘡Cm*'ٗnt1U[U۲w\|q6rd`֟)2s,ߋu(Jaڟib-r ǧ-Aƈ-!Ys:3;.WYzkk$,gƲ,E7A猋vU*ɼ _xv } /N.:v ,c_4o`%+a gt[n]267Ǡq }݂H5g`rb+HÌsBaVz :eh:k;.~:d1%f]%&Cet~z2ߌp]"' ?g9xz endstream endobj 1173 0 obj << /Length 2195 /Filter /FlateDecode >> stream xZ[o6~pyph]fuj{(R4I;&W'H!0#EJ 6_/0F#0b2YDI'Ksu-DHQ iޞ |KBtݵ3v6-DGN~$AY2:5*@Dk*#҂'" &R#볕"~kʢ~oy|?˷nnMњndoR(A  LWNʬ|MM-mVoǑ5EH$Z9d|nL9!!oX`zW7F?Hy3GFH&˘[JD7uYPrp4#qG k:+0\<`s +G$>h#2ͺʊ?F/N `Y@DW?I@o59oST.j'=oM^Ym{`H%r!ZX;/Cl!MvC{e:]7|q&d>q ,)/:[@B*sdtj(DBHT1y h&ޚ;ؤEs1e SY֨U4 b_,0 d>^uН.HTj}c,]~wkBU6fzL ۯqSsG {ǬeejS@ y(шR1f Q18l ^o<_i];;̊l[Cg`'|E`sسiLa[*ʷv[ztogj!&!F;1bg$"p>t!CTo$) aiE^Sh\AKA]rJNq2[qhʏg_~F9\)Rʠue 侱*ю m t!Gt)7>E.i G41 |B[puB*1F5\)T%\XQ1~L _)R+MN J%pMp?l%5_'w爻KOu ^DWchΈ?SU*p1ڴiU:#IlL=zsu G+Qc۷6F@mB0Nuw: pxGvYYm`{nov=pnҪqwYs{;lChe%mɳ-8 QkR㟪rFYЋzy"=ˇ_9SE ãPsC!.樂8[`T4UTYe) TI)KZHENv/TyP:)6c-uӎe<8~Д=OQi>IzD+E2&QɠV0A/7%H' ؽj9p)zȑ vQx{x]<&ݽ!b7-W]lr1>yɹc >\lMgDCf[;(myςA'~,bmf)\l6hyvw܇|gk}],cZ)Q˄T{bgDkKP\`,s0ީK2&#IAo2򸎿=]wIi_XvЄ#wٽ9;.g϶I.ƟcKx,SA3^X3rJ~Ӟyv.0٧4$ Bi>; ҟF-b`L ̡ ,lC0͘_8AʫgszX`Q;"|ަ}# 6WT T|Ss}՟Z 6 Wkՠ 9/啩y3ޏ_sGIvke/`SOeZKeQйΪo˻z6?&(__s"Rl؋M endstream endobj 1178 0 obj << /Length 2009 /Filter /FlateDecode >> stream x[n6}WC&@r} m&AҸC :#)KI,-n` MQ\ὼ:BYGD'ǧ 4f,y?y7o|8~e#Hw)*mTޟ}:¶l;Iy" dfP2fB=0..ܞ3[,ҴXUsYԫm4.ժkiQuN͛Ǡ-s6/Dg@J[FIqn+Mo\I)ߧN{ btͬtk[EsG"Wz]4ޡ\~agUA`,n1y*l` +rgf;.%udKMtY.+ p ƂlΛm ct1]/:+ZF+3-Kk]0Ym鯝j Dz,$ٰr O_{:O4̵<>tUma-6Q c[ 5dU\3;Vɧjq탊yz3VU+CJe1=Y7+'z :W6-feNH@GO"c}8kqBʛ߼xg&XskśiuN:N򏍗 Q4FevP @ĢeQl<`|)f@ڰj̿it{]w޷gk 愀nO)!Y# D"!1`g,L+s 8+ GL `|H 1$ GOk`,&4d#1ag#97EcL9p)dT&u`|jH"]deAbm"́`~{QAH 3Dp=4d,sDzs\ER?.̩mYX\wTi~KISdn1P{7!iEZVd<d%TjLߩg _!BڞY쀕cncH#ɻ("p|mt(0žۈ5LfjFƈX){⽗{.*e J2'iZ' s8 vj5Ιb +f"KR͙^'Z[WԣOR}$`~sK_rUei3-fig-L~VGIрKEmG4_b"剱R< +2tIHA1d5 8 ;T, 0~e5`|0"bCFKrsq8J}"b0Q@4euuan|>FgOpuBb]~C''9gTd en"qd``8MJi֦Zfy {(<>m endstream endobj 1182 0 obj << /Length 1580 /Filter /FlateDecode >> stream xݛMo7 "ɔR@ڦAuj=9(bk\i#1샱Ҋ"g%_RcQVz5a4goF'Z dTe/W/~nZ+8ku > $*]YD{Qgo*Ļr|ݚֺ:oO;_7~^(_y.=: qyl:~;=ӨOIp6?ؼ_Mq| u 󻬽4ɯha ,ሙܕ.AOOrإ9,Zth WА[os`Ogcw/ҩ]gż_0Us޴ly޽9R*:@tp/Wsl<̵7~]V5_ ﺫdq< q)!16dKi\,罭9fglٵ'^Sdcߵ&P2dCV+֚BO!*E5/3V$ܮRoKto}s=/Sן&_ТW8(k,҅[Fᣕ0xh PZ;06$4ݮVGm&R!AY{ksjLfcWx7R",:(,= JnDpR> 2faMR p:H7<%)x!dl5KeYp{]X)B{ZTWr~hzE:p=F2煉9=rR5H ڽtnUep9;; ko\ ]:1p:dqȲH&Bps~13G@Ώs Ldd1tKUEITVD:LUͣJÌAL ,tcߕTI}ӇF[ J,Y]"ReQRPEgHL endstream endobj 1187 0 obj << /Length 2613 /Filter /FlateDecode >> stream xZo6~_!^lfw@n.RAD,94 Iɒ-;ط+3oǡcDOWGi"C,_F"f2/ϓ_y`2%Z?[P"t 櫫Ͽh~@7sam<vTl16jQ/ cXkB=&yw'?3Dzj3ey}ZbMoMZWfIa.O?c]P-F}XLdp~n*jNqLjdo\듗Z[('LԁPs_׻wdx |ˁt=DYuܮbq_7M*SV|l$+[p&ӝ_$Ij 78iX*JU ,j?3+:yჩtmW"+I HG>y}!F"8] J:.AJN8UnȱZa\S~I9qN-hr)4r/ aMN rFR9NVH?nGi44HvB R )4`I~,yR(<.c*=#ހXfKc@xNPKkNf E~1Jh(X){rS̛,/鋙"1дtcD/3f3a4@-CXt&pXprg5mg\rr08d&yʻrB@(cJbޚ$vʺ'Mo)5ʹEh%X853a܇ ysu ^*ydaC[زevғғ&=gr4i'= YSҷ76v Z݄'`uF:- gBLhWKܥD” Is@Os <, Drr CĨ#DlSKKhSxH%@4k({HSP[0Ÿp-1<.RrS?0aGI.ǻ YGvQɈdLyS,џ_˰E13[b Pg%A~nF/;fvr33trf&HgŒ7:nj?Sdn`0OP'l.RyN ̎)(tK !gp i4V@peݞ1ӹf}ws"6^ϳ\ُxapy:Ƥ۝Pπp|@(2]+WEaP]V׌ 붝I['Z˱kB^R-,7oarx 2+D7Ui{2eWX`Fdi:Z%~upgͫѫm-$ ߺؽXΞ/A\[Bt FX"?QJm/!Ũ:<уԏ;0_X)0ܯp:JWfX_6p 1VΡ%+b=%6+neʁi5(Sg*+A^#wm[ A2Hp.Flr.P-RU^r'o71'ko -N3d5eYIR!x[_[dC']_B82328s)!ӑ(U1 ڸO!]+ _,<5@M#<b#@9yV8DU/ ̡$3̢NrBjceA{)ހʸp[|lZcT=}NL endstream endobj 1081 0 obj << /Type /ObjStm /N 100 /First 981 /Length 1917 /Filter /FlateDecode >> stream xZMoW\جOw % $!;l4$WMVY=3-EX=TTI M\-T4ZIC&kojexj>dbhDdtDy#o1y h1#<BrLܣʼnXKbX܇tq{b%L6-Sw[Ie[Sj:OK$ Qph$DcN1'qp@w49]@3>Zr:#^mCҡD)p'1Q0TYKU|Tm-%pM @96-Xnw5F海bh4L 7H04cm@[&"Vb>ԇ^$zaNCD`LG.Cyt².^?4Z^Lo>|;__V <8mz9P=kgŋ4Iӟoizp ʖ%w]|mXV$!LfnY\jߙrJH)YNfЅJ䡆<: g2Mȝydn.l%^L5OiɆޮ󯿾^nǜRfeYxB7ONVid=0z JWiz6ߵ\]L?@M1YffSJƻ~oiкeRʭ6?\c0^7`QBQma~!P7{5QkY{ KڎZi#hwj|_TJ\,R#9?OL#P^{ES(-7綈{  QV V P" e] Qt}] s@E[%+_G(Ғ5ΓZ26 ʙ"܁$F9 ƅQ)Niӛ=ޞ`v8gE),(OCˣAӃ;Dͣq^T_*}vhK[EiM!^r  1rVV= 'G/ݕYܑ@;ea)Mύy鈭%;KPJzATUxsb][cqsgs'-?;~Io!d0Q ֽXI %ؿAiqnCHH愂-G^z$ii|ji߳שR3I_c_Uds-T 'LaQYf%hGٻlmMoG.{!)N4~$=qą#m^; endstream endobj 1198 0 obj << /Length 1324 /Filter /FlateDecode >> stream xڭXKs6Wpt7 gڙq=!qbZ-P$MR~wԃlF:bo bHx;>y$HM.o_@z#f1.+Jt0 0g)ԛ-7؛û/(Qd%F‹ Hpr !C)O!%4 #aUQݍ',M4+-+4Ns?\ 8r'r']EhFo(-6U06#H8E*HSUC18O_gmmx>G1(K|']t2rYfAty~'[$=a6"!@JD}&WeLl`bY2Fjo;PIɧ@?iRj`?uUFOopm~X|_NաGIF>ZaN<_syʜ>'{x (Ɖ P!s\Й;hl3 OzNJ'a</,zci4G 0CAtгU^;ro}{F)[8Ka>{2\@UBp8U^5m}u` "TC|3׎KU|WT/5B@٫CNX|CL0+ (Hb8{{De­#V?8ᥞ7dAI ݍ%\>;][QřB.j4#SˡukQ uOH3ߺd9Ab,@XVd5@0aL1! BEX9QYYj巤!xepkZz:ADUۚ]m'j;S6[x szP9LfuƏhm3'% ?j7hOo"+C6k̪01AG融_!=Cļ|AEf[s%9vgaƶʛL6ۄ *D N*U*fa<[!aVkn_*QYڔY~_a#=-HBlڦƥs . Aԙ0dN: "( vh-Dru0kQ\U ARbdr1(G3#Rbw;t:)=:6 u"-:a~tΑbјeqd*yX+cYVo|!.4ȥ endstream endobj 1224 0 obj << /Length 2167 /Filter /FlateDecode >> stream xYrF}Wmp2˾I-++.KԖ(vsm%X33O7l=óg8^HiEfw3%`b&Dj>ygl5':~,p:#lp<[xՍƿ/42y)N>ͩH:4*ܼFrqoy;'ڤ1ng˴"t*uYnwVpS{[α9> NℚMY ,aB!MX*lea\p=~IOA0X`|AL՜ 6-Qh>֛r<>O|_Q 0(,~3`<?K>[4A8}"^ r++~o,xrIܯ-^Os Մ@NB]1-yK- MAL su@ПX>.rgWYD4c>Lj/-c+@ݕĚғk n mtMUZRƎJ?z3kcTl]GtC:S 2|k=Bu5oȓ zkua]nid> stream xZn8}W,I`6 @.. FfRXb["˙33uv'Go;|Y7b @ȳ.\,?߼ `P֌ 9pEJ|:C+]xBu<[@#ıUȺa'WȚi3dLE)ziyV,)Ҏ*}hd i!`x640ja(fM׳S?oE[?ԁ{%"f""sE3clϭP͉w4m^ʜţ%k+""2yԨ ^ȁ6Ia pâ4xL2͓>ܜ, X>;}d-%[T~4ø}*,.HVUSփϜ*pEcWgrCob/Nvs즧'T8Z&oj?S|I!]c7/7Y}["ڵ@ =h^̓KvQisj.i^kgS=qD8k(UR~M%78WoJ`N5_$.;qށ_ 篢Kخ5U:G, endstream endobj 1194 0 obj << /Type /ObjStm /N 100 /First 991 /Length 2774 /Filter /FlateDecode >> stream xڽ[]o\ }cEJ`@-䡭l(.셝s4nAs{_<戗CJ#3$2KWIsI8d$5hz`^yZ5 WR &6QLY+GĚq?;GXgȚބ#LWY^ZX V(m#x(+5 lKhkJ_ӅTo cA ١2|UmTK4ZdȒd60[i'.]UIN*"uSaJo}ͳR߽RXQ(` 4htfZ*|d284=z%212eObk^OXx6CX_b39¨NٓO[viskҴc}c9*h7ʂsi |C)_,J_Ne652eSձȠ,O4(iuXJVėsKMG_RZ]Gz];v׿6 fm޲W_lgMgǞl<7b<}=KTϴ78@/S8K{;Gwy!v8|ͻt<^.=_qsuܾ{Mᇛonq}޾tͧieZMWX=@8_󿾽1R߬&\^z緷:|swZ:÷ײP7x uIf!|"p.j{x6kl~>6js-bgļ/G_-LE6"!+=4|H K K K K K K K K K @;ZVX _y ._])Ϗ e0qI R6bHfhngw$dH)Bd@rAe@pŀzf2y|C:8 tV-]%x+31;֖2L~^ dHB{ӳ"l9 Z$CEOa͉w+v I5fUGXk>PA*ʰ7CU㹳Rc R2*}VI ̢BU@f}:^ ڢ\@9@煐턐 *Q# ;OF׋#JT"Q\X[KHiP>jPPWGإ!W'B!s.~AeoJ7Dh`sPtc ƺNšf߇FyE^EQ :Y $#vG.>{,.ɨp jB9Z녓+g^6yfHM֖/s"^aP. ?_6Z/≽&ӰhtFϗO$ߠ/:>*F[حQjeFQFkeFllllllllllr -[ @nr={ @r#G @<y#G { { { { { { { { { { @<y 3g @m!F[H-h i4Bm!F[(r4Bm!F[H-h i 5k @{PcjA}܃#ybCt+h#mDJHpTzMvTt~$  ۥ9> 3|}K!6ZF)͈)%nmC&J$5Vէxbߐ(ѓ !JGǮk!ww}G r"Ufm¡ 64ɂ h-]r:Oxԃ7;9Bjv} 3܅jlz[4h !@<+m 9i3splQʷ SrESg]GkT3n [hDZva'vŖ* qcAwik2vM&x@:%0X.xHV&5O`(/mSv7VF^au΋ xETkeI,7]UvDts]CV| 2BPiSv02jw?CgG MWP@uFp ]P8_m+&5w2@IX+!277uI$v\!ܧA΅w'*-]Cв:BA KxQOl 0gWpuc <6Y Zh~B8vHu/ ^0F/9oLPK^[BS+2t{hM/b ٴ &PZMܩ#n _4^|-^StReF=5o /y~|Pnz/3}!}/M Ҷd @ClǤ !yK*5ނBLd_3z'h}\BQTlEu]yWՃ1}6lG#@bQ螂 l׫c?߬b&N'7ɞ0o<@*S%J7%_ endstream endobj 1468 0 obj << /Length 1477 /Filter /FlateDecode >> stream xISH| qV [e* T6*E OK` jL2 k+GGΩ0"c4rbDԘ/񗿦Wꋱ PW7:IucB XrcB09+ 38z*\7uq^wN4/ƨ_\k77)Cc`Tz-T1HECf T.$LjaH aXv4@+pX BS{w0JU$}?σor؄ CVOdF I'*2WSyibem־T<+/ј¦YGj?NXLe^y: Ua+jLpAVVsi=wAc^gtohYI 1~yx}U`Y|OckոdQqTq/:[f!7n8K,aEib}yml#05U1S~i]8wv;Qԩ DNҴY k6ÉZqSqm3ȊR]iUwU>-{֎r֕> stream xڽ[M\2٨qf`f@Ei{09GU*^L JAӥ;<+U.ri#Z0)rqPA f%Q90qI$\GèR%e[!m*CBɹsWX(#h͂{NJkeIx$jnjMƑ*uPyjP{mwu.Dg#HND)HD9H57 kDYHDlAfS|FPD))RFYYJ,#J`iq9ςUZ0(<*iMy7@Y(j%ʣbIZ"gDy~eGH7ótk5'>#5Γm$%5 HFR]Dds)6>&"d@d)WΤ^2%dN qJGqm2a'~iTU1 3&5LQ z>v %as)ܧR )) )*)+"݋)LЎVBjakzӹ$s]M΅ԹyE_ F>57z{߿܇÷OwiO;|OCzOSxWF(GIf-1E8x|/~;I%Bfc-$+^aZb 3+BMnDBRCQQbU@Cm+~g#pIa2ZLaq45=#v*+A+G4XyBԲDBbe$D6# LBKK-GUD ]JLTa2ωG>8+[!tH^2!@,Iz=D2W%R!͊3.mFш`H>&؍S$" pP8jK[rIsh4vZg\HlKJP FCPtF fMq@wU'9/+dQFpp" pvK3b' s\!̡NPY"5ۘhB2<J5 ~X=upWNSK.7 ޕ>J/$NItRBBƚ4w (]x:!XKH u>+HtS.}1'X؛#aI0z9aI0+ıc#d"SJNm O.$hB;empl;#UGFJGkϸ i9vBe&JJ@bMbkV'3ژY,9l^(s`s,]CbkZB-$uq|\H &5qH "_!7QLNn:t+9ʙ- %l6~!Q؏Xs) p(VNgaٴl;Z@V>K[5MKlZښR\YK_s1rWnH1r9f^곑Νwk'2˵߄_4*7WߜYsksWi1D(;i}%)07Wbaor(No>}&n ?=~_ >_5=8?<}2 J~̎ǟ>|kQ~FйN]z?Ԥ5O9 #9AA8 4ՑՑՑՑՑՑՑՑ͑͑͑͑͑͑͑͑͑͑#7Gn9rs͑#7G;rwݑ#wGy8pÑ#G<y88!KJ>>(>>9;rvّ#gGΎ9;rqő#G.\8rqՑݚĭIܚĭ \:rudqdAqAqAqAqAqAqAqAqAqAqAqA9=qX Uj50"UAx˷!!'㩠3BXN5r/xH אؙʾ8ۚ2Jg, +plX-7&M8 L_AbC@i )k;3d3#.I̐K=ᙄȬܖ$ƽ`%4# 3ajlCn_UP?wSu\K;"g([fW: L;@%j{>']Dn.Ils%~;Y < 8 .+5* l]HtEδ$])Iz f+[ B*ru⠞*`J'> stream xZKs6W(T$kyImQN)Cq >HiiЃ ~a.dAٻ9-"khaDo}|r-뇱 POw9ʇ`caO(A ngܯ+2W*ʃTD n"OW[NW@ n\{E25ʻ95eH,CXař)31n;+ukIsX/dRELd}.ew]uSŦf3Ԧ ZZʤB+t\/9a0?fĽΪ.a K)|mq-vk(F_GW[Wvb2eu+Y6oFqFo%1^?brj.|:<.xs8JY"=U0}y^RE"*q2*c\~yp8]' endstream endobj 1470 0 obj << /Type /ObjStm /N 100 /First 1014 /Length 2688 /Filter /FlateDecode >> stream xڽ[]}_яK߮a-=8L28>=J|ǐWsLuuթbm:(lt,9j5"Q9i%)u^KdFaj~p0i=8H*Jjy-4c-`rG(Y2i#Ofq:G5YQK 閞р!*D+帑 b}y[jGui)y=́{H|rג䮒"䮚@ku#H9:T-漞wPyXڜLR6ôRO^yeC,h&r)mZn\t*kӫ(ON\4 -1YbNdŃn s6&Ѐ}5\c\t5(dFVoM^xO._O{MAd(o/72?<\z|1}E322yzIyz"]N?%GZ"<Dyps쑨Gh%3ao$euD7pSģܑn*e'PD>h#}GP@L#qEJ@FV#,Ǒ>Q%xG%qr`46Tڑ~HWP.Hر *ZO"A1 5 J# u@aCJ"z6C:~$/ JNTY dzW ؞(r$9gc9  ʢb^3K%SKR$3` ۷ʨC\9llfH߳~k8u2l(= "]P[)F.@rr3@SBYayL*~O\)k2}㮖;p!Pb(2f0O oLFcBBW'm SMu #PA hля7DEd*P7Ca~c-0Y;qːg0d Q+"x=*{WD&3v,r# [B֢ (Ur \E`R5k>ro'Q/Cf|Ƅ-Cfγ!@3x;Dwn#:RI;RԒ 6nsAڊ~ 73ws8@NJp03k\vk5j.?;v;lϑ0VKgbs$qm4w!~Ȓo3fݳ#9lff{œ{-Y24 ,B S=[}o'9V}~C_uo-Nr/z)[z'ch;^ي2:lJ۽WGk鿕ٿm*]'f U׿Zz?]s_=81_R[LGM/_˛_>k`p?Azûv<~_z?ˤ. endstream endobj 1588 0 obj << /Length 497 /Filter /FlateDecode >> stream xŕMo0>q=qWVZU+%B N'j QhV{@03JD[6I%!Q6CןwMf6q:YM6;r$2U"Bмn)$y $W ^,0m%$Gu_6_ Tb)hiOס%=Ӿu4]-1\`H\PA 'z$=!"@dZSٺ:@aح=&Za.Œ(Vʙ&/^cz ͚r%=g[勁YՐaeuzs]g?mnM0S];[.rpq4¯i:_Uň P*ݢOeMH endstream endobj 1567 0 obj << /Type /ObjStm /N 100 /First 1014 /Length 2414 /Filter /FlateDecode >> stream xڽ[M1pX,ma X:$tE`54{⃦ui@b}l'ZJǖ{濿=wOwןzN?}Pޝr釷4>ܝ~|ޒS=RcؽkVt.xNOoeo}v@P{rX\`p&ٱ@oJ_AmGIղs]=K/c#\s6;6[nU,F4YW{\ Xyp5{4\kbaW@h۟ <팢 \ <*0(̄$&a @`6yw +^\!"wo0߈GI.\~`!i.lb2A`2$,G~$3j (B;tfBwUD1X8gkf .C̳2%WBxbW" „RFmq ƴ,##$6Ȫ&p6AtF6lԊzeA6Tvz%zܹLV3ك@ Fr]FQۀB߬Umn(pX=oa@^YPCቑW$ˇ[̑.xBL[D>צg@Xuj)A %<<k;8na%nGXq<$'$pW*T%v lXHu5UE튛_ ,!o0pyjH (R S pMNPy醼; %Cn"`x LzSÐĻa.!Wu5 DT]J!w; klɐڋ a V"A0DvmW܁bU&q@8"o\q穽B,3Ԟ mP׎(^PE,b[~ iҰIYӇDc5Eӟ<)HAlI{4M"?R *sSѿ )KDC}CI2Jrzq \<jm=A4IĆ+HaqC;Wa bX 6--W ȥ=E׎)Z>݀E˟DlJZZ O"6ΘR56XĔ"|?_DMakZ߂EɟDl {BP!rM!c M}. !P~S^qĆD=*q%+Сԋs/q%@e]U_4nmg2e˸*k[az|hSDCԌEݝ2O2~aCI??1(nbuϿnz|cޣRup5BN>>}x}:y9#x|wQ=㇇7;?ΖɓGz#{; {k]}i242Ҩafc>G9ϑ}sd?n#y26Y .,!K)8d{D,Xi޶yr~㔥_΃7OYw68eqli,v&☥_΃Y;Bc~ ×Ƿ6Y nss]AV(; a;> stream xڍwT[5ҤTQHzKQ$${"TQ;RTބ/D`y`q `~2vv 'c710$B? h(!XQ ?||"`0 D!N0+D@1d H+fc#Ӓ '&&r;@YB-#-aPBpJb(qqhi{g@NP+EmOi@2v- ۠:CP, ) vitPPoo=" bit@A0 t5X=auA1H? C,p_Cr?a,05.Y atp"ah%]Ak@:#ZYVeX=E 0ǧP5?Df"B#bi e什q5x(5 '!s@,)? ^`X ':Z^q/>?fD]j1HSMCXO.w^~/<>'UCX#._9; ;6'](? -q_|gr"H)!0NO1BTcՂZ:U 'i^>A X7(\VaXK߲^ Gb`W /n,q&7r_XCqC<H@h+7VP_$ F.-$FrB w0c`~_(5i!ۿAaoVDž_[>Eqֿn(jI6>o>ct]$L>|;gJT2H(VS6kՖw<̜TR*ˢjb=vi$EsD[Nam2V6w?9s)4kUk1}]6Z, ޼$$I;dYs9\woU0u'-@,DrkYN*4V/gm7LX9Dl1Shٹ+VA,qۙf{ ׉ӧIj?tsӊ:+YY::nE"Ւ]:׺_NLQM5V>tbymD376-sⷪڐ$p=F[ 'cfdpA7U\+YT#1&NIԏ|ϾgnH! 4'^\!:8DոLW4K5ٟ{SɂnA7@ۤ!MLonҹ|k]xt[{?g}F2U(J7 d:.AǴyޯJaFSH(rv<^5yꋻ-t(ueSgł-Yյulk L@GQzrr{w R ˵32]wA4zTlUA~~;:i**m-uϻc *ZAcUЙkZ԰ G8 `0a,05Lkq$0īAb݃j?(ųx~i?Y 8e3U9{Vُ'-OV"]>ٕ}OrɭLĵ qC)hW1K=$ 1Tur7u'k5RZt\?^Q9p>}N+sCL ]ˬ+অ'Hz@Ȟ)]3:; iޗP? :!pAܟg(m{lg+61MhI=#MTWckJl&*A㛱^cb_ W/0;rxH/JƏ|gLns黨yU6 a4m/dN hŢ'ulx'ބSTVn^ߺM-[J-%;#" ~?#͟CBnC;I[uyvVkFRenmc^+ZjF:eh?+ZFi/4y)kUn?b$|iW+xYMxjtf\RvF̠JW -W Ev Qvh*oK{S @3[u "go?"jb,}6QaE8jxs1=CRApkG ^_N\BQ kB7f>qx0f =`}bw*pdǞ8oG.sDk)%TONB%|GW)"S7!pz73>o3>{PTk-|B4 Kki'e.*S*}6cD>h^j=vMcjNa {vgTx2YS}r+B"xI7*Y*xkM%-]V(I://3c!7>K6LȦzE5_T*5n^p1[6K} F!&pB„lkbג"Q+Ϟoל`L+lrbj|eV7>]03kF{Rƕ; /DTl"1SK]ѽq-^8fMG-X=d ,:P9+%-G*B7/C}Ӿj2;$} L&9_x_}oϠQЗ2-mTvq\՜5[%n|X4 jw5ߓoieww>&H"|ӵP~ FROkG#F;9fܝ^GkcZR)T3ĒI`Gfx2 눔6SNbD Yyg]9uPTA̋ %X`zD¹()QmW[<;|ďeΩ= T{j?r M ^U4UϞ[FG'nӦK9M[Sj2C(ăhS?gҘ>Q:Z`LK E?a'e{)2hXxhя< xq G^g(݉Fa0]U߇Z"tyv%b!⎄t]=5gϳ>z{l%5[ouX7w֜,KnTK}mA'u+2Jw~!nߙڍ>P':U}BHLy/~PFQ˻/q$/gW[% 3k*էiϻ᥊ =*[dI 3t` ނKZ%g5^"[̺sKBjgn"hG`[{Eڂ0wwz'ɻ Rȯ`5D+I[tnq:~\TN&dJT7uM\\`)uG'|HGl9Pγ'\߼4$z6\X$N~bQT&@˲"ѫǑ㭗 ZA=(Ja a-#'˱*°/8- ڏ2'qm~0;ԕܽn3T=i?*dsYgeoYvt5B.˛Lxֳaw7˔\0Fc%6a/.@|J&?3qh5F>Tȋ'8Zl(!sKvTN$ 7FI j1xMv*g>u% 7 yo&%n!Uw7**sFc@RGm}YᕳR $>"/EEIj'e^RVM6S]Ĺ276P ߬y4jr+?xL﷝[>Y}D )ד?ڪRYI/G;g¼g@p4ℾ<_GAj]E>9 2 m u\\b]P<|@]g#Bk\3u+0w7l&iT7:yq 2(iFOokq? hN,jZIk\N*{"0仾\6k$23\K#z'zUP᫋^\ɤ:d/_t?pz7aR gݜQ٢B0w{M&Xky5hޱ|W/S:{tkPmfPsc\?^$v׭q^>PmZ7K5[ f&R6yUtulf1rf=1 8k⣰*kѱAX̵F].}p@.M{'jo؂"\ƃ]RMDW΍,m3Mn9&g+O7[cJª(^F΅rs1M%gOm3ͤcVAcM~ίM(L@B'!LL^dn xN['zYi(wY<z@_FOAK5ċ^:S;2Q1?e&ph={|勢6ʽٿ_]f{7~؇#|eX{:1?F@F7p$RPk$4=PUemw ዙ""giRO9] )d,- ׾Wu{Xr~uŶIb^`U8ty x< Nq֑/ɤ exZ]lj`=lFhrboo?N~hMDhޣ5~EuRDELMtO GU/ʁ+|(YFBt*_ƘHƉ?J]zҡj ,.Xu6Xٯ^5$ϣ{-Qt4%z~Lqp4> (]j/?c ~*d})\rG#+niZ.Ԉ_٫$ nU"c>bzg3PFHR-_sXᛞ G7w>ќ7֥F"5f4_Cif8L:9791f(yWT^XCEٞ@YY*ueK|kB/H$moW m/Ļg(ޏ*`N'-zHQ4}zMl8?`PR`|eHG~̴ 5WI'&"֤?ڮ-}9^v%FM} nKFS4rMD5k$7~x,?Ym endstream endobj 1608 0 obj << /Length1 1478 /Length2 6403 /Length3 0 /Length 7390 /Filter /FlateDecode >> stream xڍtT>H( R3tww30 /!ҭ04ҡtҠt|ck}ߚ~sγgVc~E'D GRe]# B&P &0 =8(#!`S0~8@  @bR q)  J@JTP'@ xs(#PW昿nGHRRW8@ :]09 #?Rp˸PR>>>`7OEE 7 0@L` #Q>`$`PGw ƚ:}wo>@J'g"(W0A.g( W@`OG0{0W`!!#~Rs˪p'e$Y  q\>#|6PON^pDS "7AD@0: Loe1 g H#{C($(? @'# q‰C1GB}V@@߿V6y9!0ꯠ!o))!|"@()2q"i ?eG&]- B5PRS, 5/엙1ݠ0?z0]!Vro& E _TB (Gj21@xB>+~Lkˆ-LJ#_&fry*sĄD`$Gi2f' af KA8 `H`LJi bQ#e c? uyy F_/ q$G8J? o WnW)Iv! 4 l?"͸5#cm]SocXˬ`֯E:jҢq8DN։吴Y+ySŪiƊ.VO]&a +c^z<9KBlu<YKlhoDkbϳ}s %wbWϲX'uh+n_. asxLq;kYf2!e߈@X55_6ūAśZxSZXZ(4g{8S ⻡f-ccwc?TpaS}oX~0XxAB2dL&3XHz-mt2cuo>'|kau۷)4$v}9xVϛ%| dD@cL'XdbuAHm/W4Se, }Z֦%W4SJ0Wb Z7y;k3 kDASKSԠߍn2h =}Egg5`a}aN9ﰜSbG$i0dkYm8{^X1x30Ƃ{ȟ޴mv?U=Jwx=+J_I'[*+i^qw_z %ub9Qղٍdj lٺ/{_CIa5C; Y /C/ޝ)C9=`ު!bDCB/N= 5;/.Wnվf~?oeD⵻A+Y&SdbdgRI/vjxr2vR{\$5P/j4V-vΈt~˷dX7>da+l/NWoηJo],kz|2JRZ=LY>kbSoaZ! civX0;iېp㱁xO(l.Rf-޳­ϑjXH3l"8D|(a$kB滔>s][l)?S|e3 }fm=,Ԅf?~VpdkViaN^[<(u| Y~crX1HZ{SĄ'jD ~6#oJ_$dzO7jbԞ=&[8)V][E?v>1 шȡF`~Q%=T4U&ܘa}RL4~T`ǘȯ09v.A>Ae{@ o2z.MXebjE[U_7lIB']7g/JxͲ#R{;9z=bqf:ATf4>|Dz\4(.UpuTQkJR꫐󇒚ߓ3p?_RNPzrG֖v{Z37[- 7v̐1qO)nhEk .]i`by3te:/E^˧c}::n? Vu2S]~~Uh+X[QՎ{I>pb1"-={CwRAncD^/m3AC1=]&==$t7^'=3Ƌai>;hSsSzv4D:%@ź1רصaKLCi߻OXYnopԢ >_d0!C}m7,fVۄ2OqDͷsդoqqQBc+ [54FțHm+LҮ][+d4.68שԸ&L3ck7 #WJ=Ē$R6z'8lM~}ueE>V]ok|iV`,ERuwT-1Mk# ^3rc$ihF& wM{V2q "~,}Q}-A´0̇lυ2ǨԢӃuѮ$2:$bmue@kUA:cUƔ1R!1m» {$BVj&/2g028nMӅ\B5? u+#bZʮY">?74Eax켌i#yG# mY%cQȓw,w.&_Vl; g+|ߜlP%/GR"K- e #9i/4 F?`[]dh0槟3/4^5/SDsut̞ѾS0o-g޶\1T+mRjYt;&Ui9]W '+wb;#{|UqPv_h6.~/V IRwu:4P4lתjs^&\?u?F,RnѕPKJ Hħ>ÑGj؀ϣ}_O*F!|=]/b:t9M9hN64c'˅i^qKGcJnhT [Q5fB<b]iIM3A9]쁱Â5c{,m_^s[D.7[*\xcܒPrDC3_U/q_j;v4?Ī7|<l佷X=p7m0e_}2)wb\;ǦZ+-iChg@fi/snNN0cl'2*_ wtGrc M.FRF83T7.Ney,Ay RpJR9l0Grԥ +Vv4I@opw:-e.ҝgρʥX{օX6&ǝCZUFe> stream xڍT6t*ҋH H{o"`!H{G^wJo "Es}+k%33{f3 +>5 xyM}S ?__A X .H(. y@(&Ps8PD /!ErZ4yj8I*ptڡDv:B\` BA;A0> < $ rD"\l8ܡ(; qqX~ 9BK 0""6(w `P0D­!.}U _@Pogpt=p[ h+i$B"_5 n"ZS@{9\8 U! QUcBP!~1aa! x~m`M5x;!62 >P rP.^k(B!6z9Za8濏OCEGENO!o10? DD>p@t};e?3 B pWO7W7#%W79Ba,uE@C]M5YU= p[yxCJPK5ᆿ CtH?z[o # 0$@5z%[>^8vk \~,'nk;@з N_7)fA0 @ C@'q>_w)슖~ ݊h wE PP't~a}u5SL0;Kٿ j=sY]\j5 B}zm<,̺z0Eg$d|9 *9( Şe}FkHJ28]gff ӗ"oڑOĶcRd:Tlv6KS&%ԀS.fW/'r4gfi_|IaU k5@JAXN6%#}FsQT|b>E鳨8y$Lk9aӠIrZVrU,-&%yOm4~h G1PLǚowo5 $3RFUBtXrdLdc봴+K<c1$5 duT'0iz0B^^yc GhQzvD4ȷo/֩][&%:~p<(Eq O1||O]R1 +P/b,[YM5|@#DMʜ[sNtgM}jyAEeOҩvqf 3uh'e,fQf9ܥ˪X`֤ϦZx9pO=.b#w uTklGJ{æ|;ncFr.f5XseTC>^aV{=87ΰHSf[z)k:Hč鳬L /d/nZ#j- l %*\`%Lf;t̂LnJwZ7iwHvCυoU}o&ȘE"4k.9hKR^La _.P9`~L"w2̄sr021`񉥁-rLҀlb zg:js|ovfҿM9W"f#C?@V MXNl. >f_S=<~RBn·;6/3>J| q-N~.%* nNJ<+`4}Zʧ XY-72*I7?ڐzH{`ʅ%ڑ huZmՈ,tvtNn;ir>i}/QP$ywmQ́Г,N%IV2 f9&d^%KY^59K;Fup`ZCMGh3]tj lr@-:wJ37|j7jv9>OZ̰c^^8`Dlž;"&?<]m"/bsbkn8fFc]@Cfuk7ݴ֙} wr뀹T"Wq4MXP..ZpɱܕPff/}4b (JN7_S?5$yS-G<$gKNOeBj>,4ʮ$6oCګGTr0 =#y :\ Bv wϡԌ*@N(sX~kڲ.#ihݻ^뢽=; o= ңRhlhϼkN%Ӳj&׍zדS`MuR}4U?&mw X5ajLA,Az8i".gwJ#ɥ( :G>":\TK鶗-XkD3$}G āhL(L.9qtDXHv5Q7D`"s{;̅b[J,6@}iWD3!1CŏNNJ\e?RݾhOZEw&l*vLKs /h0`GQtų%)ZCos}R7QĜ3g}r8$6|xN͔Ak"YWZ"M hY8q|@'ӏ{ 30 mیFl9\N>Znš_d۳uQTG',79tA[>M#wGەUqmnl+[wm搙}EnlbSuLZʄcǀyH^e4KTcL-W"P"VAq[oawLVmAwL-iy(')o~ڍi,6 7-f"/,Aővqݪ7[܉` ǹ/<w 7Ŝ,1t[?\a/P*ES<޼.PDJ-KzVaOR4V!ۙʔCyVke{C)[)<0\e(F[өya],Ŷ+ox4Kid,FKvc/Gە`Jyld 0W kiVK|N_$8+b[^Oɒwu?9G{yIF>= tX?&(J;y4Y`Ul ==UVѱyUkֈ:`'o@0as{K[ʊi5֫/,|n}}ZGMK&tpU%ݪ=p[8U3Ԝ\Uy`~&nL#q~l0i*7 ËLcxuT%s w;Xdž+o%M"\ վsDIyJVp-[c jCɺTO{ .o==:I`AH0]$m}>bhpdެ8OJtkܿ)FC-/^Yؐ_j{^]w2y`l\rrsa7fiRX l?~ѷrw "5Ȁ7% x9B. qIXbBS"ٞWuDH\2#E[鶺aO* \^̓012֞ s$|][Ϭj,5{zw+|}৚YiHLqp2Ga%=%$2剀)v13kg>_>,*d&]u^M[ѺɁ}; `bG&M:Rcpۣ۪JҝęX\}Cp/Y2m)s6AJ{ $ ~Қ@X!? J=fj&n 70d)mxׁꪀMOIt촻HZ_vӜk_Rvh/v ߌbR#.3.E BHāb:/JS#ϏHJd+38ûvEwQc8>\1~r7kDd@xe]k5+g9ZY r W`R_ dX?u㯶QpbpPFNn/G>~S|wb0|<{U=,ot/5)=Rom/dVj\a#z 5^6Iϕfi\fCZ2 ψ}ǔnO{o J_[q1Uz|ev?X6y+OڡΨG>&Vܦ(mlv$PlтDVЭv7 Jz[n^ _Y=8θe9?ł 9L X< 4[:\Yi2\:BD;yH #yG$$|\6וØk̩'{)/kZ_[LIJnЎiҞ> +%?L]v,[UKvRXDSuSO8\4 dpe:!l^ &ºQ'kݬ |Nz} J\ R!BݳUȢ'~~] }K{_cs s ]\ֽ܈J-# 2IM*9=5p| ZYF~`ا $ͯ~=h7ڃL.gfFcv$E&R~z(+P]TH˔H["2!ykZ0QTW*B>+1}rMUejE*~q8GZO;-enX.> v~㫠fk0,}r;F5]7|9vڧYX5X;W nTqR6</}Wt2_$YIN{(S赮Rb}W< ԎE7V6}]=)b`V B$ y$.RcUFxSV=ePW!} O5*1q6:h0.#T @glA fjz`\!XG3T$˓hmyTfyi0سڙ?ːZsy Ԙz<^MD5YyW' `&y/oi{pHm[L"R2)멅48=HǐY(3[O݇b3/~;WBeu>v'(K3q+UD %X;M&opBu],]S'ys"_SDm*qoB;Ċ?n|Hm6^l܄Oݷ|wA>ߪ߬q`fDYJC\wX3DӅkA)U[a|~*# FCk_2viԉ*7U֏ZMb6BB҉w{%Bgg{MҸuebȳ9ml篛\jZCBA~46oM*]oc $ *&˘ZGRbU6Efm튫mqۭo36a_¿ALDm<ݟt1qG":B3r:бL@Q8UsYz1E&5ܤ}UuiBCFY ;%h :cGUb4xG7[fiKm2tm?$2)3>\=nx.SE谁ga>|ɰ6-l:g{*B$d12Q»V-uDcoqVhy#)_x7w3A3ǎK%BA 5N|N&++BRFU";I a2Q]o4,ے)ZDϰk N͒ q x҃qٓF/"fıfڔB&rɋ{賢$41k~}G42* jRu7˪:(Nbl$8&UQ] E՛INtiڂܩIÜm|CblunwD*@T d$^'C{@¢݁b̉s+Yy7s^3 endstream endobj 1612 0 obj << /Length1 737 /Length2 27331 /Length3 0 /Length 27881 /Filter /FlateDecode >> stream xlsp͖6Nmڱm۶ضm;m;s;35S_,vuu7) #-#@ILI@ CJ*hblag+blP31(L 0a;{G 3sg必Ukc  G9UɅх'%  ,'!)+Uؚ8X] -F&N&S;Gſbrw&fhgUU +  l:;qcmbhMY7ekC02-&f0M `H 061Z@!lgcl36q {7GI l\ l,=?ښ#-' Nb&`bI?C?+llgkf'I/.(Ao@l [o ?g^@ra_X ٹ{2hlf\wa-q[US 6-t&[4kۊW{f%Eܒ1N\Gv 3W=^ѥy3*s N}pyuTΑM"7-/qwM~mNY5$8QMƥ/9'9Lp(ت_$h2\Ĭ,DSe ( 7j41⧹{L3N%1.\wzWn2J?G@Aq_g ̴lm*ҿ ;Dăo $6'#fc>,"u2[K_NbG~k/v)\_˘ _}roj|ZiY9 յ4 ()DS`3 'n,ؒK1$[=#'{7te\-UPN-L3- _Pƫ5WؽJ\ЃscoZXf&U46tڮxZ*g?ioS-y׊Mg{89%@qNyb*z K(j 3 \( ́V(4pUO ;< j\bVR1EA &H=߱-2ɉm@]S<{\zVflBhz%]y: ʱGɂОMT *_^~`5Cjj}K:l&S&,3L]د+4cʂTsuZs`?A>h%w/n߻@[dcG QX L E Ձ۰ƤZ/3ᕂłhs'8"ahyT9P;+}tv-)/Bk0'o=l8kE%r~ mQ܄02,3lCHM ,ZP%XqO/oM=1X4w`U'D]]ٖ Z"ش|;h/ؖ(iB)wy4),%|vD3&6i_PB9h}u=lNǫ{Mf!;Lw*8}BsT򤠒Isb .4GZw[239̜Е`73MN3~Aad]TQTpH&\ 77cd`!p)Nm{ˆ1") m[{+xq\+0Sy9z Ew j1D4 {9-~+nSJ"qjdPe1Σ2fYɼ\>lo>G1.U$&[;ͣMAq{:y?Zh;hb55JりrK=\-XnqD$2Rz]qC!҄UW^' _Fֹ2@(M>z |i2nBF}Yv5$!4E8!NntWNgA3LʪeJ)d%Klt!t;Up`˼"ಐu.`/,bonLI%x^z6o M6mSι T ҽ҉UJwV>X %\34]~N > Vaqh+b*_>> HgftMrbяt-_⒙8go6j{><}C) I 4Qd&ϢH͎L6ӷ*%KƠ"t8tS{\Y;-B(1eȕh;_b"] ]1-ri>\banɧ\ G@:vN_wo\[$Gf\\.{, Qbg]E଺vK'hq6 wFߪ}<)@rzKg#jC`4Ф/"^hD0QBg ϣRj(,~Wu󖧓Yۡd:y)W5 ,O{.- n^GHqhOpY (Tͥy|xk]kdzM17<e9t{]?? CrQtۘ^~O=QԖb~{ϟEndw_)_=ܹH8Y4%bxbM>WSc zA̵PvOKLQCLDWCWZK` X_LbI<ɲJ `K'Kp㔋q${oe&ˍO \5(QE 6>#bJqf/8.WVX;EdXȰ+|+2-^;F/!_sFQKZ#TA$n':>(8j6&=j  ytm*;vk%h&f0Ok61oΦu>-vRؤmƷp?Qs-8GB5+`j҈{Nn;aԽPܳ1uӼz\A TnD_,vgX'R%=~ 4AN|'fȭ1Kڒ >s߼0RP%23Gyn̓n#a:E/椲å6}JANjbғue #lسr-/2XX$m?*qq\ӁAFK,r{Uu6FzH-6ș2&2 Nefد7 0e̲M_a=9T~8& BoZmQO|΃pVav|Е+qCob (K%l,B;%*4IoILb/B7,6mVFav ϞɱOkOܰ c|/O7ay+U$O~$7*_,d\jҖZr_(`s93Ax_AuuXmpApQ쯽l~aLsaeElk&QDR_)/ s_jeeZ Fvi lIy쩁@[Dvd$E|`#`koɅے%ef51i}d` *p \U\)\K!~, x8Ճ#e8O *u#g!u`2# GBDʿŭ?& oc w6% I~F0f5@<S!/c@[4dY@ؐ& W!ӭz$n7 d#/]\lk@!8f:Z3EOΚzwc@/) ~:~i?a`|N#".$n|ԍ5i&J m5oAr:15\;4M)Өwͦp[4ȃE0n~75Mmf؝C>:4(jTXZ:RH1%"Q춝,nJ%doSQ\BM*?}"j2=:Xώwj^EPxR.)P5Ebϑؠ?y^Lra$W @Qwwpz u)C} y(y5gzE$]ߞ4']#>FQ5i sR3bЇԣ|3VӮ\YٚЍi2>5tU'|*NU劶k{e,A0ό32'h蚨@2{(.)Į'od: pW)YQ3iek /? xnOFa[>gTd.>̛x_W/. ]/{}g;>@u2ҒIaC3ugMŅ+)\um"d)IdsJ5#GQ 0Tm{>L6̤lC**U;blCZW WF %WPe-kz/trJTڪÎ+%C"c~ȘA HSd:#BܰwV!J#LXǧJjG.dE,/USu 0Rr#0))?m*WڜcaUYPvױe/YZu|Gm.SaAz)1'/Tč kp9{8&1 0ֲ^:ҫ -'7 VPBZr Lg.wc#kޡR,Vq=y- ,M55q5ڦVaa;U9,VwwZLJ*Iq cjTVumd) JvP\qIQknp_CW)hJs e=jIt_Nb=34a=&ռذvBiL >/=ߟZ ^{ v`Qsqڝ=kO\Mk69JqJZbBpb6%zO3NzI<՜bOXT<#f"x:" G99v 21R?@4 Hه|+#s۾4ROaS;"[;ފ4K88[>jϣ&=nX}-U # oyA;xWWˊXo{ʁLs\iJ& 7 _7ΗVN[!;6,E6 W+hq<ӑ6䁈} l!OzHz3jlkɬDӮD=A/}J9߸Bd SYpus щلF:'Gc<.k Y|Z;Qvޅ;n/UhB3I_an Ksl>q4F&~f4ƽnxҮ(O={qAS6ˑBi<1s$b%zKirL,7wXy|glG'dXmERzn nt\۵\0׿ nV@F#徬gk}Sפ*bVo0^Ee(V{F E:dT»),#;]'Ǥ6ejo~P(|FĶ 6 ȯi֢JMGNcg0?hi f(ٕ24Uv^m6 ط) S7H/- pFJ> ވ$cMŦ5PHRT:kY*_?]#[((~wuXsze\\+D'{"OR0!NP:PG5룣okt r,yƬ&#SP_V_ޙ*I2R5XPcw񐹩'EP0K34paҔW:W\Җ7wZ>x xGّ%й.Rҏi(,ຐC~m77!<'Uʿ2Ҝ2W ,~ٮ+bvmwnBh= .__CΞ NYK.5Nf 3ww sKVK0|WȅCM kp|8N~"U\p? no73O m`q"o0}zz%dwy|Yr"btKn±`Bm9()G.KS'<7[BB$HbBj_c *rjхQ7G׈z,"Mp}կg!))j5]uԵǾJV>|P"Nzos6ywH, A_`JAR DcEHB8c,Fߨ^'&䖄%@pݢϦ Z6Ⱒ ЎFtgrsiPt'-i 0{ߨ}W,%`%T(P2]tOz;3iFcQl%UH '͜o=r4 \B5,<{k\"j?aɓ~AqLxf[:q`Tڠm0AROKXv9.SQ] K("X3 Cש訅^l,Htq7UCB->PP0^,k8hG6H2KN%.q@/#IMWlMaiD|ld]3դ)ݻRƊ*RewǕDYWE4hP t1ZO%MͶaF_$4imhծ e_R"~s_cl.,3a V<am%w gP+wZw]@kЂ8d$ ǷfmZsjSAG~4`֢6\aA<0)By8K\u tq2wdho0!l%/ggLuSrjhDdhS_n~5DNҏ>Hb%@W@$xcx&HHl@4ŻAV FN?\c)qc~IK/@rzvՋP29-ak9t]0># ܪx1hᤓ0F^8Vd̜Ȍ v>L p8;O8)p!:] y@ALnhT6 I[SOO }@AP쨖nr<}SG,)!1 ^Pt_3zQ==EIV aږ,P MŗA5y(TJp>.9^gL7J7qR@1X`9l2xa fnXFu|X QT$^DGzg-^l@>"?Cj^DQ q 3:xk zFE*v(ngqK9N#On#{*6GTk YG6M|EŰJ2ǔ>ɼGx*$gsxwL XINvSAKaYZiI`#Low ~{cܜGR4]b-:رRYoaP2*m[laِ9n 5OO )9f!CW-!FtK~qY0>di^6%tDN@BwcqYbY0-KFMX>#( 5 `*Iit82CbU:x?&CjMU}(.ڥDG-"NgX} }MCK9l ʦ Zyy59k8oFj@C">{ha]* n;A bMzv8ҵ^-axLXu 1#W5d $!!+.bėaZ[ h6a{rWЙa@AԛglEt*hdUxdIb iH)V5S- ߣA7 Zl˼Ҽڰ&(Ad bW$9K/8}.k*3 _yƦ;7f:Dùթ܌܃L9' e Rͼ e+g+G%7i&߿}빖4\YUl) s ;?a YR80/Fۑ(msx?(?|'Ӎ')  ofi#)x[9ejHD.nYu%!9i} æ. Tk ypQ#@?Cy-a \/ {kMLLq^>huh[uͤ TvFܪQTO&66CzNojZ%N|Q8Mh ȉd6TL;ŊPZ=: M{^GTQM+5}ücUB0AӂÉHppCe cߤ7kI1!؛=*2?D~Lw'xrh0YOP{06#yxL oJlVS#f';񮽧A>; &R7nl`}Mд+Ru|fnGxڹxKWofX&Ο";)&9VGO}uehӲhDJ#5 0Nc( 240k)qiZ_ؙN)d (aPP~e˨ 3e"_843wz%><ܭ*tAw"u V.) Q_7]zcKRbR!|r~a 񐔔d5+VN,_~^҈6;{a&oe캝+x uf)/kT<.T9 cÎW8)Fz9*!TL<Ͻ'<&˞#)M'+a\}"k8QIrAG-o,OqB+ݙgWYC#'7>=4ͻ9Nعי8m P3t8MܗJjBK sbPz/vObtd˩`'4AHdT,h{GN3.s Oxg+~/75VsB!9J. bdm<<׼S^æE\eV};DkRsJȪ\ %n k`e&˙w x^%_ *~Kk7$WVe%e8!O ?@3B>R&/[o7z"d ")*~EoϹ H1jtǒxIKr*~cVzѩ`E7"uoQ00OG!Toh+X6%o}hEȷjIf.=J` MKZCv'<fĎU w_LJv O)/J=u̫#fkNt#/ ,ZQΨzԃu/Z%|7g?R7wN(o5f-&y9XL \֜Opk%_vbYvl~N,)#SttWg?nȵ"b;B+'ʦ{d9nҗjBݒ #P^Ӗ޾-W! hqqypʓ=Ld %,ۍ)vg*IaZz*XgWXpبzli(`*1Hz#r ͺK{ ;in(HuxV~3.U1\:Y }#۫2\ȑuGFGN(8DfdX#% PA!_zܔ%yEha&YTQ(5MXT1x+SlLժG2}6 ȳπiZB3fxhlGTtɸ&KU]lj=m?^ɫ)89,o4 z,GsrsRkX0ӛYm,;Å-ΜBź<@2CD}x )S1y%d΃B |=n/"/]@qLJq=.1 .29I%St1߹_WfSh09t ڔmyDBngˈϢYZ `Q(i[7;Z[ q4'=~-H˄Uj7ԮMpqm"RâSU~Hfq|QY ka[=VC&tad ejIۛS >LqS1|H_bx2SBZ{Z''?Z 3D}`GyvNic !],F)hc'6 hVڑÊQ㶍U$ءQ'}YdS. JI &8Fب]e~< )SuEm%= r\8,&y9."h=kʽ/@q;rLg.Ƞv+z$z`뙶4x_ aPs2]e'd:X2y^s!hA"jallSdil֛*0Υ{ziRN8\/`MNx "7Q#p!5yZ[+k #Owy㼛 Л̫T|"KV> wvf;qn1 |V_haT,4OUV7p{e_m/[>dns4]j~0,Өظ@ǨVWfҳa{֌PlBnYzn Iǂ+U=(GkC_ > XV^QΆF&hgYn^X1k\֥r8{>P;~Gd̈́p, *Ef*8a4?~AgC4 5vM\ pwY'#Y8o;@ X%KB0iг2|d=~Ce)oyPAz*&h7E ^.m8x49q͓;Jh·h[nC$/pB^x#VH BBCw_K+X3أ͹-D} {c~cu'yCõ6 QnQ^2#W zdU5qԙ"|' +ʐMf;j=~'>&ww4?w-{;8[RA|RH4OVQt}܃Mn"D+P!r%WRLW@]T$6c)|b:!h@6(7vNsp%Mo!([p?@r 3<8ub'wR\/{)ɴ d}˵Xn" IRtք/7 ;Ș1 ~ӔlgĚ ?:!AAaHJrRD^|4ʶ/5@^z%JQ`Yd_gwR4焿}oYOc]p^'3,խ~ep/~cyU;r\w ]zB/_J?\?)@΋5i@bϖ&U dڤ'2F{*P|}thww, =ɏJ\kJB`mr4}>m dbCŞ/8r|t;VY86ܔ@TFb{~R@,?#Rj*lV~;>N?B WԽCnͭ@!Լz|)@b"CYD~@ c౓zݪd-mgYj#.uDौVߚ:Oj ǰ$Sx@$28I\^70~G5cBtlM3:\t 8:j碖e澅mt%)6|)hjDQE]+(U*-`XNI2L}+Qh2bK#fdI耳F~G>U;oaT*ը[U7q/dS՝Ǫ `ZQ3H;+́IfZ%lݣpؚ'ԡh|t v֎:GN3_j},1swd8/tHRS37e^c,d ]{/|y*L](,49 +cއ?9nOUW|bsH9;M).^%XgY=rXv[|.$0l)&cѺ$`VJk z|n87͡E0.d,ۚ⿗פfAdO:@|?8a y& K) Nˎ n~'kMS|BQe ҹ5mTHu!Q@3j3NDqsXwJ\t_&Q9&vV:[SK~yySqYab'EߗrX )ܵ]T|`{ W\yOwab?W\g.O7ZUP"/U* qQ>'<-OQ=ʃGL"e!r k0 ٜ ] c*`cka X{I~j5s%SOX pц6d;~'y&{\o,J~A8۸3*tvi>"=; 1Q4&]W>$ y,H , sذyhjj)Q/};`\+|ZOElid~f_]$uPݺd>ջ + ]Z]p;x5cZvfkun ^'bAmO(Mm&\4]{'|Es(h1CgQ?V}Z.Q8w!dC  D7ū+*:=Zc uL%Ogγ׎&mIUjNod%n/ٙɔ@A0 |=RR(DOi}z<'VMefjaA=Tݶ[q;f[3G~Н_ j۴0ΤXZ%"903 7N} 4^zp5v(9%cW2v"coZҭ$^_/H0*Hoɗawf\ 6kr+0y?޳G^ l`TشK׬kʧj}l0( hCRf4Yc_Dg%,5@ Z aXGOa%J~D!74ͽpړm|"(pˎM< ;Ki(ܴY[K(,O*xCeLCݮJdԥ72ܝ+ZykE]xp@Sٱ޻tyTYsHcy>͌p,>LGb.CIdD:; ڑl,5wCeRQ>(LqhخQ366ۑdDۨ݌p3[SA%bPzc 8gDɚv\Zr!&y_(az3x=N& `~u/̑@e4G N) UK=O_h1ujq=Rװ$F^b1g}7rSh 4̶mxhGjc0|y hŦGJ-KI)HkܼH-v<Bym{^r#֤Ϩdۮ;&fLZ[ĈYRb62G@cnb؟kڨh!UAwEY$GU3 )uFg뱹!N>L/r44Nj:N Z(j?~Qú.2 *m'|!G(@&՞$roWiREDq>G)aZFoYffZy5LMLt&Gu[|֋iZudM_3*g gZ(yZ.mjQ|#=xfⷱOM6iN" Mb,醥4f!մUV j OviP_b[x?HlZA{"+qs{z[bjF`bۨ}zVvFZ L7zmeNx𣪨&[< !sh_"fk5E~.}?;` m>6AG|6U+Ox-lw;43g2Bnl$7v!P1:gi,FmT6JLB‹W Yjs!ƍ3@~Xg0+/3}w AsyFm%`h=^]W^e =(S _/LL01R>j1TTچcjy>[.+|QJx: |hx)~B Rf7GG>\/X79:a~+yuI7kQ&K!NfB`"!XfGIhF:te#^ƴOz94Ggx"" :0zzQn 0!S`KB_SLF-uG% BJdOYx2< sBK7 E50vZ<0zjE"(Dּ/ր3.LW K3IQ ft =^ N2O}wFdP _ioU[_P7n-: "}OA]K8`RTvg3AE|`Rapz/cМfNgB)Bk=w wuR- '4:Oh$Ȝ.S!a`2cm6Z ʝ䣀6B`R5OEs[ˌ:^7K7-ϫNo8iaTʚ[ MB64mj-k Щ"{Q ->gL ?d9@1I-U@!! +<  qv&">${?{rS> H_?.SLŒ—{ZUT- <+;1C`/#?;T뫩jm#E}˿u+(t?kd+u6au\:4<=0VXcƄ6Wߡ~ Rӈ\ hv Ŏ{ 6YwhOm4GO"smyD)ePGcJfCVwJ ] lLͻAc8IZ'Hn]5bO |Jb6}%ŸvcHL@{Nӏkw8/K`!Ybfrtޞa7q'μ 0ܶE<6nDITp!^[rsi)4Εi㪭T Ўw1 փf: 'ͅ:_̪ 01œq{錜fvpyZ6Fd&V3I9/ɮ۪GOB6IC3/N" |?d-RͮF; "!:QV=#_b{ؐL0bslTd9sxpG72ZA3`MDj_I-n_f!eݪϣJJ(Nm` *8}P~ʼno;vWk+O{yg˂YJIX G-II|n3͓, ȱ|:lqSfSk0ﲠEahf~%v>9z& ]Sf"*W#-5fÚz`~i.r3d,fj~­ID9iyCڿ?_tQλ)DubTqnoS 5Rtx=IҮ{X5y]m sIRe@ as R8j(](6[9˞îSwO۸>$Ue?&F?+ywG0hcS_6b T8n'`*Wd8:|; :9 HJjt{ْV{27zG"PWxܸE~G%0jY%X)QIB?L\ x+bM\dsI0GNSY֑wbD'(M$^ F2aV*psC(:[V} 頑Nr0!  pIǚ V=)u6[H~n +<h+t˞WZӌh[A!GlXԵP2_ՆObÍ`j& 3R򘁅A*bnbgqI1BzL6xӔ!kԋiAc!Y/N_ÜX}<;C#sL Jџ&R4X|$ĝ5%0O[g-O!sL _+g|MN^ !߀u3CW# Ao!>XyN?!w}~AaqpI,m;1)wf+D_y Z0[;::F->y$4S łf) ʬYĮh1r[FGqLdV/ cQx6q2*4wxn Eb&),P^::F!`Tcxs=0.`մr aŀ7 Vɹ烩u> MGR8MF(c.}"/6MtR_97+3 )NsEn(2wS 儚2$y)XGD(˿n ntt~R7,G잋nT 46eEiǩR4HA4d eF3T'A$(1Z[P<5ރ'TaC#ŀ޻T;`;l릣Wsq{$|VkerZTb`[cƆkPSȮN&M͋d̷AR,;A5PW_#]o*ҭ3 )c?[  e&`FfnBTFKRV֗Rwv)yt'7`A]LN(сμ? 4 &IE;iNaYw|9< 4PK*ȥR+vg*@VڍpK<ے#U67%zضV15Wv&LPe"v{n4!H`t": a =$?&RĤOy.GVڭ"/G\9o`e*J;Rpz!sٸq6Y݅~+MvغA):o7%|9 z@C#@./jo*A)g',kH[sxi(H׿}܀X0-wNH9 Dd dCE2t%]ɘ +}i=ٌ\2cգinA&2YDm;7H/ǐӳN 4ⰮH{J' ɨ6ozX>L9IG.{)IQ՘3Oz`nZqlVS,aD'nLXjDb XCkMe%ݿ}*Z[ tYع"Gڻy#˩G[{e`hhhʼ Bc`8J4t`e 1!~jU]e&e25 VmmjE50y^+ot-T&p ,U݀cmWoF͝߻zYe]hI)m]2+K wPA).29}]ʩnT4<OGX6[2æҡF'ocǽ@_ϛMPTeB%6-ϖXCI."2-([{D+w ?)Pflұ3E|{㳼|J 9Nf!W-y*uǙ2>^%у&oqa*7 ci|҂K`HާaĜBB|g*,`h*{{+jQ@W zxM{`(}lڍ6%]څ%ْh ;) ,f 9: 7\F6~6b)Y@r)0uH;DVgb:#ZrW!٧?NâH)}Ez{b9#9iT5{4մGb\T(\#$)<^ۃs5{8bf.ak[, E qdE%x0ΛQ[!@ι,:>񷴘Y<7&2y M'2/E=ߜ)@r&(\o"IX!S@x)ԯuKoG)jN$0i.ڄIV ]y [R }pU*H~0ʂGI ޵ȱ>@ҷv؎p )rkCªAAqWUHf7>TG$ǶN4UYGR441d' ɞz$m"wR|^Sa!i/k2Ex~HTDxgRLR+(GbK=4^ 6T\+50W9o? 7aAݷIΪ^(Š@~ W>[Jͫo䰏]~VbgO8eY =?8Rcx( JUsKAmu.W$&2@9r"UeyMwfEj&J+2r@^,yp6P-H{HE♵؉׽@ZFUde6;j[6cOygz[Z1ƹ,(yPTI3M./ dn3Yp1[QT?oHҴ&0EW7"ۊx}*!.9U=xf):sGޔvy >&Y_p$-Ɨjǽ+ԝa.+`zlwo:gܻ{=8reh'S{ϵ1%oX/Z^~d#33f TAhǮJX1󁙍ȵM1x0l@coBm6mґб̜,_pem9 DxBб1'][hnf|jNQp ^7*4E]s΋X吉6w 2#Wvvs5uG ZӓiPca=Dr'a}t2}1U$G,qg`<zY'V$g`*lىpۙ+[s-:t; U}b]"63+CR(.g=:(Jif+OBލ#OS8]Hh[!UW!wھEi94lPdESI+-md8_Bo#guC-1"DkDY m2UtJ^<0KS]c8$' OC'F$r" ! t~ ~\:m@ Ԋ.~:)\$WZMgT|tX"uMLFys׺_wCSsc-Mc8KI>^>\elO X[JЖ<(xr9N'E^HlOo+ԝȃ̺sԖp YJW(rQׁYØH<)d(0q:[nTcLmkSA,ԠU`琩a@wԇ< 6wl߸_ K3 endstream endobj 1614 0 obj << /Length1 725 /Length2 40116 /Length3 0 /Length 40678 /Filter /FlateDecode >> stream xlcpͲ>/mvb۶m;Ym\m>Tui\}M{zH lU?RMLv31Pػ88dMm] l,=C2m?* '1 wc vvt1Z?g#kblbp8Tl=gR~R"ZB[6[ؚ6+X`kYgG w6ݿJ_%%$dEefc0289|\#GG[O.]LLMV쌸-ZB}E*ZaV4؊W{fD"l'.smO;GfGQ"N 863#5D~Z_6!"D.7;b!/7hru.}G>+R0+á~Ep-q_W@yT#?`v(tzsP8u hQs^oK>>ec/CVmpX]Way睈xP>L 6 H }yl'-bG~s/xI6@ts2&HW/^MKoW;="";7r񶺖9xh q&PqVKҠuپGri(fx[;s@g+Y,J<#0RmlыĤnMeëLO(_d-A(Uʆoִ-.N^P9Ņ0䜞9ŅZz.̴@st̘)jD YW ռu%Q' !)zu]Lv3.,qlYӛ,i*DRniT/Xޒ+#32,Fg"ԝZȌ Bnw&5a \׮9ěR\X2 :VMPἒA %ܗzSK13u=&װ @=UJ w˓ {&axC}qNLh8cWc%ۧ #u=H_""*FY$;43Oy(SRZ4 #N *,j{e ;] s~9fk{jU(UFs8t.{l^32~8<#8R=K_Y1hIaɢl@H<\AcI*ݳڄ,d p)!\ju6L/N5QК1fV&^J*QgCne3p6{ǣUsGbA>7>̔iGrU}5B{87W9cOGYI,k6HC2(2˖wb;EvҪ?W2\ڡkƅ%TG%`Ievw: yZϜnC}%Rؗ>u"xU|I Y"MwbdBSgnճps>8(Kx{+^Me}^4E)Ds;zys:DA7J6sk'p5Wnʝy< 2-$N:7__Qd5*Rv?'mJ6^ ׹P8U%?>en%ф'd*#C0Bg%Dtfg">o4L5fYN,dg+-{]>'iGY ,fHAD 1#kk`KHAh / ]jԁJ4Mpfeu^N=~Z ͜lPT'q ¦VFfbnBaR3l͌g͐e5T^45kDi%}[#*>%FQ#f8YTKJ?5[@{r˒l(Z $y&då,L̍e+P$ٙIt |G >RdHK `ܫRt\ rfwq6bn3Ylϫ1 b$V`9y5$y4s!r2]ej4TEHS_ѸoWZt r[2zJηl h$\*kRaa\*|8E[vL. u<-aLi,=x~JaSSd*4<0VیevԞͲTge?2ڠP,N.yȍ_\mA)Bo7V`Ɩ֦`Du`[Y9w rTX~zP2n-W 'vwXJzډ҆v$sdouD_+[0c#OLvEә/^{SAU=!C ,4;w87WyVr2Z!(H\WCxl@to3e;Zm a6>OMoj;`K Nl4rq=+սPE,^T*\bbs^4lc%mv"?jhlE??:|yCChNd{6qNz]_[ /'* @3m6+joٌPr&¸z-^]j2TQG=HYXT2H '19@0vV,2!NUv OzhULkذ1/,n2BoR!h}P$f7<+PAdcm8BXޜF87uGI#cS0pR|PF# 4V=Ǔ7eIrF_oc!$8~|B>O>Eɽ%z7T[+Fچ=>s/x~Ea nvdXnWi1k &]` Br4Nn$4m- I)ʥ(*Oq;X2}odfm4R _p!^I /n)u&6Ux`zpoA+ m}1$[ߌ\uYTAPyer~B[I_qp3OH |*Mԭ[+Y`5`~y I[j?q^;/7La*' # ޼L.փ 4vfF8hI~],>s/HFPm֨pN Tݜ&BB紉x?/l.*j.W *[}/L4sk~Ku& +Ж7c`MQ-E$a?C\TϤoDEcÞq#T hjԚVֿMpb/7C/md<SLRw v睄?2 Fw#vNŸ́q"R4vʀieoՋ;!GP(F)Jn#iߨӮ|'`3J?$E'~9lB;'YXej৶/➚;F`RvgJlAzJ`z%=/tK Ķ6֤G[^1_|:,)+tv. ZJnIϵ"hhxU͢1;(|'.ه\]`RLx-3[ql˫\d54cv4[ܖY:J=Xmi,xwǗArgQ+[8t &V7Xla#l|+:cow򆃨roTAs:uk,6m2_QS+.5e$'7 ћ7Zm,{?A'š(a)(ԃY:9 :6'i zu7Q-P|=pظR @J#sRjOKP_5tn3qk#O!Z4w:FL[JR$3$֋^Xj ǒךBo޵Q%>G~wNk]ԋ.xc,j1+TN™3# eߚ`ҾV:5cL^hmȤ kV}qe3Sjob|YZf\#L=:ep;='3xꇍއ=J`~'Rn'm )ݧ w Hx4ĐH]cƒ;0m pW˼a!! nqs<>n^k!?C]`Dm] /wÓmf!W_ez  Ei`ـ#UIxy[9ZCa $pN !u+Ac،!~tb0l|%'=vD-;CtF ' )ܝ^eb<u IpIߎ\N)fNmqES0>ε0dx ZCj it/ -"ȊքnLo;:;뭡aj+^PN2sÕh(Igj@N;`METbn6 @?3j<轂2 PȒnMx(doA{Dl NY72I|*d-\[TT =Ӝ4kXZY3p +$-'R8^.513}XFy^.5P\Kמ3KOF((yGta#^WyAPYlH(ީ؁bqu{Bn)<0!{>q Z3i^uTF~?ZfZ5VK@0fUC5Jot j|#Vd# :l!͇Hupj>.:/`nM7] 't_ߺּGVKVC9ZLD}0V8=!%#KCVQᠱfbȓф':V>|>5:wm֌ M_{f&V)rÞu{@]MnP#L<>ƾbo>w6qT*B.&9 i~V=+^8WČƸޥ=°yrX9 /hhy ,+=t]vC%rbMȥح(M<68s<5SP l{Udz8Ηjc GӢV,O6&n8%\j,E#~&6qu*zbTC UΘ9Q;b8_6RX鵗V+ǂE*U[ՍnB( /'"JQZB }ɕ+B Eea,!#jًGۖAۗXWŵqW`F\#g%:.UjTPhtz^B |?m9~ [CGh$ AA{Ė@ d kXr;!O+.&1k9~'mTdv{ABM~0@3K,_"E@Tӈiv}9.AJ-!+m 3hwLcm,  _`@JEL95.:^t|26aO\'^j(gD,~wL1݁0ǰt0D\>ۉr4a~/%DI6hcsi:.\A.[T$Z %Vy U[>VL)̩ju* L/**ґ[*X"{HDP)w|6S!3']W$ oi@̮Rd9Hz{/|H>^kk'G4#=}GywU^۬Lݬn;e6j4r z*~%MnA>hjvsGs!%ٰ6I2[ӪŹ(Tc X,[Z $Z*:o2>`s_νxⵃx.DzKJkh#Qq[^M}[[$AV 1wScC@e*C7 % U!w$ff|B*:.~NSNH7ڞ=D[N,LlWackr"`7ܪO po41UQiLU};0NWQҸ7jB_"F/ HVwkBsHZFw?˖]2>;yŒ/rrIfnvj徙a Ƀ!;,E?l\( mhc,2NU&vr7˘^;sRg,S\ ۅZ 8GY҈0fߺJ"5c :5Sڪx4ݥUY/MvNlàjqImlj)ZZ՗la]&k ɰQII~>N7:<ڞgQR 3 *}1>!+F?d*?Q7; UeғU=h~ǎ>] `dJ3 L+>^D+Xzr1CLUCz=YHuL|LHv$Ni7jT]B&  9Rs{WL#e4fk0 >C G㕻4ތ4^OI~[27KhkɾBgjXwǷ~nό;4 1ÞrVGfҁAwu!s 83ĕ+P8*o.Lmm GQ]}99]!'j$yKo'9xgNm N%ND~͝`j Pa,m':(n Ie\d#+n=|DZڼ)ĥE_?g๩yB.cֲEf:9%}wiMA22fnYJKa3ԗ!pZ:n_Dɩ՚XeM[@r#}#}{jS…DMl`cՒ{O=4}B i۷2B"A3H,7`i)?ᷩzAS^g'zZ \-9NmXrZϺR;&T_'љ%Yg#oQ scH>;[ (I2Rftڵ3J"XmCwU6i2OD¢OkhǗ8H֑2r@ey+J6OɚF7Kḟ|>X(IX?x欟"ɉ_&SJ#!1O1-ĿsEQbT4Ȼ+eFXGh1Å;d4`G'0 n-Ma2_SHLx@Htf ~~:imk8o%jQ ߰Rux4وzzX=_ddj3U /">W?iaj ӄhBF ѨmnE+ɡ/XHN2L¬lRt&+Cr[C8nSI*:S1:p\ Qǀm:ԼMa %-;GfGJ!t ְ%t1C@|Kݗ*:Ad4.Jf\wKӬ~ *Hk =>_*_cWä[lsTӱtkuS1~{.|-n9)kONa~-, SוmR#wOT^ o PbC =KJN:]dA@(N3r5|ڣ@]Nȹ\Sx|'{Цin96,RP\X B\~ނRڻ"t}S~z@t65).ױ㲯>)$W}KqbF3VuͳoOr8^1g =둥JҫghR#.iY-!h $5|6r\&|+fan2ʁ_pk8+}3t g,D>{m OcO߭aߞh@B Nx}%V x+61<t@lv]K`ו76XM(+ӭڜ܇\f~"lUo|uǑX{ߘ.s3B0VL'd_l QaYN#)?\mAO1u٣;fXn}8/,m>Q",A YE+EڷOlB\HDjhƾbSoMSkN( Sh=Gý ^a)6~cvCB˨w[89F_6^%g~JpA*0+(}:%XʅSv~AK ,+NĒwO$\*Xدt>S/7ֽ(ϼP7K*P,Cvm.hֆL7eIxBVV)$BLQ*~JNsX4e3ڱX|#˻׷\BσE 'ы4w $a>rpJ[eQ@3'IV"!TT fs]s-s!t#0$rObv4DbT̑A?/c%=;aR&k[JQ"~v.8!GD5~n6 2؉i)~j֙҇.sKf|*B."pPJ{Bb`Qqa.Anۇ% %|üĽwv{%H5_/mG^g1 r:R/?BK,mȤEoUi%z,~p"n+욮bN A%/xv 8Ҫn݃M#={(L9Lܻ+.($4 k[#E)ރ^M"Shy=%P1m\ۓɭ@y /.PD'nӗ>c]Nf!O?K4suw7~tsEx_MwĴ eU]\RpSIiIK(mP<YéiRz , Sd|`WtNQP`Hl`HiF䜁4&.VoEjc*h" HYXuSnPLA('BCv٥Dc's>yJ9מ#qU?c` Awq&ei$!Bl^IȊn։0זIE ='Z2++п30MBxķ74+޸jr. 6b{:tpI G"l;h!7z*8}ݲVcwta=5؏[8cF]մqOY[!{|;U/:|"]ݕuN7"h#J>?#=ٙL7<@oB=IJq5jév&Ao5@iqA"^ r^P ~Dl/"iŇŰȢQLA<ڶى7F <z49L !y\A7@KQ^VYrb 89]n%0^~\E$@ۿkn,K$FBRC>tc_Ed L)UAk/5@ $`q ݕJ7 rj/2"dӽQe-`At2?d?,0$5wNU^Q._ ġeO-1]d$iVI :ϑL~3|w=J)<Vi]}$vBICz$c1Ua\e-"J* Grikܮ8`r?nJwz ]0]t?0`ij KtE +}^{p&:=R ,DT<і%K"3F'XhsR*N3>@'W{%_JVTf +I1sy_^بxsTϯEZ!+&|2hrff>h3'R.J_uس*@?"P4]>vJ˝'o;hPL5夋{d2A;フy:̀jиNPS3đ?[3z$b(SYO6@{w[8[YUC OtKw&[&~B= %7TK4(%~иQ'-ZGqC+jP)>P?.*v _C0/GHLM)"ޢ{ U^NlhWv!fV4a)*5~3(~*jV5t0aZBz ΖD5ԼPOEIޞsg}2@O"oC$@s_#&Z;mI?s3c!ݯc aAePj@oGWHfVLھPB,q,9 Bâ;S6FDg0yS R`v~H>2@w녷 į vL<8%u=;rr MG\FQEݻWe6ڭ1(ncfIXPoP}wL))=Ʈ&0ok.?E׀@l}ėHTY{>*L}i9gv mh+SNx\y6 <2=M+v\ٞDB&u*nVP9+xFQ%P4OR[mD_]z=ohtiq>KǶ_p7UVnnRc8}ވl:ٵ\.:TJ<]L_Tw]2pb j>X_ (J%rfD~#L7|vk;訇6zTgw-2S J'dJ:*4ٵ?kR։k=W2R'BHS?Z'-_l\&;qjw'`W* {F-ےVWw <60Ў:F9> i31R!=u>AR]{QdD-R%yvO"7X Zy#Pwt :3lr1F4_;Vh4fڂ{ ]ge3Wz0񙘚aIJS-LĐ^#,PnYe8ys52Ł|gÉMIJ~ f#F[L*̶&JYF$%ptQ\3r-IQ rKha7OX^aMu@w;դ5cޱrgDdRHpVzbI&޽4b9tK)jJ| =R>FB`24ɾP` =-E0&ự9mDuz< .3ia6-b_n*M?\D5 }Kv1ɥ+^BU? [?A<Θ {n;"&S 4AGw?w MtO]f.`"D#[XÆ_-=(u֑)*<6`&/EV(B.n?UVV$-4v>-ci\Nŀdd6J8b04_]Um'J]_[ˑ86Cmg9nN[DE˜5E׽*|-Gn7I .Nc x3IٚG>^Tޛ׿S aH眍&N0 Z#Ю`(-1O'p~V_nKz(*4UڧUjٜn~ Y<8INt.L$8\UT@oumeMk\Z]0C[~S;NV‘Aߙ"$ϞY;/5%DX#!p u0H8V,-gsaB~q#D0w"}up76ywc$a<`Qs:r"}+JF|'kWNba\Ƒś7'/(aUqt1ՐҿA<(2tB֝c@v֟!4sL%X Ԧ~٘DĜEP{b3);̤&FDUX_Ihrhta1 xe.[rLcqbˢZڰ0pskB>fʂ#w%YGv:#% _ތNκ.o? p _e)jF|$Mhzb R54bdO%FAkyjgQvE\Apz{Onր5d{J8J,!~+#`%quS6Cj*)x{,Cu KG ;Y)w^u9ATꆅS?ߝDo7 SP 'NݎYF=i4b`YC`P FA/ 4P aR⧂ ƺ6Rj! XUCڥQQ6}dw4t3wDZ ?.H Z5L=yYǵ:kg5h.z<{d\4op/xjrYLʬH,QD1D^ "2XqLG/@H03}xwe>#\{:Kud64 z<̤RhŃd#P{Tux`2@+ɹ%߂^k!.<&5\3e2.Y9 jkNk9Չ'ÄO;c+WU1i7iջ:,% eavs>S=ԏ;)mwh 63;WZ&cPqAF6Hƍ¹,G,<)Ng\&c <ćsc1$QiJ܈c |lx[I / 距n_VT(ctv>`]ݣևW9 ɴc&Fxx^vT/9K90`g p  7G .a/Y%Zޏ/oQi[\e5ٝA^m:Ej 3N}x+ZFiJ9o9E҉:lA)Z3Ik`heV!;@Ko c dw6sBJ[ 5yK\0xzھ Ҙp$ֵJ jcbW?ch:1. IIDRfa8rrCt(=6's"pf ]au-W~ OhĤAdd6!૊ JBxf"aqRLoKoD I/%nGGo)->Tq)?HB&k`rTf{2AMžNP&3+BWVD.\ul:r0:e"ž,^n*97AKaPI\ZEO̙Yg J^Rm7:u<.eJa{o/vwȪo>Vn\+FqpB5xw^|.kB& TMu UobP#}m2Ԥ$a`C`]m$}IpgWx$M 2'P1GQk@!Y~3:I6 uψ:\!"ud)㜽+p̳l&ʕp%_6zoY܊AcY45h@sԝa'H{7[ѾMK&rnu#%y[IV"%[L{1ۜkFRWf利 2'kC''$+Yw2i3oCim* X,NEL (G6L s *2;7Uem7toY(;q?GlF\?)2Mgwt"&@Z8L  5?!5)y; N$ڝj~"O`k7$wxI_><~b!jt:ewya!&.w.r}.-cDuyP)TкQs$1/L"xSÒ/$Er@ޖf_5 M쨔5MW#1ee@m7ZB5tQAt0E>{;\y!U^Ŷ_)56RP˲(">nV2 AjJ(kUp9;r1ߗwpa%q8JRyS yB_npY ^`ad!l29zx=4B/uLXiERر)&ԓOB ,֙ .= <j|Ȗ@W<{ ܮڵD6fE<6Ϡy7Qw|Y޶@s;7D=lp{ q$+0C%Re\yye9&M`N?3Lc1XF͝O})N$#g5[Q[4t FmI sq|a*1tT'A0Op?pyrЎ15 MpʎFClf t{> @\lYv#z0=;5n,[NkLW{I2[cui=Ti)?^_~~5y!{W5O^k^oi2!N $=;/gBar7ᛎ ^ڷ}g&Ř9t;Ira٥RGݞ]#yaمh2rZ8L-F³lW&?qGCtw͈y<&uKYzboM (IR,}W^2kz`-{s;ƫ|{z4 Zc ɻ'Df2iyl?mL࣢"[!w[/ȝJ?x3*ۼ!%]L~-lq@,Jr)OI ? CLQS ݌jLnV1{#>27qmݳ6O{AQtFS1,Eõ,jfGw!(7On^A!I3u¾!/w砼+#A,j1tv{+dM7²<ʣ߽k/wS4]c{E- # .į[t 㝝ރ\WE! >8àˮwlxGt2oIB!uR{rMϋϹMaw8Se@3I!#?YsdE6)9/(䋍1 1(z21I!xɃ3nb@E;\sfu!ڵ R%!(qē9,u}`}_|τl@`j݇|z-XVaFcu%EGDWd:ʢ{ JQ !](Rܗߏ3OwdAqE% O! 6SUilL.q5_ ?qj\VEZӟ (ή<_6GSҖ䕈k$I̙?uV*ZH%A!PJ~~!KEAP-a'٫#uӐQ+)5ͮQ[q5C+\G&X!z [aڲC*,J׶ii'<1ZQ/ڤs&"F>r=49MV ׼&֣: 4vB&s|,䅃5a/R.GL~V'S$䵏-\Y0GL- _'n}6ݘe31d<'hWhu9VO8E@/4쌰MxOw> H`$,JukI^4-f(/qI<|{A3oC*RkŠ-5}dXd ELW79Zp͔ת*Kt籖6]ݾ&Hf͜3Cg|Ҝ?m̶jD&J#KVF+<-ʔ󵗯,;۱Icb\Hg \³u EES|cqEAv0O2o8G~md؂<JW 7wZ-~xt?8z[. 27;-W+f/G*gr|0qjT C>?܆lr0/Lں^}ކɭ# yLYT; [ׇHNsʎ%t_1)kUUdL +cHz;DQ&iTI?xGcϚЊ*麄#dNcWŷ/hd1,K:N)GghC\j}}$}䯲!~&z+x#, A} _6M 4_ " 'Տ1GX*[\`#RiF أXC1\v^cpiজÌƴ=I"tu `Jpұ"Fګ@2@nh _|Xd<4<۞Ϯlk/IT!KVD@*|P?ꕡo=ꍁ BctݴWbBvNu4m?ViYΦ}}E杺t1ZH%Lv,xlӮ+;n;Ku[\'›6gb7NKaFscyU y ̷H%Q pˣ&oGN@[4+>B冿{qdA ~>9mOX`mB 7?WXohDgH> }HmuیsMYi:)UXnLB;t[f5dyzXRCfA%͍&pʓS%{WCځxؒ?n#m"2#d#ɓx} @`-?7yG|bS &y|A)GXc27^۶/6h8?)JoD3Fme6P(]L|rr~bU}ݚPO.Ǯ#fLN#o(WKAQ.Omomɡ#B^6g_X6).A<c Wn{T%DbFԂ<$jA$QرŖ"G[a@Ϋmx۵1BIb&i>z@ls pl:pdw} 'y -AnN|˒c*'܁*ـ1 hzs:uO& e~F J\+&49s^5eD՛aUpSVll!/e (`yQ=Pv8ɵXYV%rhHI}*qoh8fg$NȾ ZS3MwB^~G(֛R y\ꂇn0J$g')_ޯARiW&&Av~vw5V^2N!)m0 ,e^(&~a@&~;C%Lڑ~G0sM,ͭI/χ.]CHz%Yyard[{}&>H%ٖc@ A@3B#*9$Lrz8It<+m ),+Wx)4W[dm^e u7 n=?/MpwVmXH. ZpP9kT XV`,Rr4XZXd*{z9#?`}*$BÇ{&YBNz79i|mJr#oJMQ1Ls=/.0KpNhӕv0'^mf8lg*yH*A!LKCt6NZ*DhEl7-z)jS #eAĝM7ju=LjFa%h`4L/x5eP/H-yӲq`cR8;Skn$QfԤ+FqzZ3YZimoj64l3F+OnՏpn _ѮykIrN_M.9r{סXV<qD%H4`D"vV5 ֗Tw5#MroQX~J'EkPY8޹Ķ؎ v|LVwLE 1]hM޵'IEʴ'YDcS<@uXYEAMȶ#:,qPʻ #C`p3SLt]kE@b3J9bLj63v_vOW8D[΍eCR`a"|{wg87o' R]̥!u!}Yv}/<4H h\ץF <8=cEK؉şG q \I [yG$j~`OvFUR[:q;֎p+ l\%}nrPvسG8%@jmκ ?r2pkƯnqn{ֱtYmS;pi"[!ZFq3V(]f+Ò:Iή^&m D zd2EQ*<%pD 7_, waض}@%\qwJ7 RI&Wd.^.(h`JyEd\D XdB pŇ'd'Aʸ7ֹ1Fx^bghCjNoPL]t;Jl_c E((gӀ~.]K|6mz}6Dxn=;8]&J1g-%Bc8Čߞ4%J,0[p2TRMԛ_̤}V÷]OY]BZq)L_H^C+{8FyAR1b]`+7XG)=a'Se٢D"' H!rAv\ "{܍6;uh- 0W`i2s[K#Nφ[l-h>ΊdYeH{ ] Ffn'vܻ7}~ER 2i?.Иj388SӷYSڴ!zp,M@0  C}_)}.fbe2s4Z֝KAax񜶈%վDBB|V66 QqXbmծIJ7~<2j׎°R2'^IjLL~ԳO48ZZ-EC< i. -1Br-3g0'KGdK)4W2Փ[!f*bx+#2C8FoeI^(c)n$I_,{>‚um7w`҂{ #@"u7nq sYӦBHnJ'R%Px=Y=y)1g,ιъWY elfMoOkYSuY5id@"O g@V`Ϭ2KфdmUv#U- epIϺJ x!Z^_oz}ô)FU&؂l'+ٮl;,]5HBm+ [^]i<rI ԭCe1jquR*M.ppN:P ./:K6$i|RD[٘ 4Bi5BIe oomay궓ByKXML^6ǻ]Ԉ, ּEcO_ܮBRBXsc{դe'#Lm# 6eO9׻s>Nsg H߼9 Ly!P"(?_U OOz98(ds(qisxoU'IK"-ӞU&+`qYkqeI4 Յo1wp|gQ0U]mb$OWY񅌯|ؓ,‚<7;"F`j 4lHW O 7c=t'**!)#ߡ'ΖT8(.}H0xk u6ZFW9S- {r-Tļ_jXCV:v=U=GEL#OP=7D) l:*¦xPM}chB @vN~@U"Qf O x(KX~4Ųt OykЂHL3*{i us 5%t1mov^Tɰ.}T#X?MIGch ''u07Xv}Ƿޟ] |Vb˻Wg55cpz>ڣA9?bqauU@&WF:iQ@oսF$رZA2` MJ)KDNPGJOH:qSeޖ_4)ԶE?1eiUg*hc3D=j8S6F8]سir 6c N#2qp19;MGgZuĞbkn3v譝_ҙ)`ޫ+&mҺ\+tHVcTvյO%;OfçE LYQqZq #=Pt3Q/~^]$3&]ɓ2RQ1^O8 Z+@'~yY󍈂[y&PJW")qÒ;66wtP9BQ5:#e8. eV8e~t7mކV:q|5_͐~Z <.#?u +mIy>|A8\6nLrՔH&0ى EX/;}bg }l c& ~o7=בN]T$n.ṽh9Qgp6c#2}X9XT)|g^zjhpK}%k9  !Zr{|-Q;~j1K0BEhH4ĚQxer= 5R7a6ᦫP2!ݺ0^4 $.;蝋wкe_Y]K50_bCZK6h)]9侔|5SQM4mH ÷f3s Փ;a1p6fXVp5膙2]x/EQDHEAqP#aj^d ғH^(M !~1 laA38N {hܘ_˺:٣!DJ %du5SȎ(_U4 1v(^>G0HT;&,d9F$/$Z#8)+bC tBK8:ɩM:v-k}-tYd7&03AC8W9 pAc0&8ՓNeV>a-L'_2x5ѫ A;"wWk`$c}&J}.‘ɝV/ \O4rC+%mzh*:u\ga =ą,fP3*u ƆRX\e_2zࠢ[G Wp ?lYw:` <kwMOEq!/W$]8ӟ~! e&nM-82n?%:0RT5ySl"]l)pmDPWO" <};S8-ӝNWDc̾7/p"(9]#'(Žь|LL{9TͥahL_9?~@NO're" cRy!Pb{uMݼsKۢ%U#%q6C0yOF n-ח@ u8߃1I#{dl3dxilbō\4U{ٜ Җ{$zB8[6`8 h!EĐ?8̃>Ti@]`^91_ݓɺt?/+d#R$& =:=O~!RGO[ :O|wgDQҌPͅinWSy8dp35'xy2cY<&[RNN|*/ͻlb,dѸ5a}0_/LY_ioHMa{q}nG!5r)M@hb\'(/R!Oi~{H(h'~-qC Y̠fDp>\3zyGtUrKgL9cf.H_&4j(=]a~C:sK~[Nm!`PIJiӎطO@,VYzY]Fap/lV)hZCJE?M53Q_[#k֏N^%,Q괃\ vT|y44doFˈXPM  f24S|(9^x۠br62%~?_tJGǏSR>:dvjb:u ,p4MJ-e Ag%Oʼn'ICƥo[po֒"arekϗ7~)L/C3`u.ؿ@i輿Nq( si'9z\Raspav`ugӆH,Ϙ{V.pՌ'8:<9 _ל6 2*?vKV *ٿ)Z7SaPh~%9rc? -Y0h#.a( ^$F<'pt6TtrbIs2sꢑ.X6)0K,w*"ɢԕ(-}'+ٱ 97dkγfeğhs*e^%=(sJ⬃x, ENFQpιƩ>2N+*Zvs{_,̩`w6x%@o,v/Dr-zC^QpINwɹLi0  Kll|-IQfF؍24`͐/Rei;XE HT4ZRsG. !)B.A*kcېҋQJs/sɂY``?͘%/ff E9~81vBAw?:}GA$15f\w[7ⶦm֥m(ߨJ{^|U_04fБjxY%^VPWf ޸[EĪO6*e4񜃸r +\iPϝ7ǹ(5*o6VXWӭN5En-"ƛ2]֌ȘyT#"!9Z=7<w_(Z'b k49zPR bM-R]|NHzipwI[F%&FiJEEfA Pd 2ԱS١ #H" E#Xi53FaKFNk³U1=O /C QSMTp`D"M0$a5>$Ѿ3QtaIq,6sicM"aF'wSwU2 "ۡ_/ 0oUb޾O7a XӪULeU`_MbI,)d35kh2,rC`%TUqѸa;+;xI4Ic 4<d󞩍(3֔>-_lW2>J*ԓZ~=FEOc{XRKuhuj'"TAz?MϑYa'#ipIX<m1;`c|ۮ,.H'R] 3|_UEGzI%+ \nRQM.k'Ђ9TxXpUͼz D~J9@th-)Օ8qЫmZ+YBmcUK>ރa"- Tk +BFqE{GA=[FFn> 2#aJV U}xμR;623C\eNޫ!׏ѥr _҃M,aŧbMxTo)vc-1H/F%]fg..PA RrzXC7y t!QdOgڜY: ._Ҧ?w3ԝj8Ur<7Ob+2 NEuLK@Zk8(/r2fJmJ0w^;o!ʵf"]1@yŧ^SrLbcHDx jdG$yɁ%Jo@YVagot5'fk<5$.%W0o-)1PW.:G%+_ n *OO'klʋRL>jW[f#{Oٱsoԟ.]fn^uׅ[.'JސHH:ePKgv$CtSwʻ?1w 9D|nK15]LLU5Ct˕),)r^EƩS6Q{ie+Dw+)RL||[|9763Atqj;d0+6D/t5cM#-1/7]2f|#vUZKG3tEUO^f0FX߅T0)R/'.dx^6 ![mZlSbk(ȩۢ5M fNߛ3^;>jB5.WfUѧ0M_ (]I XہdA+73[dO7Ue̊,T0kLՃEuDob0ɻRxޏ x%ZJEI| Fa\pQI_)+ a7Qg nΣ5Kяo},*s"Uk] u8%`udc(H'E_j7/SM'.ENLlJ@\>v \nU o7Ұ8OmɿB=ew tQM*RvF3qV٠.at `qprv1YGLÙP )CL <9lpq㹋Lf̭&[~ +y4 QZ_~g+]cPi8^}bAu%k H+@\gN:;X]_r8[DyV|Ar=:9(V64#R R>]vky t01&LlWIX>Z֚<5&Nm"I8A%2kcJp /J3?Ḿ( 8cO] u-LH{5;J ݩV誓aP5oKJYDPYcB+n|;yĿA!NrQ 9\!=GhhDhl 3-?UKHTG!3 e8VНuZUvZ?ׯD0tɦr˜j(蕃C/'q}7?h#R6#_ l@~\"7u(g=-VY.piWL''^zךHsK Vi\x1zp1On!  &®LMT«"2@l?f!t\E]^ Bwa5)(ӊaZc*0.cͯȪ:8kJ9V"plE_'d0pǶtZkq(#(zqSB>S0/,I^V17zӷ271t ?uD.`|l `ՁLsR } B8Umu:'}k>O RKj\\h-KbbV)r29eSU^ծ endstream endobj 1616 0 obj << /Length1 725 /Length2 38766 /Length3 0 /Length 39273 /Filter /FlateDecode >> stream xlcnͲ-ܶ~ڶm۶mmsڶݽڶm{ύOȬ#3fE=#7@E\U HCF&lfj`/jj 039̌L0dG/g+ KW տA3@.FO"33 %%/WHٛ9݌mLV&f.fTsgտ8?̝rbB 1U)@V.d:ZXFc?QgX0LLS+W= ÿt7w6usoB.P!l7[[y#;33@/=Ajdge3\CY[y*Z` F?䟮:z)1)i+;,fo`jeoPqGO#gV4' |9#Wg+O#F_-%,@`bacp0/&nfZ{ 5Ӗ@ق $1 ti uPKAП5`@hF6wz- $#Ne`H~Pr?džGa[Hlk:6XO/AM[W'#22'/jᶺ%dx oҌ;Qc3,ӘI.NBW#!YyHvt(sӋx$&*NzvnJ: +r,-wa?x<cTSܼOl7xWR;%ٔp,qx$r€۾84ꘃZ^3 1afNmd]2̯@{,-* "[҄nqߗl3wmNwq Qvv{Ph^#'WiHtXzQ]'b/l:AJ$oM=B7sgp6Auᶵxm.I'J:fYu`e'DZM\) uXksq )2oE:[,-_d2V81tZűIdMǶ~Th݆Bц3Gt2;A¨=*s2U.(3-Y¿ˈI ˬZ?OEQ_T9iU QC?BeX5G钥eAgFFK?~#p0bʅ 34+hx)*hh¿Sb  Wd=1n>sckcQPgRa?$|#ߍL`^u!EiRA,&l{Fd5}1B>Ca0օ -4Ayp,S?Gh{sj Hw8Z~XmSMFRO{ܘ](rM >dLDUjIMتS j^Cm(I2=W67((Z:"!B$5%{F`Jnw+u>F1>KF/BX&ËOOHE#͂DtZ!#[>uwQ깭U 4X{Q >K#_w7zG У8Lm#d75n*~'U.B(2#Q^t sN R]xi JtPb]@U%ssՖѦƖRbL"h= wTs)f`9j}k1v-3$☵n@~S(É| ` <93En^KwɹPJ}B>2@Y"6bI7Iv4,NٚF;V/,)% 2C-T4ad1wC 89f/莤3Qӛ"nFNrJY)P='/."Z(weɩk,! "`ىfhMygSM6Z*b/^)-pԪӧ!(J4&4p+uEhܝ [*+oGpk"/FOuquS)`)Y_?-G:qK]7!Mgkjr-ޏgh*k50?1P,wN$M!(&Uz4|#8+GFveP {bƗEd0={fl#J"ڞ%"%[i0AAQY쏥vy25$μ[ᝣ@P*sEԚi>AuyrQ( '~.^wA!/[r6;j`nJLnNB;Q# !mI *V@ja.0GxZK ô)+hedlXHlHhkKbbk>ËoZI:tp7㇃+?efﻚVOP62 `:% +y6wr6M. ~v<Ǹ]b-S{R+1L_xJR%zvNHCL6#^u20~Bt--Rō2Qn$RVO &Q_(۪ì(;kz4ݼ24YkwlgTuGxTb>Y/f=]gWK R㯻Mei!Z,&frMcmȴR/C{0juMb1+tin O G1k1_-5GEJ=m/mH )8Xbm\ :o >|'ˋC^7}ѵxШ񳣢 K輺-uì6# @0z6R}rEsxMte#hݪ{F LlUD0 >~妘:ZgSmnsDf$Z֏=S⊫&A=܂n\&܉- ğ/v1')ʤ+U%85|yi4+lp0 ~*vfkt_҂vEиM !G-qj{'7k,܂x fQ9Yҡ( 쏄ż"Oz CaI7Z66C 3 QbhD 6is{N!`  ¬W#aǑ7R:G 8VƆ϶el[dmw; ow U7{^m>OgyY3G8H\ & KX̫s1ˢT`{l&]MP 82hSz㶪Rfǧv ۅL#>S˵%M1\rx;qF7ntL&θb+|^OB:΂s6 y5JJ [AY+{?_ y7`.x9> t9~FmWtzC`~`[4'oa/c%n8rtsв g@CG/ =ԅGվ.kR RKbb<59o{,AW {e- uKQTB}>CPeý4oXEv.5Zj` qڍƬ>B#›m[taFJ ЇՓJYsZp08ɗޱ?GϿ,be@؊%\MXۖFA)UgW+2˹\_lFr| _ZY,w aa&U *'2vM0Z z(z - 37GV)kJai;f"No< ù':ͫlVgI<2OpRƻTR;? eXkon9ıȒX&)@9?!1q T&:xjt1:Fa#K)#- u/Ibtde\誊A{"U~ˬNt4&ͲBIgDUVHٸc=5Zصܳ,_#P^rX闬X^{m8aJ"Y[$i?暠 o4a1Zrw1 E[acY0O~4oN*ʻZΡgc 5[ozL?ݧKo h+60Vcr $dH_ _52D,t "WBmF~B/kNC2^'3,.^(Rwad MF2{_p)\,a!;%z8^W?*t/+[wO܍oO#"c s䁡ϛXmD󇝸q%?KSP1i5yzO 7>-i/βWB}RSTf'xWYvEh#D~99V"0kuDP2D(a珤 p+4=٫}"1[,P$_^ ~6ͷ$җ_JE<! F@xǞ32c\ &`XΖZP UII^rN*%dv󖶇 6E]̢az2]cE5pQg~ ̞ܫ|/^/V͒0&*Xv&,xMvXgvn-+ayY2 Fai亳U9-}74~"fj>% u绬»W?`Y11؀S9d4?66hCѡB:8 U϶nbQMLb]1jiOJGԭ}llbӨCR)!0T[+d㢳ecԐwm084ܒ%:_ }$`z6gz 2gz>Y^4 ȽƨWj61NlbJ5?>&ν>YZ`Wy59k9Fo94DD嗥ig\K7Unt%ay;x)LM =F힩1t)#vD8fB\&16/N˄Cy,sMv$a/y@ʝ]Z }?0?1wr9]c2^ NbJ%%d\QمQ@bIM$@pr̉c )' %IK]az-I!fC>cGdY&16z+T,H~oe07$M0KEaNonKҬvɥaTD勤(I{-KچHQz,'v蛱s:a7ZDl1H <{ *V2+6870_ z-74tUEJ;&HS̹8Ѯ-%͗@ 2c求 8kDPbG{Ê' wαx:<˯8A83AHΥ9 `RY"j`{4lmpO"':KJI(Pk+ġ=IF$`;|3R7,g=}Ay;0hn]:-B VǭGIm7o$)Ȁ0g×o?EN:!th"rH' 62.'Zt푅bT_zPTz,`p35$.VeU@N`Oܤq578*R,no_\ɚaq49* 6|[asH=BNSm\q3M/h,9 FLQ_9ԛTr Utʍ%jx~*Nͧ?aKʬ0FDL ĶifOVOI|7,zhڰ^=f6Nutלη 8<5UiMl 藓XOG/˹x7\?+Ѵ)ҌP(|RULR $5`(R۽ (SV\ S{/K};}>Slsr\vf| І3KO7]f^DkW&'L[\1NF8[+GǛ,ޭ`.]yF(_ba0qi3}#*h(M<ʆر.T 2PO:[>e^I]#7B&>_s\54$%O s?R9NrڸDQr!ĽXܩ L9-; ^+ͺG|n^K {Bz`z7 3QtPxT;E6YeujAPL:݂{qx쑫jXO6=I7ajDĖ!çH- 3_37Yo𙾎ΨJR,x#q CX>pDV6;[7(9=4ʯTrU<ϥOC3U#[h|[dB%g`"\פ4 a2sTK.o`is7Z(;N~b'Pۘ.3oyHz.Wv 1ѐS76_.ؕ ꯛvqkAS <\\*ϛ7NB|; -sW=e~Whcɡjj8`jwy@dWS 0y}:犳%];Jv@=%*D_9':_ML,d53b  d̦`t;owxQ2s'W'g){̕ܡ)3*ubШLZI6xd, oԓj+a:%&;ru{)f7z ?Icڣ'FEK5jhy=`wI:SQ꒦Cz5CzsF9'}G35,Y.73СAώ-om-^u$KTi̅PO4fe)*1}n9Og'GKbi=#0r!EFH W7NjZn-9kz1FOčL_ݹv䤳;⩴⎾B}lWhw2m5j-||9l9$u8Ҕ76jqgt$SR *=7{C!_:L>Ah}F ۜixԥyZ2R)LΊ Jw2Q"Jpj9߀dZ!o5C%WoYY'քV8Mc+ޡ?2+{"E>~ǞWkxĕMȶZ f{ykS:.(ݦE:jiƟO\޷-,wduhQeJA~Qcߪby^hW>ɷXD}Y.=KNH-%7s$ hC#^Tv=F9FepR]؈6,ةUt9'*]In.ъsT]YSc6H} 4H|Ȁ.nwn+yr]JBOS>e)[~z\fL 8hbGՑZkaD'F``5T j^_qbNYYqy/Xrc2?A[9F4p Ĝ h`j0*|/ Vv[J8i8/C*iI] IJIkuI}Ŋ#^"4~gZw!!jN>^MTU{_vZR!(q7‰{>ϥ.ҁ~+yBS-6p/UǴ#{@|kq,6{nRVUc^RSWmRÙ룩3 w!S3.s]il(F~VrxeD+gER{ cPKLx ȱ08}yxM\'R$?Z8 Ia9jm? 0M{v}#Z`yt5~o(4ۆnw(ݤ~P*_B ^ hMx]NP[^`}r+b{HWچFooJvP]ߍ轪Oe2Jy_ɴ|(8~K-*F .bk>T/{Mgؘv+w΄y!Ѐ귋F,+_f6$bP%F5Rk€}Da .4I<>ho$buH)ןh fR!H`bv 2gvl_y=<bj1pYO2) ɪ#$[#wkPꤹUDŁ3 y;Ar@8 Ӟ#uX!(858S@!E8tu|¾2aZv EMņ_0@?F@ 4x@ҝM3p#JQyַ~y;0+oIM C݈glsm'Qz* >bwb|xZbHJԓ͸7f_ 0bO 26wltyݴ'7sgJvoA"bhzw;Xw˄BWFl)A"~<Fs&^SU$2&Ng:3cn,a$~{Upq^QLZ"4cvP,, v8$dbkS5'VR #V%1jO*NBMRR Ojū~q |vH"0 t; <暫l/;dkrsU{9;fl=h9SERp~ VaP%P,vM4`hNZ;SWs{5#H6v?I@"<"e)% hip`lԃؖoO8H?MfiPy ,Vap$,临}lGOiO`@^򓿱;}' bGYe7$Q ni!ҋ2XCY$2])(s 'vLr&wYKFK.J4_0/,M8O@ԡ>ZUsPC7RP2\D㪶OBh,Y]C΍ K;;Ts`dhy(x+q)(X4)AC o(1: si79KڪJ?W4At%9wWAC&GF$p[(]¥6ْ!{C/2٦V?mzabxQgE@~bqďhI_1W"'V B[Au&샥eW}P C W8fItXYpfI8Nf}'Fc3 vV(03|N2E)}*f䗉1ouW%'"/N{(,6UCg7Gʯ gps?}M*SwNj9TT]c38 ;KM"Q_N6`nWEh QnP&4)]BÕ-ifmƏ"^vQfEI`!?̩eM<I5,UyIi8UPuyX3͇m4{*669O@SO*jw#j _HQ>1Wүg~+۹E o/yc=K[dU:t#41 yPsCzg%+E htiׇ"׀1ޙȔ{ 7̍G`QӲOӤ %x1$[SjAwT\%^'G[jmZ)(\Þp# j=;oXGT.`o)U;;i]6D5\i:`O[`3!|곎 P4SKLMIU@ܮ˞ 6 IVd[}?2pTqin?1%}뤱b/27}5а&󗤘&ML:0Qݝ5Wz/Vl勹ϊaSM;b0X(A@E@"-(ZW] ع )|,WN1A:z>i6JU |!'XadNMEV&T7/}+Va@Z6e[YL&6RraX3$$2o6ud_V9G}s9*= dΈ/Gվ9BK}d q/Pd6BlN|JLӥĹ /#CnfllDI嫲nrlWN:fuW8ƷՕttf94-U!ҡޡ)V .I N''WF|g[DނF(l!p_B&B\D |31IXZqQ!Ґ~fkW`Ja31De}ح!PEUF< 4iЩ}3(bLΑ;yVK/>YfK7.N~]7cGߠsb_쒌YAѲ{:)w6 "ye )3`'oCt~0֗ 8lwQ%>oGmƜ K;#U}Ʋ~oKD.>|ȕ?n2d#eRW nrb% ma=lޜ p_KwaYW41(P(ʄYELP(nRO&4wyo@QP87h㡁QIYb~FL|"ԙQyŻGќ.7?yq%3Z׆^FϫEp GUP[]ҌH@) 1w["2sO+&msu=c;XiiDr_V`O%65Nj[aQG1vQn6 X:W2l? -]0 2|Nu<ԡ41(zrͳ~6=q ”M&`3EgC\Aw#< ;>x0d́ ɩӡwȸx%keO{SH~cP Qť,9QwUDY/ʙ G`uurEsd(VYS"jeж%m{awQǵ qR{/c].pbsF+,kR %Ao;E1:ݝ٪SE2}/T\UC#9zM_giXO/RgL䑰HGz  )5!tz`Kjz R| c[նA6V6akY~pcK쒠90$I-zg|q X^?ĞIc\Cwaߡo^;$|5OSeR94J6dYPk>h6Lg `ϡl-.!'YLA9wV :tU h[)Z0~G ~Oc3k z_ka@ ]:3h]0DŢ)4G:(bupT. [ 7(+cwbű 9B]B!-$FEȜ,L"MUGyP0CUoTދ;\ 2}#V8eF9K!ˮnдaԩ+EWK79*o$CF&oۗb$M>=^I]=.i0#i\@yq֧ܔzp,!ݥԓg{[C_YgR]#.`W7Kd  %Lg~qSdH5QTM5g':æ.ޞh|pC!Ic$8%&Pgz5}SvFv(S ^0'X_k Q k+m?ɦ>R /"% nfyج[! wcTN)}\~e*>А-ցʿoBnSী.3=tJZ Kb,KLWʩ鵑{5Eny{~T:^ȋ' (Mˀmʲ!Bc[ìاWtn/e_ n|ÿ<. ŢDX8u[z0xqfMQd؈ $~{{v<(VY1-0 %'PH.5s]o^vȏV[>v['jv+ȸDDᲷ=c#CTҖu)ڷPyT?LC*_>Ї*;Y%-x=A;O"I V*_-8P+MzSV{oU+ ߤVQm)nٜ>#![U%pYQjݸ%{"L==-`[M۶m۶m۶m۶m۶}vvWܧر#֘Tσu$z-Gӂ|I{?r7wS^!9ف9@ݔ[ڱImn.mX@;Fӡ t^0U:+c6s -b/ ֣yWi:e%gyno0*a{b%3,4Nu0smԚnvIi)}Yg_7$f2z.SF(=n # av;Ě`t/jM)ﱘl@n׼}>54m&swm$;9ߧq-;z#.Kҏ#ðv(#<(`6,R `*A=>ů7^lQGOaߧGd(2FX'J#\6l_$ e̶HBߧ%6\qp+rbG:ke?x}^gr侲w&qN聅Hsf\$z9=OU*DNx–,ׁzC } S8UP- KbYT03 u\kC (!nq&x;Li4 dJQYO[$L7K Hq {hd|lf[ Es,rpY%NT%k;SKq,|h=L#AGe dvF6Hr1Qy"Ƙ-.yjEi_HBPtx'Y.s}wnj/+N[2Q }0.EܚuY-L͹/Y,l}:Y7dP4o5{gdڅ儥D}nE ˻&!O>Ao14=5W&Fap@7rk+;W8)aD 5O@wҳ֧~zfm_HI8'6V͟tQk<ɂy/TVy('߈hL3 CJNm%~KܕF/CjQRڜ~=J.̤1nlB Y)|fh uHM=Hm BωٺRњ6>4Ccݮ(20"edjLo-PRRvyQ a_ʊ MVFAbs4dcm}cvAFRsu4T,{'^'^{j}Io0[̚b{ VS~%yI? NQ  q:z3,qȠFio(g (oBb!{^CַѴJ TūHصv B< Sl"_TrSMc IQH|$^? ʙaꓑl6 Ixxh#T9qw*n,OqrƘ0\ gdO1U08KJ%_WhYn=(Jc LP;{:ooBL MX:p3zRX tZL/fVE}Qp>ܿӘʩH} &bľb.(7V^-Fm-՞WjJ]` PH뚉&vo_!4Z~~Ϫh*Z Y"kaCP&#/ qܶ:nj8-o*? p90lY^f2tMTcS]r{p0^qTFb1qnϗ_pe> ce xYv\] 0zL֊ D!FLHw` JxPH֫b9θV}a~p[`ki8cAԙ \@Sm i( =SNm6s[sx +eG+`IQ-8O 巭ʬQx9MQTqAk^) 7B߅ڠ, >A3?~XRUj Cg"910H,70W%] lNQqVxRn].__rV b`׍[ #U]o{mL~b+46j (ݕ2K]Z{!MtBY'}LTuSh@(*3}UjzY')b /)O#-ꃕ.x0TwVqE>V#c =Rl=KLD`ʢDKhQW ]1XFn  +j\\k"].1 E0wݵsC 5x*e4'C \#l:u|W $p[AɨJ= gVv=H/[*ό MKoOO;Flz."81EYJKQ*/JGU|v `w=MocK%a7gs%܅(v,&οs) wӶKyQN pNlBAd9x2zNI^^ % ɟ\2.B|]z=}ҋ ஼>ܙ?z:[Vrƅă?aHڏ:֦1tA ]8'B-ݪ?☀iXUҿ99SY.!բíFi NUi&LbR7읞;!H໎Q)8&c|, J0պcfNك;dp+iyÆ`1t ։qeuePIӈ>MMG/HȞS߈?iC9 N(‚#secT>2lI&N 2)l!ڌ_'}cq}X$D/AR6j:b0"zz|2W@>{P5_V`#!fZMJI arӀ/ě:7X4wX}A޸cˢ?*8I@a+!)oK?2kR/Yok{xM{-/L??COޯ?:kt}imalsx_sA&"bL`K& zUTB1tpʭb6]y>;uP_*t)^Ǫ* %ma|NAgAG. qR襋к#sSEU$5fLm8FgM]M#p ̻̒dM5c`u5m엧2͡\.5ٌk|e|ǮoaH7ͨyٰFAdC)`>rʬl)͋2uy=$ &4={\Qke5/6^r(;]! 7;KCׯ7AxMs& 2lyg{xMZ<?/.E/a7[#7'SlE!2="9h-ɐ5mNNQLOH+xʡ\]QW, ƈųZ \<;}9fܟAm2ЂZ!#M${%yJTqD-`LptR]PH-|zǟ1޷X7ݸaonV U?$"NWl-}L"S#\f=sKq >=qCDXjύh-m3\N`k{OU%HV~.󻠦q%yB 47 &n3lt Iİ|u{0 ~ļh wPt {6J$J{kCI0wb#*ҋ` 1w]3satkX3MpӹP{icefާnoPq̒A^xslƽ)u;ѱ_-FY>*O5}}sG֖Ѷۖy߀C[F E%Zk_SlȯkQbEYvGQ~.A3+88 VhPnaFB&Hrw> w30 r#9lukǑ{s)]pi=I4рSA\\$ NaU+!:R]8z85[VBEzlա~ɕRM3j?A#QN{*P+tF lYg+r_=8sUӂ D%B9+)c]uy:2nw-^ǣa'$seh"o-o$dE6TR'+8QG6pZt&]$+%i|Zbe6!V>YTSl\ÄɪRW++'=Oοel;3 Ƌ1P㯢n$PK萆'0;O< BuumMXD~. ܷcwJYq*m[ oQ`Kb[3n71[ΉrqaxgNib+;7;L1_=H9Ϗg g\!4Ad)NB74,[t4OgSzb4V(vQ$7ɫSwE;8kJѥupN}mu%`thH4?tI|b؆y8ZY{٩1]tXĂ7 MH )cl)taʎUV%;Վ6Y!@٧&߶:^$5- s^W+a0ND?p-aZ!>7%Tq`vF}!~ Y~f sK0P?e@oS-:B$oK`癲EqZ^PE>- %p'$m, {m gIs6KՍǑḞ4Z(]zxbDgw Bf-w Bt( ޠ/\4-㩈A6!xc*"W4Zs ~%jH'=۟AH1(4!hHMt߶T[g&77{@DGEc ZrȠ *!ZYSn2* 1Gլ1׃Ϲv+XI94l&72 S5 Ԝ%FoM{mO&ə4:Itja;J"j~ԀOO PpD%k֝1e l}c.UО'ZfX`f[Tu}5"܆;W63)"uGSx/z1nʎ +*FD-7u2H{v= $@drs2vO$sᛇ_G:Ef}?VP& ڹ#@k Nu㢮-;sWkA UXv4U. |_FDX,S~l]sb_ :o;QY+:zlC|%![E<(2[ %I7op 3F^~y܉mM]nܫ3L^X%76VSB*f~N\a46umQC>1TcW2Kؒ.rPR -a2) rKɰň ¥A\% (+N|T \gZ7 @#8Y2ұs}td ,ğ۝*릩װSS%dy1ߟp|ϗȟJ1޷!@^v?.:('elE?vkfxAحxiFԄ(l̏Iܻ)ޤѫ tw?h V~_uGEXzoyb7ghK>`!ªc'}JǙ8}O t{;OOw0$FS^[̽"LJD+FR4M QjFԛȶ4<o-Axre | ` hxfn_*2ŒrG*uC<}VF9q|3垼3s42<nX-ɝQcΈTcWE0x'%.sIz&wwN"NA7 .︝jÍQvuEs$>ib#2[BKk@3L5T`פLv} fR%) pK.nM?8&Qh {b]">chG#O@y ?ߑh}ڈ\FW' sj6Eǚv [J$) @xֱw ߠ[S r3꟟R+z SxM'O$[mwd= ] ػ7@4^`['U">ex۪4AfA-JcR X@w4wTAs fMٕK;1gn+ T$׊~O;N}271zϱǂFҍ{;}\8=247sE R97mj ~(Q_''~l3L56韔؅JUh A>BGqtb\ IL; bKjNgT%q~u7Js|G{d|qc"󽎞]\ 2AR<xJ`Op淛)B!}quM,"S{zwx自/)Bd'W0To0j7׎; Db*j?gg 21̀}%dǻvXg6:;G-t0piU0S%#K+7CmIY@,Mk`zb:{X8SIX~Ot{|6kT ?8)ɢ1g- ociJUsEe#v!8jxeGZ $M9%ҹ\ߪa)֋} APy>N0pIC*NkE]ZHv }C{S| 1ڙj*AF?Nq*wf[q [ 9pͫR A NX^ŽQlG|ЮVH/=rgvҬAQ/F\*Sc iE/g}\X&Ƒ ybT'S /Bz1.X(4U`ȝVk鵁b"Jg1*3w6VT*BO%#xkp>-fxU[ Kl1S᪜jѣ@>e8} o(g" ð9VkmN3A6ro 7Auo RcTKL؟n: ,oqafkܮþ`Oz߷^Č v)84V;[O$󔺿[KyBwKSk\^m1p~TEV]Toc_Vyxq!Bs%E`leV#0q;Ls z:l͒3Z`a((eSijPA);INވ^.>D%x G;2"ā|<E#κzHXbҔ-2GإZod`걢5= uSwsX'F4T)Y n.AtfH?{*WAm0Molt`W!r$iU '{TGY{ bpc6{8ߧE;dC!ˮj%a<=2wW.{Bo8 ,d8`sJA:W_R n^HxvM 8W6i^kOcW>>/%s,e':ۥ-:M!D06ÅܮJ ~7j>Fbixo`*`xC+ Y.~l}=bVe UjX ZhT8벎d*!MOA N \U˷>e_{i<|'(0џ) lҲ(b~1\⫪P'@6h/x$OGucʥnK}dGvy+V뿌`(l:LKBQH{fӮW$1ѭ뭱8N DWҕh#^r߯^רn63-l.~s _BՠLa?/eYv8>,;9:x`!J`i#^>ϭmE#&o}pBI8W3Ik3f bISYT4~dt /#"1qoДk+Y,5e(Å?tswpҿx ,sn,Zy`*/ GЇSтWn\} wmΏ=\x)5ad7[ʜ@ koe PeLesǨY'e*!7[#[#\i*l}%lr{+g?jAUOP߄dMwwLȻ'A.D́ņ W,h 7-XPv- U >[ƀqi2u QwJR뺠#6Yp\ҋ5u'[SB!qܗ0I@<,9I|LdxV{1xL?zH-;TFaU]Q Ӵ5)Bq/exU4Pk[ݓ2*Bu\]l³dIK55]7$mQ\1 x*N%!EUH-YVLE [/!wd&|!mSV[EnߠDb+ok('q;bQ?<#%Гыvg*b|9*ҚH1-i{ ~|\ONLx[`t @lewrJ(pMVì.ԩ![S⧠G;ԫdFXG,quvJ_&.׭SZc3vY:$O64o-#-_)*[xmmoy窫~# h3xBnP{t4@=Q,I_2plůú~;S9c 4Ekϻo!XԶ_.l>aWVLbs~jw@#+  {a/KN%R}U `LunVIo<uݟ}zJzte#4/D6 CR\Y8VFU")CTǐԞYS]3IUѭEDC.v7`AK~ca2@#pxa!=18'`@-اYOJqt, LST/\& Or}lQkw) W\YvV@?x+4 ջ`'9f" <f3>n0 _U[wG,ڃQ~9ɕf4C:qR4 J/\Rg/[1Bn6\Ȝ +B& 2 g"z4w\TȮ|Fsf<MݲNNg{/wiSZ,y5WԓЛEiN9Am$yF$g17ZD:'CPPҦ':۩%>gL< *4̬?/GgCV~ȅ!t!@AC'hHZC@AӉCz\>ބ) eiFj>(TƎrA'՞ '=H"s\ O/:冬ֹsҶg\tdzs/ @? p0 5n>7_Qu\xPi_T,!I=O53$5@&mw16N*{ǿhQyK/A?ɱ!ﰨLk:1cSe@e ἠQY Dyy;tR~F3ʏ-+b7Z M:PϬ.@.Z*#ң;6{ـ\'NwOK5Cاm<ĤȍU|ai1ZaC9Qz/ռ#~<߾a^a۷FesjL3KRyug3^E{or@d7rr6uSy}]cu2~wdKz6z5U@ؼ v٘sG:p>J6yůD߫ME.g.t/Q2~U >qψR@/܂RB`zvsĹ HXWޞzU' Jp&@Vzlzh!H'hP59Ї!z ""}0=}l_#0be&q'fN(j]SmlVw.0(WwL)?ޥt|'*n.')C#- N,4NlMb KbZT[2Nu-:v`DI/v|?] kvHv'BEļt-,E|xm"P[g'a@:*ͪD$8'v5֦4?TҔzp>v#'./8~2i(DV̅5)R4='8`U2,Z|ʠZ-/sE}kR-m\0yi;qeaE:Qo-KT2Qw611]F);|Ń!Q2jN5NU6sa]?X*kgx2e׳ +f+g>KDw"3fP8v~DS# Ӟ*ѹy&B4O^TqI1#.&,wt_VCfOh y_ `v:Vvö9a;&\;@i-5X#,o㇋UUK1 ~R -|T:!c ͥR:^tIjG-Rq@S nE+`ZvliTWÔ.p"rͱҶst`@xvDZ $F)\*?uvS$իepV3|>&ksyV RlKz ~ZA B}iK?y }(6.7=eETz&\(_KeeõTz(&Iˬ묹+xpF8 ʶcZf2=ٻ>pZ\,5)pXb'Bcٝ=@ c F` {L$Rh?S_G=1a9ꢰLtr8l(rc;y]̊$$;ʍؗ݅ɱCCӽ!^)'mG1rz(?U̇\r=P鉫6e>Lsu ý)`v5[;i:tW{V"tmպw! wZ;웬;@c*My&J3fN?ID;b/wp+R}3 ?O< sMee /9,mTJdG#=Mx*xJÕ,=z_kYBnfiu םZ?V4CK;ou\Uk%v' . e2>ʵr*w,Y%(W*)|IӇ4[؃4$MAԢС}+'!h+\ tăe1Jt) #DtW93jާ?+ۡ( ``|[VNN%1 ٣ŝs) TG:Pkf3=χf79ѥ-|)qO3!bs[Ï$u.0T e(.9 }T/ɪN*ufFjİ4+v4_]W7k}FZZl]7NJ^A}<)Aa>eq3*b-rVu%$bqaJvgZ׀#VxIw3Q Z|ЛXOdgm&rj?ZKk˜i"[!.4KQ KyvVjFaY'4i 5FuowO[V7և-Ъt=#e CQaC9"G/XZؒ(`~*kopvqf\g[bw- m7pZ},O답a]J!VMpdZB{i_fΘxiډad~5̛}eWdL:` Pq`7Pw֯3HJ$|9mm].:ÚtAO]Ѭl?XYW9;Ie&Q C\+`9 ֣pS=ntK"%)x<ڛ)Cx]X!Y$2jN%sSzGv5dK{">X pG#BwEj갆u5UT5?q?rvVYmAeDtiԸTKm)xp?Uې D(xc:92v׸&Jkct3>þ=E{,Gx}hx80G>]aUVx6 tH@kyDՂ!t$qrozX@2eSn{!;y}jwòI/~9!ް gt3ڸj#ڪzNV%ҀL+.c|[{>Yd^( 8[S z GOV.iqP28L~nFU[BM4B[u;QS p/gW<(gy85 ] @]~syρ >veЂg.ͱ=P#]qxn!*ђœZ3; f٤\$i`܏V$)ǧ%_͜'o_:\ p}Mq͵dH^ޕ%T>'T|Y+4yaۭi?z*d|ݨ$j  V>NBٶiW7SܱGtd> =qtVN ꦃZn4ԻB7jVFkn-!iF?{@%2ÿvLǗEYm:htH EqlTR?AQeҢˍU{P)HgŹtO;W@?he-$ fdŸy6f5=G7AHUa oJ&ح6F,}J]qFOꏑSB-Uv||\ň]S!UhvԬ5t\*Q*:VE;6Rje-7`X@0TkE$љlH.USX>'.GSv4M FGTu8g8XCsr|ԄMƹ60)T-b'Oǟp^U*mP(alE"  0*ivM,{R~>ι72Zٮ%ϔvlȳ5mzf!|,­1|GqJ/i0uZS8P78Uι)5o *ƥ҃5h~oȧ/d/%VX䧷$;Ng; :ƭUk9[LK*@my;]ZYӚiBN[?iS,pNY tor%0"<ۂrtA]π۲R~e$oϨd+`;2 @A3&vpk;%39x6bݘZH GXFգa_:.Um~iߏO8!I ТebOym*#"yc6K?g䲜䛜mkr=T )3mQyDcz{CzIk)U…صw3ߖ9P5Ft1 #]YQ9cu|gȧf1ش.AG` ɸf(Ϯ3hYB #m~<_Ia܇E(1{̤'lI-q+ʀ_+:Xhn +j>7{B@] tDIV3Nja$vdNgS&x@,i}-_!xm|tzIח,?ji \?S59p`BkSҟ*td95LNܓ'̜vN|v = c սʍ-O{!._GMkҦ% Y_#,ėpq 3V ȏ{'ODX#gNc?C)_k&"qn;לe:vVM[C(k!ɉϓ;m |.96Xgn dGIP0弔wΧ;q9q#1DaOL(/6G7D ?Վz`[ `7A›Kb'꯬4oS~`^o0y.9IKK#D{x 5\ge/oKi`"[Z@zV.ȼ:=^Cо^%^dvF $6eϞ G74ڸ1D"DW\UV#ĖT:$ņTX4=,{Bg%Jj؉Y/E11gMg3: -ej)lب G6X5]/Hs$ƌkpׄMsv\ˤIMiN8u?D;]ξNl P=g%nJQ|KKIGz<2)5H& lV<@ JKpoHXᦕ߸޺9y\8e ډ{lѿ2de8ƙԝ|dұ= m^.TI[_H% 8qrn@lC:|\Pޱl=1',K/X;ř[NgC u)M6  XBeH:ROmL/^Ƭv齖rFlɮd#TIbU?`طLK Ш ͉G뒮qC^bL3WHA{URzPS(%ۇrhV{VDًlFU1Ӄ9ɽ| U /}m΀8p2:Greens[X1%~`rbNKZ!%?+هn-RՁ'WJE'T FB\*PXq<ز\8CMp+kT.2qHŹYk\{,oYe'=C=2_TuWB$Fl*nAgAelmoJG@@ b<\#ݻ7t36A":ڼO M\V_K嵽KzP:'oL8M鱾ېZ,_ endstream endobj 1618 0 obj << /Length1 1144 /Length2 3231 /Length3 0 /Length 3977 /Filter /FlateDecode >> stream xuSyt,I0 nEa: "$Oc]/,U9X00EC(Dأd"6D;! }Ŵ +N>pY%`':mծ75vgaK<mܪ` I鮞"LWCd+&' +n&=Nq#|$ر WWH݈bg92ê庴On:m=*' ;n&I|S' V~~Hua8`G/esjQ4z% -/('[9v~JPlr-睢:!Ȥd7a:cp5YQAƹsN^j5i-{/Ug9-x.yJ1+W< ܪYka>d߶F't+$ S0>dBtdJl';vaԗ =e1Ryc،w[ 0ҮƷE泃Ik N.6\p.CE9oHҕdTt^T^L#:BP\Bw]mZ擣omxJN6x#HajV! q~.X.h@O~\*+gx#sg& gTzn:(#B0^nZg2!G6yH 簀i?Tpe&hz )QkItgyT_?)k٤ޕchϷo+e/doUK/Np=+Ѫߙ-tEǸ>,:w9tjX@We]Գ,RO\m?-+𵑎Ѧ~ߛ_ځ^=I"m~}l{JAy~ygĎ]>r̄~uT)sGeMlrMgaA`{z^ҳB^ӽ{>;NX7gT@FDJ'f32餟TX kVIKTA5 󭛡SBBðp)3ЃNgF/(ToUT\3@k./pKR"[4+=x@Xvt̀8Y %'X&pGվ+6%+ł2{&, A䠻PuqϚGg*w:9_Gͧ~RUaٷ,cE"٬1cpɵ,z#)֡+tgM=ĂZ^vЖg6l-:jTUƲ_yBOgj2sWiIe9{XفdS% S|'oȍLnO GC7H/"Uܙx&M/8rad?`|}Rg~X,ʨ֓mq R;aXS $7@w΋"_X`299_lQ|9_&?rp>WrRPMbru<'YY폶w&RɵntKөcQ鋙#nIxMM=?$,"1IW,}ԿڧzLɮmfi^Muj׈ufhBf!ǥ8k>DǗ'8 vSċENcC۟>EPh\1&R/K/[fv\}>o T021l0WZa_oc@ S|2@eG7tz99夆ֆ J 1| ݂Ux%*"9^_C q幮%O.M޼R9|"LU3}O/Min7Z(;s-jQ:]H VtItWg c&*x}-/0N~0.{a@6K |I)RZz%h&CWc{m:cd#%RnKup2{US8_(@LW n;, Ԛ^ *N.:N kW?Z]lxy>gv}Z/"&z fGfl A?Y pO/ V29[56"[=, 1Hh~^jP~ŭ .7?xXoss֊Жd'p\)d8sz{솯%%Xo{ZAFD %e0q[%EQɅ7[ 1,T G2FM?SBA"56qnzV%w =(PF!Dy<,;>|t ;s_hɸMUauکgsOyTb4CU$:\k&]\6ʵ2o?-j(<ɲl35olo6zKS5x]j sZ/G.nN)}!ޠz)ǘM 'Pk6/m:4=?7,\rl`02zrB^tP'@V˞\D5?覵Q endstream endobj 1620 0 obj << /Length1 1615 /Length2 1695 /Length3 0 /Length 2524 /Filter /FlateDecode >> stream xڭTy\E [, -a AD%d&d$I!*UT\ R(V *􉊂(M`[|Ls1M] A!@ S0  p)*Q\qE ԍE + 6,hFH8kVLd_줣-Kqy1a\p \~|= 0?Qa Bp8}8iB3EX@lGaL PH,!@y"Hi "I0\@zI$ !G0Q<>IpY4!a -(14$JT8 1KL&0IC$D'B!ICrKNYxBaLfA$E T\:^(GhvH}3 2} A"gSA>Oyq2$/Wo QW91ݽٍF'.*ub hß{ QrMYap9iS,s^etGo޲=/; ^x0l 277šzvgjg=E_zSW>]1n81b聆3LB YHach.:m 5~שA 7'oȨ$PP݅t@uPl[dmByS̨'6=)cx>]'":"EWo|=Yxh`n)n J$asO㵑A2e6֏m!N5XԒP0UꀽVu OX]X\s{ 82'5]n:a9cdzDr=X׻نEP/TWZƨ1rcr^ޔIQS)E>#/7Y@:α5%;{Z7u([ IeABMG2W^G;?oBUnyK1OMfם"{|&f`sPy[mSdî\֕?g.jp5Wo֮ ㇓گ*͝~`b^>I]x5B\eFEfk%G?UmU-GlW !=a {o#6PzAC0 MՆuB겫9Z]|@-*PmyGnz(䎍nǵᢣW>+y!sYFiٯuc[%eDh)XQzfR6R(.sˉ0o "^רY=YwcDYWGIݺAZu!.$kƹg-"/*痮2~}}R3icKQ?bcд/\י٤?\ =ڝI q:4?1Oۺz~w}njtjM>X?J y~gFYAF{B4ԫoḅT~w]1g+*,{Kㆤ$nQe^y)N흔5% [_jU,i.=״oyRRի ewTjp+[ bKK<+]'肷\tr 2orݩ>X[0UuWhhw7,m endstream endobj 1622 0 obj << /Length1 1626 /Length2 15378 /Length3 0 /Length 16220 /Filter /FlateDecode >> stream xڭct_%vNl۶]1OضUSUaN*vvoKp텹ZsPj0Y8ALl̬e3w7u'e'>E&% ௝ Jh qr4:@ $`CH89{XYZ:t i'`n6V@{'g#/uY6@ VFY tTm6@G7 `ܘbLn@si@/s?.F37 `j;N"7/[UUR2 @CI1uK:w>9ߑ9ZF7i/ `ijw^k9Z]muHLlŧimcn\v-+R<6qW%iz;?[Qr_`ŝLlܼ&Nw/!>nVCYj7+ۿ<)Gs'Fdhw_uv<4GX[v2j-g wh,-w Wc2tKpǞ/xUDOA7PE0Ũ9\'7޴Q wW' ,Ggoh-`%gԩ'O4c#}Lq@&/<`Zzk]Ju[9,C u_ҵC %Nd\ڇɪ_[APGs<\,Vѧ`LP ^I>B\鳥Mf\ofهSp~K(l՛qT3/ՂpR-W~F~W,[7 Y#z/B7%n׌w쑼m~dwf}+p;˽U-֧J(>pe ҨW)!j'd5)z> .>/FB;_N> uX̯$?eу^8Ul1 74C݅rzFTb@.s -*pĹ1Gv~܁T-A=p}њD_gpDE}md9.፶}z7 $.>J[H3h,h?<n0Âξ[":M t:<}1lO:h?:[8A7e|5sOe۲ hÏ*h~f黫{VϢ+nKke8*x_:iMi5ڃZ,(A>1 >_Ha񓀢 yezn U),%xn]ݝ`('VN|ÁeWJҔ qrQՍ?0ɴW& i+шgDq.yXy3L7N2ՕWVSQީwNQv%mU[: 6ak~R@AKZJƍY"Mb||zSCv~'^׋O׈LOGZ$:ĜorFɎZ#`i 50rnE\h#UĜ8֘Բu+z - -"N;la}9`"ɏn7b`?>_M 62e#].49GdU\ Qh\Jݡ9@lr;>FhX~vR9}㑺r ÷ߨOI߱.rwHeǚw 4@ΟȭiXC88 %O2K˱4=]lڠ0c%}mِju<6oRoky x7edt % 6K>.%!h'%FLޣQkT=+ඛ6ˌU, \K"?^n&Dܲi1UE-Uٌ՘8v/&>L3U_h%} ہE>cx۵F{ͽj; 3!lu=WTKx} Uz㔙yn̈cԸ!y}܂R`{IxȫzjWUhbtgN !ч{~ofr1$1.\DR JԝV1M NGPVY=q6 XdE!ePz7%[_;?YH_k: MWKiECnXwR1_M(X2+<[C c1Q+ BVgǹ'5ǰ+xodmC9S'޲1|n|v'c{&rGHy{:16Nٰljvɩ:W)"51{'I= 0+X@(GFQ+J;su-Y SN-ƷliWUא/p2ݍkh8y|)Mbށq0V6qkP=5c` EJÑGϑDN;~c*g1\E qqʰV.zGO)R»"ќ#&8P4f# ?.VYeT2Z̞gj=S vT_2Hk'WddnT ^0BWsv1P~S<4q7-n>e)bcLr!Z]HE$I@N3/j.6KlWf|TzD6 IJ}?Wtq CכJ;]a"^ucVìЌD]ИsxyEC6707kQ8mS43ԓnP"MM¥ Gwpb횼Rzǝi|EqQS^%.D(̬0j|9՘\]ߕ ȳom(zePrtxbqo-IN3Qf;yEhڸ\#_c]Ȗ%Kߍim!wz=-:ba`l{+ >X_e9s-|~;⬺j]p;96R{j+%պ:aOI}? c.IYUB2թm3b9z!]^ZisUoWΉ̠K@%]tV]6sA%\VitGz4}d54gUTq2/G"(,Kx8P>K.8~ߏr*n_ߤH1F$`m# x4z҉KL&M8 PΛ l.q{:bЕa̢ kTNKE=bqPo i܌hClDpA^t$C_賴AGߺbR3^f!Sd#.!ݷMB7~R?7FZ[+,$M5ԆSgYP]!x FAOWf?`^|T J]W'>rd^& v10zsz > ?`"IgK|dSn]8%#Hi`2Mt d!eCEr?ԠmZ}(fʘH`!{ؓܓ^k&Ӏ450O卤\g\Tu9,]=hl-eaiV3b6WT|! VALhpAK_G+ 3~>O!ii}+#nr@v|T?YRsCr1"!IzT3#P&y3ϕBAvݮs0zNgRyATqTO7KϼM1=S\Yoh/Y٫6'Q]^<ɪw˛"}i@$#&љĸ6Pj3VP}`Ć&;ҙNd)8<[wR;SGGHRlW:|U ]21MfAqmi}Yt$O0UG,$ȋmgfj\?]D+j)+=sT? 3\Ĵ2/(< aXeYVwO/rHL-1)&u83?Z+֬rJWw{[V.X|ּ P:D=dB0Xădo[[L S5Qx2IRxŕc8 R=[zY[h!Ro2A&YZE@#.)рYbCDZ2<.q(i cpi \" @TΏ1eO` t{+dHB,s%E?otkQ}詋ˮ|_k'+,+@`7ם-y% !:lfgUaY: 0`=KY6;T}oժb:]*ZҚ%RޅJy6ʪ^tnIk2\7(9/|Q"@-rN 4eO?l -%q0Zo*;Oښ$՝rx?Xdg('V"hi (·W0e'[&;7<ؘj )\ u'ZAAdKdGIT:-{laUa]ħgh}O\ǧo42`KiU?a 36yn=7k <iovk#{!h#O Vg: 9#Ԗ(HDryܔKGֹ [[}Oep.E 멜l@QJmxHw5kCuCcn7w&WF+9 P=ڸnm[lw !?˜uN VIxM N,x>ᩉ]Ⱥ- Kh>F3>hirtg:U$*sn(#QӜlob3 ZGܔrKm1+8fy0d)فvTl_KXib>`J M[モ>Dw8|@S3йE]"]lc:1&5±d*ִ9y3)m>T\l,wl0,}&81VxyDoP}M" d8 |$oIţ5o#M!3Cx̓c|x٘ٵB`&Q !Mc39%Tb,7"+dDR³ԩ-;[ ][dUdWv^"l}čjT77Ɇ# 5VU1 y;s9%*Ro'8En#`Ro'^8mV=ԗuf/1IK X{B P<5*Dsf,M T|JEl2=</'eXH| :ej`]Y]q&Z-ь:ͬJ*ij`Zmq5޳'E*!C^H UDæ8h?QfxLڽy$2Źv'ff+a5,ԖwiC<QCD;K]9vհY }6Y6G8o9|\|4lp+.MXP\1ĦK1R63ߐlq+0X _)}'R<.$25R)ݣ)vz)TP圍n>Md,LuB*(>}0k/H:ݞ(U0>1iydݍ3XFmF.|TcID^j|=|p9 b! h, 8=-tU~|6ڛNN_7St&עIhȝdlAU?=6rk{d >P^vY&$MjÁ}LcD9* Du_taISBِkY21))i.k*6'Vz_g_1hB@ܾqmj?X(+|}̼bn *`oݻ,G :h9:)Ǜ Æ[G=~')#_o PVr.3N V,CɔqǗTU@1M/%NkUӱQqk?Hx/F_&\п@n)ɛoU%~Țqb- {PjufM u}F) Ɔ}T> ~d&/)сؙ7VF(3 Y5XDɵ.C'/Eq5g(Ns9[3Mv1rsqOٸz Ծ v<.=B~gHV QIJ3} Mꬕ>):|^(M;5#d=+}f]C3R04糄`\hFR\EMe_x;<nj{Xn.}wojPɢMW⛑eݓQvC1:6z%C9Ԅ.؞[# <0)ODnm!P1WO}m&|Gj` 2r#zkj?q_mHj> Bŕ0 `wIr #Zh?S6JI̬igx0?\r\d믶kqQX{բ"̕ܙ g75d ]B`s[yU|L,;LIo,) $x>s=#aL3@+:n|A~[M'A~$hԋ%̅osa}=> 1b4&]H68xJ9P y ?$\ @Y| g0wb(+p;2x 5}FQO.ODH0X/OxciWrCN+1`vIV^\90ezh-֪f;/E|?9=O\B2;Ek~vJe{ KK^4(Dž@_¤/c]LZ&5NY9}a`XtA-C8"*!&V7?!jDa3ܒ һDܒa'xtRW#y!jr~$6b3 Ħdo<\@43Y).Gs!e1/ Y.-<\ِL BYȶtA x5.%?<6lvn %x 8^2;X6I_:p WIWyUJ,}X3(Lh:#Iza3ۘϕˆUP0Ƣ2xp pϥDB[`zAٚ&T>&>$؊EAlkS3cD&y3?l]twբ7Xz~p_r{.J5R<x;W4k}s}^f3%i]Z'2hviӑ/;-qeӷn}?joVHmi吴-jB! b w>]*\*ѼAy9 Oal$y?n!QLjmXٝPBxڴ:*GXjm7eƾٶR*jOsA/WXcN<#j/* 7*WC!n/8kS9ň Rk0+}wUX {$DB9_OU;S rPBM/Ѳ' n 8K@wk#_b-qkN9yzB82^t~h , UKiJzGV""?{Ld.3=+b,[ŖO3WQ-$014f4,z͚uFέ* fGPBFZ.6Szc?fN[d`ǥ\}, ^)*4Lp`zWV =n݇֡Uy;@~p.Ol3+V'ZqPܝY/1*:5fh|:a]~gtKjZYpc>}6"(ʧcX(6aw[iIhR&4&U-KY:[f|̰ YWRH.%Kea~W74,3+?1 5!)8&N}]St{.&۔%>,N({w΀w-e꼹:~^W}CE@c"PQt-KЉP:4տбX۴U~6Maz~L۞ܵu{7 tzh8t6=6Y`HoqҎ m@mr[: OZ#]2cMxs!\ z 9nL⭲/jsZmm?BI#/!pzY.g41S[e44>')F=}gcrJ]3XqQŘmOk!w9>[sQC/3)G6LohO0{p6/R9+r =hh\QUؽ؛u.'a^n 7ȴW[,\`>-uQ>H`1R&U[?1_EU(]ڻ7vC5ߟ7@$Gx OٰI<8 ~879wkz?eOd'rOt wU^f"&r ^fW% fJ $hX/#0 65t* v@7{!MbAZv:G T,f{VٝI:{FF"~@B, DcqYG.ߓLIhջ+sDq= UhW5"=zF FNq%>O²\pۓMd-똂~pPoqS@ gr0Ωt 4JN?x̑IqI PCD'g {uщ'C >(O yy}$9 l6w^F$ކg  ,#FG̸doEI=έ qdu_#PhԾ*@mF$a "x*f/ Pì;/\/b,}9RG+Y&hW x)i6MŊ8NXCWd\%f4czVqF.s }^xj&0^DYU7EN|^!Ŏ /-9nQ 趂Yy̪Ǩw+jՅ[)=2;XVĜ2]#TzxGaM%*+J 3N𫾫hJ=)) :k<CaΘ.]a t.[wɂg=F/bDHK؃ x.W "n_{e~ZcqV; k4/F2LN rW,L;aFY' >"t4tݵ/ДzFK9]f;-!7 ^BKˠ)=+7G+d[i !y$ q^ݤ)g8ig-_D<uKh@(XZ G5Ơ^wq!!7:_XnpZp;Te(CR:%Z&ӢǗ^:iڻny):7'sbRG hZډ-=AYlQHԺbn/?fyʾ^%XFGQ4e_U$ql`NNgS5 xn?JJ{ a 6<v"4$-p\96ZgU9h/jE^V0Mny9ƞWP`Se:KNv1:g0 Ftf1]29N_QvP0=')ǔBRU)Xs7 ET!p.Kq0if fΦ=tL'\fx8Fұ1> stream xڬct]&vvXm۶w۶TlTRNb'o>=Ǹ5q5XTd*ꌢNf@)'G7FV&>WΉ@E%89J@ `E;9{l4jڴ )`6V?@{'g_kGu f X*Ji%M42ۘĺ@Z`\bL@sn@/s?*3`` :큛-3鯅__0'W7WsoT fmOlWj_K 'sJ/_+ O,3 o` jh0@@+S=/_uM/+ޒ oLslYGK'+˿ foN %ߐ;Hoz/>Wh)w{{%SdL @Ϣ7|LlO^Zt`n"h& m\l*6nKS=\q_m0?$p[t_3(+ko UG5NM_@yV4ux'#hd註:Z)Gm%_ oq^@se's0۬lF±I Vȱpz]piNSC9/˯D[G!FgqW ;Pz\,ZG{jFo0 ' ,GgDV0ƒ3O_F&@$Sy[?_<]kڵS5=}_I)v1Y/I>EXD=/##JSHh5,˞r7 e& j]΢(@עYՋHbAVՊh"Bi N)7v'n?Sadgs"""kAwVő /@Պ#V=e[;? +ՖЋ)y@.J'[Huwnޯۗ% l2s<*_2+wV)/Twh0ʠ`0K,#?k?8xŁO!5rWBh#1\|3[/O߲IDս@MXW@͢NXj*x?ܥ:l^06tp\ݹ2l$R3qzb (pL)^69*B/ G<՟N@*8~y?:i @2|:N4Jp&W-GPg,ևbvQ07{4 ;ыR?u16jxa"0EJP )ʌEuƎ^68{q޷VBB窥h,{_% ' N ;$~EWF-*uҊ, d0T3::XRnn/Z\mnI7ʗN]/< kY`Բ%EUAhBL$V>0〉mUH'RV?T4|ikmwJ8jR4Y7E^_b5nIF{ó %CNEڥ}#_~TRHnFm fO1HgTEK*[,ްCJ"OGC?‡h(= O"W#pcG;CxSpf4}ݼ)PJ$& ~=|.kG\ɝ{{C#?0ؒAn^4FS*b+;)Z>!"BG1Gs;Ӥ@XXG8!P>j᭛?_gh+K0s뉓;1me#aU29%a]̓Znd;uB_#*"^)9ccLel/=yB|,֋: oM;0j-r<=3CkGps,] މ&<*yBB}rӶ_`GjEI<Og+uo'gSboXĤO#z+ί LRWC2s3Ӭy 2D bmoKe_mΙcMu Ϫ6D`<7xKY[җٞ7K򢈍1*|]b( X~dD\9n7속y ,=L3m_ΐA2u}/*M6hd@*TGqYL2o Xk|f9Eh_4HL=wTջЦƆ@3eQT% Ca"S|T|M(vQ Ϗެ1#5eє EvW¾{Lbj/򤼤fQfi0N6rt߷ed8ŨϔʾE ao|'JW֒:?dFVN*eB@)ّv3S);̶0}ssB8hV_a_x|XfCˣA^^3_X4d}#`q$OZ/N~6;$ueH%('J ,296A 98mظ9?`G2W$R-/z1Sts+S E}"=79'V5, 8BlژlUϫ醘k,j^K"ùN(DZNK3JfrH~]t3N P9@_~zR G.Ĝaft"$J;駰0ZLXo,-E^g1B%ۅP,M-߆SVwOԗ?~v!DEuHxgӴ{ ?$|kFרagABOIa(H A%uCZZtfRK(CQFHUJ+*k-Myov*6e cM)a=je3IםJNզYVڝ_c^9,镐G/ .^btoF)CN;u' P{R`xNc(e<aV0ro7<1D!u VgZR]%'.y HAT' ݇!'J& ;Hc^T -3^-Q,=bďAN|q?~M]Pko0rUM$/0'٢tUÁ]Vuފ { 'Q>1u+3ةS^ڙv) HmhO3QԞ'ZHPIZB){Ge?jfɪ?b~~ʠ&+g>F({oEy~@=x н92 b̲ ^vQX`_`Vl!#O\;ίM~򨰰!qT,;2/ʾ6Kg/t9'82 9x7:]~s'[_os,mh*e`lp.~]}/NqR;u1yY Ng{f{sT}3VnT,5a5=ݡ2ǁŌh=ֲ\.1:ޖ<&8^6;C؉1FA'`VU8ƓǢaN-WŽ+&iHVw rnr)SfSk-ԻXDlm[8CIhe =e{ϝ0|6FgSWfzj;7RlRk@BF^.eP;17ViD=H.0oW8Hgx uVCǗubBcܙ)N(Rr_/d'2NY.ʼR_=ߗpA,qW*Zx t *wDcᨖmS3/)1R=B}fGe3|Z9`ƛET},6?ܼ?֯(ĖsEyIJctM/\|83( JTzp@=1_:m,A y:b@za%6UE@eM5&s ZSzd61or'mCX os*@'u2`7+d3 TSHQİsFzoˎCIS2} OulH[ 184yb:^tQxyE*P|/ n1AxV%\7&; y&WǬ̕RmՒ㧎-R G% ={Iv\3ʮl_@dTܨq @h}Jf ƯOj1~ֽ 'Z ^^g߯EX&ދ6Bp}ӫ,O_^)@ݰ++A:BcZݷ'&z|--A9MHڛ@<- WA1/ Ƹ )(Rp#.\қcV{koDڅU G>;Hl%fXu$:x"$$_.Ԣi$!Gr iz?_d3Y1)~:ol:c>uڳ% ߕ[o1+SFG'lo|+^=1˄Qs Ȳa H*hwwp.q1uKu'!Ϙwc`*/Ț>k+dEᅩvj<0l!H2kގR+T̑\wcłlsHXHhxfRrٌ:il D7LeO?+Xw-OA%w*u۫lԭcT)}@0!|۪V)!V-D<< I\Ym8/AjV¼ƽ"셽 aiSdA>E#H%Pi)P;G ZѺ;Iju_? NltDIeYMLH;e9I>~>ڣU|spG"8(0xXiKў&C] W`dNFcG:B" Ϳ24TFi?mrG:ave6=.'v>kTZY v!x0VA꼅wn3e^A|]r`]ǚT3"w.D^J84Egc}pv}$߼gz)W]L{jh6&чh;b2v>lͽ%QE]|3>kɩUc?nDY7VX `(=4mG?5VO,F\pHG8QK r}NCiA螻"P13 )G|C $ّ WѯTcUVw=y d {|6(6 s_%' glx۷{ ;8~ì"d$@i9z|/^~lHkF匨czLIYҁk5z]I&_o[TFnYU#-9h*\>\ɩ*{\-oYibiuJ5%3'81‡QkU/QEw ;h!_hW1Fv2 p&S6D; !;a5FÓ~6=\fzͻXZ؞f-; b)^y2/H=QIR 40K yjzQ$a\z{'c҈j؆̉-nϽOXsޭ1Lhaw1MT.ukJE}`s^~TnW>5id+1yo#J.!|[9ijAg uy ikb=$t!n|.6/ٝ/[똊rD4s_E59kz+c6 FoƘE^HH262+[;U!zo&x@7iǞڐ؎M~s!0gTqHY LfÉi ʚwk spLaNJ ܾa @&UA쏡pO@{:_H- ހ3cK5鬯9K#sDEBcM [ P/f].lrx<8ۜUc.~,[|x%E^@ijm&/!z7fF6$YwVb 7c#5JVu"9= &s>IV5άxhQpLØY0{ö;  ?)g ڃ5e#i|6{ʾH[ K-.uXO2@Y/h#nr= LD`Syah"w3*HD!-JLӎeKcKp4 U:h5ciE, )56S 3ws-nyZX(jmßjo"  A0WFF,jPp{VXߛjؠ8?tj=ehJۥj.6:L:)>Q>*ۙz7\tz?h%6g}bF GzvQƻi7eWuW󑞄)tϺT{1s] X5!.W1eZY^8~9{/B*?e7 Бmnf`p9 Fx|ְh<篐 ƶ2h^7Lc^+ z/ p9X^ֵ woU!FVEHfȕrLʰ-[ 6n u0後N=uG%^ N[4&Kt&?5.LxS |*0A8-Q؝vbo00G_R=E'+dvד{tTK=QdӔ@hSʖrˉ–O 킛R@ NN>NpV8DrD;=ԆLaqɘ=bJN 6kQ8K>heH1i0pd–b$݉z䜐OVPpKb'D~|k?6)IS6mCUp|WTL%3hlaos5|!SHw!E .9=7C@'γG 9rLk\u; ,4s[H`PCOЍxжIخ/5-}H.)wu!ڋ㼡;0]p抋*1ٙ^;(J$8~1.$[=Pv@]sJ7~'G-yqdO?-@|UTDйO9O8oUZ&2e 'leQ#B-smO xh7,ܣ4`7"" Q by3?k)YIh#Zut4;W'uyyPh/:, ;Xa5ur&|r~_0PV).vSu]Zo{YanΆU9 ;tkLtky C ҚLi9zgMhnH9PQCbLt8Au<=/вl9.\HO}߬ǢMU8`og+0 dpƚuYĩw.~{wjbINtYM^9$ zͩLD/RBAfRwY}LԸ/>(f?Q`DsZTN>?{VnaҼd Nfk|wb.ݷo*y/)<-%3 UAh:X1UxQ!QDh;W`"uY;<33[f;Z>$;Hefp򻂼<# h7pG@pM.ˈg)y?L^2iUFBLIzp&],!YOLW[՟f0u='m. fiPPON(c;0IEAuٚ,;(#g)CLĤR%ŗD* 6i9xERS:RY.فSYF!8氠mX q^Hm|uѼ+Yd4{}/&KXQ ޡv+5W"']3 zE!p $IڽpN|Ur?7J1 l+iv=UB^;{_%|4]Lغ9fCΛK*XJ {"4I}A\=+뻀y o q{a{@GpeT! BSQ.f8\Q Sv.^ ,̾)]ժ /( U~9t|N@am{it `cξ@Sz ZF4vDA.V6-{O[m5(<{C1E Oruee.a_kURE=7 kOEE>A*C?FaRܶb']&{Ut2 C<z_%R^5:]#S %dvbv\?ۙ Φ/"MG`=~|Q @ggew7\&AS8k u@aar13"GF]GlvQ/>r\o-;)4lc3nL]y8:|bf2IiKw2PZ@6J(DԼД ቑPrD~>dLs2zMݍWp:{ՋY +H:`MGKW):{"$Ќ,Kr# G'KB"U& #u%HRiQ/bJ2EIV;7Ny؍[ۿmZ,5eO*\h!ۧ~N6O8TlߜCɖU>M<\(y%'ϰy,Ŋ9j!%hJQVd3EW=7sޞ4?s vHzF풒X/(p;A[,rAru*Ijh50w$Pt}dGLSzR" ۧ=ڃ.)[xjY[ i7bmH4Zm"ozwG3JW: +-)vYot"/i6#o41t% %8gRRn[jqPѳF8=_Jؑΐq 0ݤ1t$&sl>Xo‰Q(6TũQ>6;j%!N)%ՠ˴SF85@RBKN5Plza"0ҿn{ӶKw?BE&_k)xӟ Sg)M7{G F$lEFhy@=1G֭Z68-=P5iwՐnI R#Rc OK^¸#O5 \3áEu6f6f3{ߕL~zK+4ib>..ǣTeȗd.ٯf!ӫ6EZz *1s4z=akm;E:g[oʎ3~FM\I!qEǁ ,x%J?v3c;Ip͢Z)>FQPBn`u˸LGmv%]UA siԞ)<.x}Ѽi*v[꓊ϸùϒNm9QYO,52%%*UY%?LW''Y>$Y,3k,#?&hf.[zn DU<"'j02u3iNmW6UlAy=Gp^'i1 ` 䠲 !!lNhonHBUz]yOTP`*~RY@U%++;nu8.U5iUWVi;I$؂4n}U|'.uĞgRRN20Z`UG=BdB<|ˌXz[aq (2}3C"ON,/P;5Dț s?FnszDo<|,NXz AG#نY_F8D!H{_Hv-rrlYn%|^ơ /f2@΄v"l#1Zge!BPUxf=nR|T췷Ps t(*]L4:N K |D1d*bbF2'r#tai+e|R>Mۿ7ˣ#z77g,&@x,%;i@%TKӛ0o})|3]s*誸BZK:_5G޳1݇a̮3rc?K(Os%.GX8uϫ nc7Q7O;q:oⶳG 5.]YCi &žL'zc#,iL\-B%j;Quރ-+ F&%rg%I˕ñTIa$)f6 owƨ.j_QB)so혻Y6o\@XArӠu#$5o.'K6Vnpd0SAgơ -KZ H̓(_? ɯ|Wr*Vn-? =ֲjVO眝)0#4|7.]Rӳ/MqKʝWf2 (<Aby7#&ԏcwF,DHhQ@[O@}w{/h YvtQF9ِ OmXg!s):-3z#.ͼ2Jc߂˽BâBĻ x.? gu~ƹ_pc0z}LlI6op<.q3Юy!.֐w !OE8_8Lp3Y" *WWzַF%)ʜ}5PDqEoi'[-Ί] ^K/"׵JE+n1_-jKG*:11hQwA<I1 kH$ bOCRtNrElp׃:3h vg AmM LcT&3!GR?##hyb6QK5*ܢ62W]5K~r8xg/3,n\=־DTW_t+ҳx']5㙑XVmO"0)k/j}fkX`8jpNaڙ禢k0ԋ= Xڄ}{֤oޮinxG| 4jFYNvQ0xajJl )CB6\,T&rpՆM)Boÿ -R3O:˶h),|"cwuTa Zy?6W86G5CN{pRWDoIS\^`UO0yckV_6NYuR"̭AlPytOE`c]<""-<[N'*B|a$A}e^#/6*ס0fPj0d aZ#pmDHjB͢C}4ƬOj#ˡ,9ybtȿP̕¡ &732RrK ĩ=!uΖ6Ψb[ "F' t Y] Z. J |`zow2Uu~^oP@}tRГ_AR6{adS<}X_ ޙB7pn"2)՚k%_Ʃ\Zq!I jjPlzݫUHj1Rg WOݛ8XN'Y˨;wJ_?P&G7be3)rlևUwyokh5n]>SS \={ɸ\ #8YK z@c~@@jm=++yi᜴˓O6,(2#aڀB&!=:;:3|Ӭ*.K+ê1Lڦ-mŶ#X`%BTHR P $ٌf5 XKU 2]u:hFAbB)jߩ&b59$M&;K.`+\`0%~ Ik[:_@8@ߦ=˨f&-IA q)i}a{ ./ʛڸ5'Y@dC175nY}4 ۆ-l^7(>Poawr[6IiL01:6^fR: x4;Cq0wpj5"';U LdH"*dϊbp(,x-DMƧq22B#*,U64z&+~ˉVw C0!! jbd1!3u=ǷM==Š*@MKDMsEuzΙ$fܚEr9/e)[PaA7qyY09gMWb~kӁ]uM6;㍡tuM;țK2m/qꝪ̊*8<s>dϒayl0>* ?I`͐N+.(h[w>bNn}{Pyg&TIBqt-@g 'Qmz4m@hE,7\e#0zjS]Ä6Uaf^(g9r-8NaVM]k_rfnk,HɅNai+L,eb[PmkFvP''ە֡fZ#*o]C xɥϊ)w#p 9H 6f۶WpggHixIICLiGT> O/nGDz0!SoWvƪT8>vD]XW-wvv]Pk_3\ w?ͫ ŗ$U!v G5ѡ:wV[eC|J@DŽ/.7z .x.msB݈A@,@+{##zUwNp~g|'}/ &QJXd  nFwﱪC%mMR endstream endobj 1626 0 obj << /Length1 1644 /Length2 5886 /Length3 0 /Length 6726 /Filter /FlateDecode >> stream xڭTu\m[DBaA:ffƙE@ABB$$DDB}u:21EQHPT\`rƚP 37o88 0(@HHT< ws-ͬe}!!qx9 p albg10 0vA!CbaWPҰx;XE pCh p, F=p$ cx2`hDS&GR=+ Fa4CQH? s3B!7E}"$o'5/N@׎  { #7߶Br醗FD^TJN\/Ն&p Fn08Ok"@qap'A0$U%S_"9edr1 g,oC1+Ocw?IdĭVM_$EC{"tMeµ7t 5[)_O޽nNv]('G|A&W*sXEG[1u}o7FI;j. "©% U95-kߌmMLmTQ̚SnjdpJW}9.< k%.G*FyXVMGK6F&}YZQc .B"6{DGN,\>$f.{LìT*^uI(}YlȣSRrՌWվߖy$Fzs*?Hs|nږ%ʨzgE [ݶJxRiv[]c:,?kVOjYJU8ޕb^Q|%/ړv4A=ᑓ8bCʆ%@.h-/`ϡrs"`rߙ&t /zOXb^n5V0WimGuO3>dϦ ]< U7I-TZM_鳗Yx` XEB:Pr`ݗElJi/:~X+cGh&Q@ Ճ;;֧I%P3%S52"hdc3͕oRHI,{?aM孇ʶi!NrZHJRvFws6@W5"Js'>5 hЎfvd8;ȉ2 QP9I9G5C;u'VvP m\,&YD~?ɉT1h,֡}!{4cQ$AcYJz˛L6I$qOԺW+d]Q7[;Omq4+׎4Y\JםJ4 K:]GPǃk\8g|'vllV #vƎ _E"gC`9yIU.v c?5vNT䋇9F*k2~J,ٶW(PtDBzT_;JƩp jOm /w9[J=l d{n.D{ptG]A~;?t^(Ożw*{ ]R3X̿M@߰-#Z"J'ba+VZ(."ʀ.o6ChҽȂ89sbZޣxbG< 'rޤ cI$%]jfvb|'7 _'}𣧁1=Nd|z0GEgix`;DZEKX4 _⩔KSFL6Z&t}ǗR^/]}-.iX/g*ˊ{]JGS{JZ_ۅc*Iއ)rLÀa`;qY}5Yܞyt$]lYUW0y#!{BvQLpX( nW9u扭ܵ dhgwx2h%_FHvPά,GUY31 )=L=;M(zGYrvTv]R<%jFCn ҧ~ˆ}) 6z tV 1~n2KcÔ87Cޠ2*o!nYm$fhk49/3JK?[.[~vrD\ΔfV˅`ʰ* #!dQҢ cN!H}lTe[?KIHYZS$ol4 x֟z|TSv^]$"XL|1ӜƗ)Y VC)>&Ƕs;a^-ނ'wLWgUR=}S񫭵(,]w-"?I]mCk54˵ǩW'x%5N22Z^Sb@бq ^7jPWWomپ Nz P)L~(XPΪ:x_PıkL\B^hC&q=6gߠFIſHdJbr?A緕;Zv!fLbl3CUkb5fj69_JN$Vy{7|teobNH+[CmE1"0pG?ܝg3+OHx_F8Hy}.zL*x`&ݞzF-2\6ۉzh =)*NՐ^o+[e2_T}хdĢX{Le3{a sa9!)a@I)j/$\|+o 3u2J7j׶[iVi_߭w,>h՝EPpScY}Sᇌ3,3tm]#2J+?\JDm(ҲJS5}t;RsZw ȩ\2U?,q4~%szW4}g)V$\Dqi"[4٩~;j1 $_j-X*prYL9U!v < {QM~W鈈Tw-q&W\VqY)il/ﯰEܐ%Yo(Q!n2εMYUC*:vW/(C;w/uR[=㣱M} 86sAVУo?y8t(ʾƟ4Xao!CISS?M^Z7.Q+d_6VLKSoGQ1r#F' z$E ~[QyhT7a8gdYçcWwnە|-7|]Vg1 bii3=i6p2L{r&vAzitKjxQ97dt-͠m&OLw# CƲ\@^FםDФp)) ,)^ʻ{Ƈ3VZtC|^塭l:z_, Ew~n+A#XWmݑc)o \HH L*tI&thR: ]2co;k|:ci(sW[U#nO jkya,v걲!'wƟ ~r xF]4m>^)y&i€PYH&9 |8WG"2^$vz-Z5jCɴ1ف gyn˒ û}&2o8IʅK֑w᳷aݛmwΡ4ƗAi] jd &#ȏъ]<򃴕\9iLo&(Sj8*{ _TY\kL[?Wfz$Ѽ@`tzg}RпPl.iDCīrA?1iCE bM}.eCCck8ǘ5gDsPFvW}r]~}0Zq%S(ƚMvn={ul}]Ni%/MzW)ۙG8ˍ/5ҼL:]r {ų#ČFNdE2o MFZUF8z PY?h=8-j' @#41iѓ#+(_!P _`9"`b~{K@{MSyЭHTwu w6 rft]+PɫӂqSr fyKOIG4qw?CD6) ='o$T!3s|FE+9JVa7HF9aoڋ]$hd8Zdy(E*}9͜._ בQ[켮[0rnsf{"_yə x:nBIX;Y1I^HHH. D*DuMvyh h3mtn7D6U>J2hwoM8:*a2;R !\1z]]4tF7nu{_^+iܶ~ o*7؞,#s2*@{JWoMfxh8TQbJdI dpVz cmib endstream endobj 1628 0 obj << /Length1 1647 /Length2 15023 /Length3 0 /Length 15880 /Filter /FlateDecode >> stream xڭct%l&F'ضmcضmtl۶m6:頃}̙uo̜{}UuU}]km2bE:!;#3=#7@IFގKNh"lh 8 -lE @h `f0qqqD=-̝jT44i`H' 3[@k;{_@ lZX" RJ y5 E#k c1 H0sX055'\BNC=ohD :X89 p9:g;? {G6dvNNƎ΀YE]?,;ӿ&v.//_ tw'`bdom7_2{Gdakf&@'4uohoohy,֦pLs;mfa ϼHٚm7q gfahbgk019M SO[oM_w7;3wd,kCG? jhca W?9+BfcbgIhhll05{yٚ-lE bd/?jښ~h(*)N=?3iٙ?Tv/:&v.39r1 -ڌLϓ53gT mM28:U_oq#݁p+v$T4ǁ z^KZSJz%P3,0T$|S0P@ /.ɓΞS Cb&_t0p|l4|spwCBOp! f'ROY+hFG8թqݼv\-=;@$8h [ZFƵDoqJ+)< <ʛ*]Z0WFzcjdm($BbIxˍNðZy&依}(\bQYXRi`!;у7$U=zRS jTd,2@'KnQ"Bߨqv5hA5F \*nyXdEKP1b?,VL]8Mi׸~n:^c_#$)`^ -P#lD>pȜ7k_ t(Rq2x:@ϵ@NhĻ)@#UKflFEk`|Wſ{ܟyȹ!r-QOT( ΢5kJ$V{4dɭ pFK[#Q\T7Չ5cɑ&,qG?tsq3Z[ Ij=2.ʵXt`>izDwMYB砢6P&M_ #*@f$7ܤXY<-ǣ_*]аsLjo6Rk}}mBA~;Tz.]n>ͫXG1OMvg@dfɰas%D?n+ 'lE}F9|1@@8"QXk1=A2hv% =m ,c0QIFcYEDhLB|F  ZLb ^?AIzKͭNQՋ u~kdC 702RW6ƏLM7~ESli+`r(&qu*>_\/˦we&]|o\[!>7xJM"ޫO!!Ω~sK8y 8.xd^ђvAkuhRE W>GG1v`oMM:ƅaISh(U"o&P8]7Y2֡HSrU{'|Ϊ΄<1F4O3LlL4ls)+1+\϶|" I~5Os_=`YH`[2#o0)7WĬb/P()Iɢ5c,MPI l̲>J\k<JȨɈ0QޗEF>39iMkkʩJ!w t>9U;dܹË^{ -<6UfpvXo(rBv}/O>Lקz\ND\b-k%E5z%Z'V)Oß4熨:x r/vq]6w6Gzv-*~`ׄr,VFF@@z.NСomk̞|!$S5r5f ݜ^c8s{G; @ߪ :{嘂N t?m{b._JZISBZP5i<.SFhC]2W^_2QAqmvNe el2y4N,憧c 8`D,zyy?$M &n6[R }?. *~P|SfD4/=ZV9I3cwDmnRvq12[Wa,g!A 2ReY`ԊU{*%6/h{|=Z]`@!K4 - )t%O)@+)#FxuށhDZmS=kӇ7}ɈnvKxl9'PhT,\`D5b Vy7:V|eOR׍1б|vKЮ޻^2;#T -|sAOqcղ_~]'0VS0S 4- Wcػjd,| ?2G C MŊ  y0wX^:D‡e24%[5m''r Q] ȒEUQe|Yj~F5 +l 8),2.IWOdjO}&WkyWPaN,vg% 3/?珀V HU'-Ƿgrd7BsoG75Ё`6ڥ(z/UYKY*{%p7<:R bM .4rDVvMB8)8F&\ad!4u#~&Z3=$cnWC?$ZGe ړuȚƟt 2).+fwN|.ИnƧ<&b/2O4-;^Y޲s`["9+)gOѯc-~6rM]ݮ2" ]FIo" dSGNK&̒gS~h ^Wrvrj;I f5/>~+[q@|XW ",DϞ9*Úsk>HjZfSYvT@;mM*a"xtzrPB6I ;E=/6sx.):LA"|hO I TԡUu'bgNr7Q:zw栽ԁRJVT#E>.gS6l:|XYpUXyAPc|*&Y-L8"WW&&e]X+4^]]9Ӆ[Kȫଠ`.c:|fArz1Akp JM@&Db4d2` bes΂n8#}}tmͨ?ïMR]Hoߖ|EGz[9 $UCT{Z3.hozMd]BΏpjx/pgf~_3(U<ȄQ-m H5? 8jxsp,SĈxRA pp,R\KAULoʉF ۡvod)N{hQZkyYQ3q{ރ {/qV6d% y d%]|'8ŷԅFoNEíY!}:E{f;"#zۭ3"saOPzC;2 R未n15OOpC=a^k3FZBQ#M?,5 /[2jbGd'Emxh`șbX{—{Ʒh.9?&c!-bFV?r0!JUsu!s9fƱyZ#A&Wp=k;on4x: P8+xUn Q ddTo32 j d¬u`k{Ku%r7nt-Wz灊n'Z%k04~nA5}/T wmR9ncmb,ƒ,R;o'0puSd[҂MiZ!L ֛`H{vK:o؛y1zI'`y4M?yڠ,b{33q=2^+~lCZ)CMRFT/'CARHW~ɶ !'y7qiT|^x|MA-_,ƕ7g) ۽#ϬaXߦ -ޜs\TTU&it}z7ɇYrL8])pGϙ5GzF|J{i:ajRxH+5B#3tL[ >T8gc\Į9:;FHq1MH @ߡH'h }!q ȉNRn6)~qG>ߦVC\ -I GЁɓ5߹C~C(-7'bi|:MIUaX9Mج[q1RDl=*Yкw2$'7YB嶡52|>S=pOkO/#{O~-Rk)l r0~&v̍$= ] (^-P0+2ǨœK` 6qL04aX̽Opr)Iyڪ lr<1T ldsj֓!^V8.[mD(#Z%iؔJm8wQhmE˄hfnȬ7rD)k3;LX7{!u"JFf/۬KTjwGaKꐟ׺Е.ɞv!o2p*-!uP ,eͤﬤGa=hYc9#V0[cͤz1W篗pm-(j[*7)I&g*~l뢁ij; 50XDLlt xKizP7/Q0 ƅEb86JkC b&jHzJzsuԏ#Ki;F d  Y!=,P*JJ.G^8`JO MBs!̩Z h;֑kqHZ2R>^O.' Rk r9M?uo{v"/bjv=6zH^%uUoΝlC*P7g#Cqz&[yye{W]3K?F7gR/ 7k9+=vLEW}KFH.jafHԳQ{BӶeSגxrtx\&o8n{ڂƁA*@T͘AzjԷ-JBHQQ̴֠Jǹ7FfXwH:2~2@ D"9sMDM|0&y9dJ0mz xhɨSYHgcQ+<\XܘJxl 5=b*BT oZT PjdOsFRPX3'pZ H"MCZ=8}Yxp0NMR>:V ;FYcnA A%:" t&2W׋"T'g~7m? u0'7j 1+f쉢ǞwxWaSy 7b+KG[H Yw=e XWY?1bZe, l\, (4$[k{ǫw#1!nQlb|3Er"q mkޜ&-*D2]U"f_M͟QZ.]˞W~\@>HwWnet>IcE[1j4XmOQ;5 ށO?fc3yV՚6Guc ,\k,-5dD!3d4%t˧ T) T{ZǑabBU ?hśOYSگPt5n(bOˡN&ڶ؎NqGAߙ;9T%}TYtNϵǖo~WJ] 0)ΓRDB'Rʛ Xf^d{Y/<ŴnOIe0p-;[}h  s;LNŞYJYŤij??;4Q "TR96t)(kCrDO{9FOW]3i$6SVS8ydoflH:Vt!jW8m:*BR;ǯ\ˍ=bJna6Eޤ$A$GZnp6(Nt7Wϲ?٢tr]oiTN 68UD[n; ;5 ?۷О%D PLMLJ/|g#h^g@dm-4j* XR͗zNKYmi 49i&#=X}c>,NLXx|™_AF?TD!7j@ K<7.|o[XndP8ǒ\. r sһ':TÙn?uzMwFf-#FPo+qV`+>]5njyE]?nOf~aх!'_kZ/BT٤]6IAISZD۵VVC6Ԫ欕-^%t<0moH(@_!w8?rf'DtػGehPkUyak%c_"Ƞr*T&yx\d%$cHI0.~)T2:+U,gK!5N 4ى~ WB+b~P캔ǹCtϬhe:6=+LQpʊv_aprHnd&A'ɺg@֊=DO\ԑ>Jx㄰C7J#¡c()m:(\,8x^=ys' 6Y SCY̏G|A ]QXQT'pmU4Z,/V?Sr|,sMA ?Y0I ~r%s9 L$pmFI!`^BY OZtdhqv|~"J evʘfI F,耍5ɑV ;[\ʿ#E_=7|} ` 3jɈorq_o9N̉B/WCMYK䓛>Se̒[=uF~)"}J} \ Bϔq;H6D20L ["SO˕[*jB59k6ڈpyk~4&H"nQd@ # }5%p0m1GW{g[e1cWY[mhq7DEK?ۏɜ7hc^E/&-}QHI;¿݀֋ YVџX0N!N`T6E"S8j@0X 5!4='` v( i-Lý^E )q[y]&SzjAm~p"۷WXPUwZ/N1d'2US769-\Cf/jp/8EMG;pzqJɚYeEST#x|R/PZ[U?bIW30۹^\Y@LqyvSJ&F"}JZtVA0^sZ7R׍;w;1¦rS(55$D؈o؋5} 'ˍbv:ӫX^Bؑިl+H&YI+Qإ>mW(lL벖bT=%_ 5TuD,BА,lW[_;5$ؾG]@ĒGVRAaROҍ5US'$غp;~N 4ݥkAIvns5$+י@sn;ldynkm d[xoSv~YQ&ǗT3o}9Um:]`[6B;\; b}!uۮ颽! > stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS >_P{=s@dkx;`VY`s4JaQܡn.Uu9\Y6><ٴ.Z.4>Dӗ}~r:-d0VWk,8yLһʮӮђ[*mLr?q 5F8@=@)& 8Rx uD\j2HV0CzL] bctI g$`htы0\F0s jd< I6zg W qȐ+#k .bsrbmXK7ǵH7Gnb>&jؐu1VljOu$՟qWS/%1{\xB!K(hHTЖ枃Jρϯv=k2UKς_:~$/ ~E+7ˢ/ l(/} -+ZXukoԝE?ZKq endstream endobj 1631 0 obj << /Length 739 /Filter /FlateDecode >> stream xmUMo0WxvHUdCmU^!1H#x?gx]OTm$|͜s_Iss :L;<Sz==׾f`*_`ɫڟk3'iѴ}=M;7rfnj-eSӵOLg~8 )ok A8 $`I\3`Af<Z]! xNky"7 _㓧q H`nḱRONH=CpB:# =%888QA~!*zƜАT?!~> tw8y*sύ }nFE>7*QύR>7G];~<6OIyktg>O:yұϓN|I/|yIg>O:y҅ϓ.}2 L> stream xmUMo:W5?$R. d9M eCkmCp;;w~>|3E_?O]5߶w]Occ]=~?}Oyh9%?۹׬B|Ɯ>);vw%g43>\ 6 EJ78 1{~`W(-;]%=xe_,b+-O;q\L}UI--=BKE1p[! Mߊyu>.N5K)Wb٬8i[_uʕMzQ)V(Txޢjy!Z2P="Zd0\ÃGR\).2*Шa!U,H`+j.5Nα@VK-x%3%AYӀzΚ>kP#5m0Woþj.ZT$X/)n)#Wo(oRZ $Kp4Z-b\1ܰJ P"GXQi/8k^Zq:Zs9dB )sL-7xJ`aɽ)f$1 dъcCZC<73JgznHȰYɚTa,_-O87}KԴܗLloK+gJ.GZyVc48Wt]:P~`rZq.n1] S/Pu7Ue:?&?!d&1yHn5)yғBx#1ޞ]Go׏M?X endstream endobj 1633 0 obj << /Length 851 /Filter /FlateDecode >> stream x}Un0+CW`$ MEDbɐCuA6ّD^}{l?YtգиY}w 9]7puewSClݤMӍ'oܺ sR^}5s8dz8'7&3Hy:LK-ٖ?0N[l "N/rDz=49z}'wt>X.oFzoкнz|::Q:XTߙOo'BZO KWjY׫u{FRsuB`ilB =@ )U 9yI(ѥ S*043``]߻A 𭑦 btX& #q,pg'~ι58|%Nb'QDa 8g"h~ ' ~Xkzǚ_81Bx.BzҬÀhƘ'g 2xk=6u2,bق6E0F,eL燆LY` YecODV3Μ蛳;zr֟P.O0{S3ux9(uF: }6,V|ƌV|gegV|F_+>O+>G|V|~+>C1 V|B|FB|/g)g1{!>_|&~'a9i0K!cB{XTK5;)NŽbPq<${y儢 19螡SsWѩ?!~t]QiT endstream endobj 1634 0 obj << /Length 851 /Filter /FlateDecode >> stream x}Un0+CW`$ MEDbɐCUA6ّD^}{l?Ytգ;q\]U}s9n\i|ٺQ]jOtusR^}5s89Ηfi<WOlKQn8N[-#;skQ70j(+o!$oΣ;n},j7Fzoкнzr::Q:XTߙOo'BZ;vv݋ ZԲW<'suB`ilB =@ )U 9yI(ѥ S*043``MSin|kiCXc, pDˆzA:x0)ljsn l9u}SrI4"nXCA8%&ٵ6AIǚc:7^EHOupQF^odž1BЖEQ?[0^׆ƨАԗ0 9+ãbLi~jЙ}s~zrCOe fYJ|֟uМ8gΈrYφ}ŊϘъ1LҊkgigϘ݊og3f3|3ߊY[3 =L3f/gd ,' f)Rx jb&'W *~8d0UPt" ~7a3t> stream x}Un0+CW`$ MEDbɐCUA6ّD^}{l?Ytգ;q\]U}s9n\i|ٺQ]jOtusR^}5s8dz8;_Nnft_= [-E~|;en>ڲ?bs0qj>vzЌBRe]*q8cMC0c F F 14Ej~1F60aG+ıcW c rn q9Qܗ8% DMq.5Sh]`4$a]~9Vk?qc.\Y7ь1O*ezl,d mY50ymȋ,aYʘ8 xA} /Y1<*T71މf 97g19w(g1?\֟`g Yg 9LsQ.(ulgYˊx/V|V|&٭ V|N+>cv+>7+>S} ~!>_Sϔ+>cB|&LOr`B,&+jwRP{xᇣI^U E'b\!'}s =C:CޯSBQY endstream endobj 1636 0 obj << /Length 665 /Filter /FlateDecode >> stream xmTMk0WhFG*! miʲVZCcYy#9햅ļ{3񸟤e&Oo]&C]]Mq>zwt߉Ǯ)n.pCx?nڽVgx=itO"i [\l\WM}'ԭ̚t4pXeȉeU oq yM\-CnCW_Ey}wP dZz891euB)] W-\v\]~[S!8&+Zce"'2Ɍ5I@|"B2AQhSlLء28a}ɑFq5ҍnnbfǮCG= Wܢe$g;A,:sx l=NOTƘ$0_س/vЧQ%~Zx pX2]$^qnaK??q FqMyc0=) &l(mi,3|d &\c ]͹&ӈ9w{d-tx\ \cΜekqLJs?<@>qhx .׷8wl~1V<*m"mmDa endstream endobj 1637 0 obj << /Length 990 /Filter /FlateDecode >> stream xmVnH+AMyثL,R~(r]]n7W~c7߽p}z\[{%8OeWϝ\'}oe<]8m|kq7,r[|UJ;P)ڮ:U8 *&~(Ia7~x;~z. OM~?/,x72 .OC+B89 :u m#)u:f 6FyY\g_BSfeMsbWe\@HhBcyI'_yPkf6SG8r5mmh-aEB)8d-89-9I_خZbو XXќaO ; v+[`SJ/Yr5N1C=5küFlXEs9䪘˂Zs2֕YQiˡZDebg\hG|U.v}@.-zFeeuMyuC5jM{ _)p5/b͚&8ЬySrߐH^-}P*`,}𝒞[m؉ lShreo-ȞURoZQl~~)ra ;4zj8QUG= > stream xmTMo0WxvB+8l[jWHL7RI;onDo3ތ?n~<&Y$ŝK_IsE77E[^N\5sߖ;7|[lzmS_*7F?h3΃;mc-bB`ew\_7oK׽;(2Z.ETz}ܟ~o9V^MVK7-\f\S}[S!pcSs|TXo1/ȡ aeuC> stream xmTMo0WxvB+8l[+ML7RI;onDo3ތ?n~<&YվI|/ŋ;t硋nn\3<:Wj\=?-wn6pGۦ|Tnʽgxté7~qzxKlqrnX7UޞMjuSAxHiQ,'wͱ 1}hW7q{UEݥ-rG*F>NNL7u]tNhWS;wE )b,#TTHy=)9>*QKr7P:MȡQ^s$LD6aȑ*s.$S56`>ƄmÁ#TL 5kd}WXssc*zRh/#? bE$L|ږ8^y>eSQc̯bV̯cNa'_OAJ195kd3EH@8ܰ%~As*=F 0`{RLPh33Y$LƹǬ oqMsȼ tx\ \cΜ-eksL ?"@>qhx ׷=l~1֍>*]!MBa endstream endobj 1640 0 obj << /Length 665 /Filter /FlateDecode >> stream xmTn0C6U@"mTt@;olvR3ތm~<&YվI|+œ;t羋<]3;Wj|{}[ mmᆂMv{Kt=c_~B?zxoBS6wBJ)X7UaMuSxHiQV,4$O;nC-bD/OCnC_n^ѻs׽9X2Z.ET~{~ʶrn_~߼h!R,6ew*ؔb%k e+Kӄ$a"1x*s.$S56P>Ƅm„A Fs 5577vرϾ+uaя6R:!,əCxg+ѧy*JcL|*m:fvuiWUꧏɩ\g%<Ϛ"sÖ0_:3x0kjhyIYx0aCnOg3$cx0<<v5O#ܵu7A 6*sZ ZcΜ-ܠeYksL ?"@>qh|tngk;dGGM@c endstream endobj 1641 0 obj << /Length 665 /Filter /FlateDecode >> stream xmTn0C6U@"mTt@;olvR3ތm~<&YվI|+œ;t羋<]3;Wj|{}[ mmᆂMv{Kt=cߚ~B?zxoBS6wBJ)X7UaMuSxHiQV,4$O;nC-bD/OCnC_n^ѻs׽9X2Z.ET~{~ʶrn_~߼h!R,6ew*ؔb%k e+Kӄ$a"1x*s.$S56P>Ƅm„A Fs 5577vرϾ+uaя6R:!,əCxg+ѧy*JcL|*m:fvuiWUꧏɩ\g%<Ϛ"sÖ0_:3x0kjhyIYx0aCnOg3$cx0<<v5O#ܵu7A 6*sZ ZcΜ-ܠeYksL ?"@>qh|tngk;dGGMc endstream endobj 1591 0 obj << /Type /ObjStm /N 100 /First 988 /Length 4172 /Filter /FlateDecode >> stream x[YoH~471@ۙlNAp،iYr$9E%>\ b,٪hk' #\;ED O0D) /xpp>N@ x cDhΰʼnaK]x**)"TDYϱe-Ofh$HkbJg%gNi%cZ8,,L _2ڠ@1P_δ`8UZ D"PHĈ } ר5ʍ<>uJp@  H q!0(@K a"*<q>g h@!tY\ɭ?1bp3xX7p&."`a/fQ - ĕr8Jг 'e4LvH>ka>)H< AD3a)ah- np j I.QsmB3?!<>7!иѫ [HǂqQa$<@ 8XLpGPgc*- q85`C6Z"!V5m~}4WlyOfУZ|d=O<7Ŋ|1FrB#)oGN0gBu~>'  w@Gύ) ɎD BP7bF#Jq;ipFFZjL `%t)=V180 rETmeYt18@ZBOz^}[@fYG#9$Q#g)H6>xT#αB+B DJ Ȍ`Y0qD5& 'qX,K(Z>Jw55O.g ݧ@4{3G,w:4hxvU4Z<AhDQ8P4zf2NSF>"FrTB>JS&ҁqP*p!p`HbiNYĂx@[aYXa@f~j% T=~i?wd:za yBˀbg7pR1l˿+؝ŶMppo '=pwM{N<@?H=~(_96_/m0q 7Y,#R7lm1O3 x3֒)$yvi9R'n?K6>z JHeO(C.y[yd|O'fW zlUݼQ4KID |{7z1ӫE5^U :Kz[-&Kt'= z<0ok~k6ˊ3YVj^/V*OxQЊneONON z|߭ lV%mw,"UՐEȮqCl7jr;ކ}`{񛓟Ύ98SġD]P<9Xw8 _}I_StL?o |"V+zM^W3:Pg_.銮UEW5~]|>ٓߏ^S8&z*_6'} |Noxy1\L^MUtBbRu v9N!nEƨ]L7`/?+e^9sZ0kȳhL;[|Uc3!pj\_UuyaRhI3fuXVɷ[޴]EZ;񯣷/^~k[ пŸeũR3t.Z/Nrry<Ϟ[2;C>8Z53m\n B=Wъ;UO^~xOgr<~l:[vO  Yg!dKVˊXhExz{=n'*oyzm˹~l`QO-)x61Ř1|8η8 q!tul_7PN:W٫:Ӫw/Ƽ&QLHȈP 7%n؇ ,ʗU߽xvuݙ*Wj2ڠ/u}8۴ݛ1gw4m-ؽM;wW]!L=rېؚlf-z/dvL|]TKQDD"䈴9e & wAO=SP[.#1$,Nc"?WJ+ѠZY! bW,,1c>/tIMFj{5+"Q=ka!_4^\f:{ړxޮNgYkY67OxYo6[fpO(Xtc`enr^ϧo3 ߍ'!:o7D"B$LHG$HW|]8Tę)e=2e|!@Jb ^'MInڐTw%%i ~tjI7ilH*1uItV{Cp1Z)/];b#-ܖ82z7.Qªw/oCd=$2Jn"{||Cll'=n `v^&|O;_UKE׸+9ÏXgKXq=\ӽ㈌eso&2+﷈ *WDDETM :}3"N ר֩ߤ{&.”VD$7I+I3Y2I?W"&Cb wƪIlr]]5L\G\qݟK׸&>.a: %T&ҜpLrPujhjrYb '+q2y+.2<(PC W5+9{lqb"[OUf?/dŷJ?-[d`Td*f$P\-1ưLG;V_}3lܓXbu4wZl1hKd _鹴 DMF?]T˒8fK_CL6Xn2glcgR+h醖JZr5kO+V=uX2ź3D9ġl;vL>}UcegGuA^A};Lo,.Bc$ XHQDZ!}] dR7 UlP]H Z}(14QD;wx+Jz "23o a"<5@!Y˴/,X;`g}v?oz@5~rB kޮj]?qf fvȱ#еMrw\SjWor۩%}):"cJi*nඐ+M}5 ]+"[К ){4logxک-2ĻOv kL ~_mJl¶ɔ) .b endstream endobj 1737 0 obj << /Producer (pdfTeX-1.40.24) /Author(\376\377\000G\000r\000e\000g\000\040\000G\000a\000m\000b\000l\000e\000\040\000;\000\040\000W\000e\000r\000n\000e\000r\000\040\000N\000i\000c\000k\000e\000l\000\040\000;\000\040\000E\000a\000m\000o\000n\000n\000\040\000O\000'\000B\000r\000i\000e\000n)/Title(\376\377\000A\000N\000U\000P\000Q)/Subject()/Creator(\376\377\000L\000a\000T\000e\000X\000\040\000w\000i\000t\000h\000\040\000h\000y\000p\000e\000r\000r\000e\000f\000\040\000p\000a\000c\000k\000a\000g\000e\000\040\000/\000\040\000G\000A\000P\000D\000o\000c)/Keywords() /CreationDate (D:19700101000000Z) /ModDate (D:19700101000000Z) /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) kpathsea version 6.3.4) >> endobj 1647 0 obj << /Type /ObjStm /N 99 /First 997 /Length 5270 /Filter /FlateDecode >> stream xڕ\[Fr~+&qE~8$HWQ왳#NW_t]9`ʃwypJD !@ a1!. p_25ӑc }K?̘<ֆ}NգOX6 ~O xyr~|n֖8 _,m\-!?!nA|"KCFR`2b3 ` Q2X `Rš#P,6r7ү %DehY %EbR+Ї1R E!+z- *@og4$݆(qS|2csV6(k99b5R yc b5`l6g ~Sa&^= ;Vl$,X @ƞELݒ7bmboaAMp(H#cioz}¦v^(_?=f >y8Û7j$ 2/ƗgL{!}~9Vn6V>/#]32(yN.m'.~1{Պk%l?{57f$WQ۰WdkLI$o{ .`=}&wxn>?һ=m#YIbQDm֔0U-l1Gxו IP4ixnHõOTA~ª(W_OɯL847wŠ'ҩL sЋζD?gNiz@_XIir3XQӲk}LqE,Nc=yETqfɚ軣 "\`/S1H2#<@IcbL)&{be/YrIMgP5jD>Uv%ۍ bru,MV|Dȼ9oa?O]J] y3C:H܈9͞&2i|&q']Ͷ.[mu O\㈭3gGt[ L@'v"ʋ3,ds긢VuG0r5aa A4bpp=!,yDRᾋc`96#sjM\WA+ՂaOX=~FgF2>FY*0 *)l+3lh]0wdi,y"ڠUG>#vqxPa1nb`7[<~gbHK:_41AJ:ij]rol8DZ0 m}^ QNtT H\+̠jͺN¬w9?r&Z]W/)j!}(H<:*=٭Ha;[ʞqa0qOFϼNGQ, t}wtqkkEN%Ņ:i@12n]%HzPPv5\8`vՊUB nlb]c}wtø"#A/"zP@je'iu\ ,nK:(u^$Ȑ̛mB8˱ _#% 2ϒ 3{+2qn.׀$@ b)9!W1d8i'FHА3##KT(O۩UԮ85b1j335 =?sE ~wt ^,-L+B%AfxJ.J4ZTSN)9ĘTf+kr#)yEMS3 Q턾;8*K_/pƠlaioTCpC-̕sj+J,EI^&3|S;U!r4."k`PPp ~wtu-9G׉pJ{}5T\+ ޶Sӧ*a^[x[8QCN=I5ŘM|]컵IhKzJ@W=(?}_xK۷oV/GWJ%>Q5~7})=+2~2;im6vm<2gthK_6.d' "h^hkaskZSUħ[ oyt S|]0d\$] DݢZdhn1$ڡ1Z<!%|]䖾xkvKphpk i`|jX s\RWzҫ;Z`ܝF{ɼV ٰkW^{ƩGҶ‡1k|5 FV$L%×^}\\$5miSD;NV6__'slu]`rzU N5 KeJ͵;Fq{.zE%wKǮEnzx M|vm[zU #ӊ\9%Oi>b7?i,k2ɭ]ѭMIj &9i"I Z|h>tJVTJQ $MZ\Ԡ]iYzan|+4eyEfSPArC\AbGAEm#Yx}o($;EPij;A lwRV*Nx9k٭‚ tS,KQ N@O>Z^30ʫ'WH_Y:DFfNcua "W^Jrlt09LFΦNsrBE7o8voBB.c#Gz{lMF9̷u $G-$֥c3{l(CF 4F ̮xN7zloq|oRy:6r-xϮ,p$ MsGoVޢGC}oo4gvlv{ q$IjX%q!J$)!=c=Ϡ/LwQ" O0Kbd{ěv1#33{ v$K2$sĵx $.a<>Kil`ϤKpKR$X0fe&^4p:EQA,*.+mg$.;3l&= gc.PiE$*Ɉ#5R'nocή2>xgcbe_yc>Q7F C|z]13$VkfO}%qe]YE}JzBQv7]Tsd$N.}YM[=Xt)t<5.Ϝ2uI{N]B%q<%太APSOOȧOMΤSEgP{f$Ωi<}('t`,4I-A= |M`  o|Ϻ.M-KlCgKlD,s7q=be>^әȗW|w]ЇFd}%o ,θdǓzP3$VcגVI.%VK[x򋎧_$96]q&W7x˜h8 u\:3뻟1F~lK˃kwy`mKj[nm۷lK ocB[96b+6.P~@nG{]qqSCw{7_j+ajajO ]J[VW!5R+7rzn Ҷ-  87 p/ . tiKdi(ʝމu4Х/t. ]Jg&.=P{!cz]4 /r9N^[}rV1;S M1c1]v>._.뷟ȸ<46\o8m/=8>>?}_v.?|Ͽ{5_<'qI_O~7<|z~mOGA<| ev endstream endobj 1738 0 obj << /Type /XRef /Index [0 1739] /Size 1739 /W [1 3 1] /Root 1736 0 R /Info 1737 0 R /ID [ ] /Length 4050 /Filter /FlateDecode >> stream x%i%Y=o5[Ͼo==ӳ"hH"H(# A^"!|((&|2x~w\Suru?]UzO^zkN{ }jӭ`Dژi0DR?68yIg?j*9KV[s<]VsEXְ6X:UsX]ՖVU{euV;XvO ֩=P{nu=l՞Y3ZjjOnj[՞=vkŨC`rV#tV~jj;Z=Ωݱ:ßdmptXk;q1R[vq8MՓpJuqkV95L\z.{#+ԮXx5qjfKVa7Z.X v^->2jvOZ\nFjgFPMMW#" 1X*7͋Pl&zeӑvؘzF-8vz*jB&ZW63A6As6sAK6A#6 A5A5KA5A5+A[5A35kA 5@4@4 j3hf'lԛ.~+R:n (7a usŽ[83)KĆMͱ[3 Y -4DjX耆f r5ڥTáF76io×F72o^;>4lbPň5 FymtFͰ?Շ8A(:nM+ qL#,q@;#hj1bD1/9N j<SX<6Իy#>ck ́-Cm lmbNaLx:~86@ݳ: G#q);op NY8*HTqK<Wƅ_ZG8&܆;p-^E1< Kz8 x菒u[5;W W"R5.Rwg.#N5fb 3W"R5tO#+UW-bVk`a}'qD,! \V%UkS_a O>*)T+U Q D+p*UrVUu^ qa`Su(81+US>plbR*TgR{GbUbM.k@R}[CUdžR!ML|7"U s*6U(_)Jߜ!͛)?K41a. R s~üv"X `-:XґΫ` d6onOqs.An݇LqD\>p6n-p(ߋQ=' H?.Kp6ձ<\wu7>\N闾ނp=7R/AJ8,s`߷cV48-X.瓞'7q;bC:bi생iGcn a|Il8n'[ &8J_9ϵgHO',\i;;c9wx*\J?Wxw- >pn]c_Z|I|bS7׶E|>bU|sፚH%ʁ<?xl[kFC%@r.0dNɜ*eY ,)S.+%%}/%A=0# 鸂xCR~m) !B.TKeyyZ < 2/[ <R-]z[ʷrk)R Rw@xXʷ|,Z>-_Aڵ 00āY0\a,ERXaUZ` 68l-v;a=~8()8442㛱zN)8 g,p.% W*\pn- w.܃B8 O)<^+x o@nՂ_ |-Zkׂ_ |-Zkׂ_ |-Zkׂ_ |-Zkׂ_ |-Zkׂ_ |-Zkׂ_ |-0LFԌQ3y-Zk2e^˼y-Zk2e^˼y-Zk2e^˼rOރ4$Zkү_K~-Dd!YٙޙZ6fɲ`n,g3< VX &33ql%Z=3[y26&V7E\Gye`72f`?6/; &2(ʦ[vL gtpf#; f3b01y1μ+Ȯu0_i,F82Fn`V53=3͙Y˼8^+x o@7aҟ撚 X{5+V23b1J1ęC?; C7ĽC<:ēCC<_'D̹ ~B/5}ܗ}ܗ}ܗ5D!r k\C"5D!r k\C~ok<[5D!r k\C"5D!r k\C"5D!r 55D!r k]rKSBC#4D!r k\C?4DOAC"5D!r ߆;pG rmk\ t rmk\ 6ߤaȟ endstream endobj startxref 493778 %%EOF anupq-3.3.0/doc/times.css000644 000766 000024 00000000261 14355420744 015537 0ustar00mhornstaff000000 000000 /* times.css Frank Lübeck */ /* Change default CSS to use Times font. */ body { font-family: Times,Times New Roman,serif; } anupq-3.3.0/doc/toggless.css000644 000766 000024 00000001672 14355420744 016254 0ustar00mhornstaff000000 000000 /* toggless.css Frank Lübeck */ /* Using javascript we change all div.ContSect to div.ContSectOpen or div.ContSectClosed. This way the config for div.ContSect in manual.css is no longer relevant. Here we add the CSS for the new elements. */ /* This layout is based on an idea by Burkhard Höfling. */ div.ContSectClosed { text-align: left; margin-left: 1em; } div.ContSectOpen { text-align: left; margin-left: 1em; } div.ContSectOpen div.ContSSBlock { display: block; text-align: left; margin-left: 1em; } div.ContSectOpen div.ContSSBlock a { display: block; width: 100%; margin-left: 1em; } span.tocline a:hover { display: inline; background: #eeeeee; } span.ContSS a:hover { display: inline; background: #eeeeee; } span.toctoggle { font-size: 80%; display: inline-block; width: 1.2em; } span.toctoggle:hover { background-color: #aaaaaa; } anupq-3.3.0/doc/chap2.txt000644 000766 000024 00000044415 14355420737 015455 0ustar00mhornstaff000000 000000 2 Mathematical Background and Terminology In this chapter we will give a brief description of the mathematical notions used in the algorithms implemented in the ANU pq program that are made accessible from GAP through this package. For proofs and details we will point to relevant places in the published literature. Also we will try to give some explanation of terminology that may help to use the low-level interactive functions described in Section 'Low-level Interactive ANUPQ functions based on menu items of the pq program'. However, users who intend to use these functions are strongly advised to acquire a thorough understanding of the algorithms from the quoted literature. There is little or no checking done in these functions and naive use may result in incorrect results. 2.1 Basic notions 2.1-1 pc Presentations and Consistency For details, see e.g. [NNN98]. Every finite p-group G has a presentation of the form: \{a_1,\dots,a_n \mid a_i^p = v_{ii}, 1 \le i \le n, [a_k, a_j] = v_{jk}, 1 \le j < k \le n \}.  where v_jk is a word in the elements a_k+1,dots,a_n for 1 ≤ j ≤ k ≤ n. This is called a power-commutator presentation (or pc presentation or pcp) of G, generators from such a presentation will be referred to as pc generators. In terms of such pc generators every element of G can be written in a normal form a_1^e_1dots a_n^e_n with 0 ≤ e_i < p. Moreover any given product of the generators can be brought into such a normal form using the defining relations in the above presentation as rewrite rules. Any such process is called collection. For the discussion of various collection methods see [LGS90] and [VL90b]. Every p-group of order p^n has such a pcp on n generators and conversely every such presentation defines a p-group. However a p-group defined by a pcp on n generators can be of smaller order p^m with m d one relation, having this generator as its right hand side, is marked as definition of this generator. As described in [NNN98], a weighted labelled pcp of a p-group can be obtained stepping down its p-central series. So let us assume that a weighted labelled pcp of G_i is given. A straightforward way of of writing down a (not necessarily consistent) pcp for its p-cover is to add generators, one for each relation which is not a definition, and modify the right hand side of each such relation by multiplying it on the right by one of the new generators -- a different generator for each such relation. Further relations are then added to make the new generators central and of order p. This procedure is called adding tails. A more formal description of it is again given in [NNN98]. It is important to realise that the new generators will generate an elementary abelian group, that is, in additive notation, a vector space over the field of p elements. As said, the pcp of the p-cover obtained in this way need not be consistent. Since the pcp of G_i was consistent, applying the consistency conditions to the pcp of the p-cover, in case the presentation obtained for p-cover is not consistent, will produce a set of equations between the new generators, that, written additively, are linear equations over the field of p elements and can hence be used to remove redundant generators until a consistent pcp is obtained. In reality, to follow this straightforward procedure would be forbiddingly inefficient except for very small examples. There are many ways of a priori reducing the number of new generators to be introduced, using e.g. the weights attached to the generators, and the main part of [NNN98] is devoted to a detailed discussion with proofs of these possibilities. 2.2-2 Imposing the Relations of the fp Group In order to obtain G/P_i+1(G) from the pcp of the p-cover of G_i = G/P_i(G), the defining relations from the original presentation of G must be imposed. Since G_i is a homomorphic image of G, these relations again yield relations between the new generators in the presentation of the p-cover of G_i. 2.2-3 Imposing Laws While we have so far only considered the computation of the factor groups of a given fp group by the groups of its descending p-central series, the p-quotient algorithm allows a very important variant of this idea: laws can be prescribed that should be fulfilled by the p-factor groups computed by the algorithm. The key observation here is the fact that at each step down the descending p-central series it suffices to impose these laws only for a finite number of words. Again for efficiency of the method it is crucial to keep the number of such words small, and much of [NO96] and the literature quoted in this paper is devoted to this problem. In this form, starting with a free group and imposing an exponent law (also referred to as an exponent check) the pq program has, in fact, found its most noted application in the determination of (restricted) Burnside groups (as reported in e.g. [HN80], [NO96] and [VL90a]). Via a GAP program using the local interactive functions of the pq program made available through this interface also arbitrary laws can be imposed via the option Identities (see 6.2). 2.3 The p-group generation Algorithm, Standard Presentation, Isomorphism Testing For details, see [New77] and [O'B90]. The p-group generation algorithm determines the immediate descendants of a given p-group G up to isomorphism. From what has been explained in Section 'Basic notions', it is clear that this amounts to the construction of the p-cover, the extension of the automorphisms of G to the p-cover and the determination of representatives of the orbits of the action of these automorphisms on the set of supplements of the nucleus in the p-multiplicator. The main practical problem here is the determination of these representatives. [O'B90] describes methods for this and the pq program allows choices according to whether space or time limitations must be met. As well as the descendants of G, the pq program determines their automorphism groups from that of G (see [O'B95]), which is important for an iteration of the process; this has been used by Eamonn O'Brien, e.g. in the classification of the 2-groups that are now also part of the Small Groups library available through GAP. A variant of the p-group generation algorithm is also used to define a standard presentation of a given p-group. This is done by constructing an isomorphic copy of the given group through a chain of descendants and at each step making a choice of a particular representative for the respective orbit of capable groups. In a fairly delicate process, subgroups of the p-multiplicator are represented by echelonised matrices and a first among the labels for standard matrices is chosen (this is described in detail in [O'B94]). Finally, the standard presentation provides a way of testing if two given p-groups are isomorphic: the standard presentations of the groups are computed, for practical purposes compacted and the results compared for being identical, i.e. the groups are isomorphic if and only if their standard presentations are identical. anupq-3.3.0/doc/ANUPQ.bib000644 000766 000024 00000014001 14355420571 015241 0ustar00mhornstaff000000 000000 @incollection {HN80, AUTHOR = {Havas, George and Newman, M. F.}, TITLE = {Application of computers to questions like those of {B}urnside}, BOOKTITLE = {Burnside groups ({P}roc. {W}orkshop, {U}niv. {B}ielefeld, {B}ielefeld, 1977)}, SERIES = {Lecture Notes in Math.}, VOLUME = {806}, PAGES = {211--230}, PUBLISHER = {Springer}, ADDRESS = {Berlin}, YEAR = {1980}, MRCLASS = {20-04 (20F50)}, MRNUMBER = {586047 (82d:20002)}, MRREVIEWER = {Colin M. Campbell}, } @article {NO96, AUTHOR = {Newman, M. F. and O'Brien, E. A.}, TITLE = {Application of computers to questions like those of {B}urnside. {II}}, JOURNAL = {Internat. J. Algebra Comput.}, FJOURNAL = {International Journal of Algebra and Computation}, VOLUME = {6}, YEAR = {1996}, NUMBER = {5}, PAGES = {593--605}, ISSN = {0218-1967}, MRCLASS = {20-04 (20D15 20F05)}, MRNUMBER = {1419133 (97k:20002)}, MRREVIEWER = {Colin M. Campbell}, DOI = {10.1142/S0218196796000337}, URL = {https://doi.org/10.1142/S0218196796000337}, } @article {NNN98, AUTHOR = {Newman, M. F. and Nickel, Werner and Niemeyer, Alice C.}, TITLE = {Descriptions of groups of prime-power order}, JOURNAL = {J. Symbolic Comput.}, FJOURNAL = {Journal of Symbolic Computation}, VOLUME = {25}, YEAR = {1998}, NUMBER = {5}, PAGES = {665--682}, ISSN = {0747-7171}, MRCLASS = {20F05 (68Q40)}, MRNUMBER = {1617995 (99f:20054)}, MRREVIEWER = {Michael C. Slattery}, DOI = {10.1006/jsco.1997.0193}, URL = {https://doi.org/10.1006/jsco.1997.0193}, } @article {LGS90, AUTHOR = {Leedham-Green, C. R. and Soicher, L. H.}, TITLE = {Collection from the left and other strategies}, NOTE = {Computational group theory, Part 1}, JOURNAL = {J. Symbolic Comput.}, FJOURNAL = {Journal of Symbolic Computation}, VOLUME = {9}, YEAR = {1990}, NUMBER = {5-6}, PAGES = {665--675}, ISSN = {0747-7171}, MRCLASS = {20D10 (68Q25)}, MRNUMBER = {1075430 (92b:20021)}, MRREVIEWER = {M. Greendlinger}, DOI = {10.1016/S0747-7171(08)80081-8}, URL = {https://doi.org/10.1016/S0747-7171(08)80081-8}, } @incollection {New77, AUTHOR = {Newman, M. F.}, TITLE = {Determination of groups of prime-power order}, BOOKTITLE = {Group theory ({P}roc. {M}iniconf., {A}ustralian {N}at. {U}niv., {C}anberra, 1975)}, PAGES = {73--84. Lecture Notes in Math., Vol. 573}, PUBLISHER = {Springer}, ADDRESS = {Berlin}, YEAR = {1977}, MRCLASS = {20D15}, MRNUMBER = {0453862 (56 \#12115)}, MRREVIEWER = {Bruce W. King}, } @article {OBr90, AUTHOR = {O'Brien, E. A.}, TITLE = {The {$p$}-group generation algorithm}, NOTE = {Computational group theory, Part 1}, JOURNAL = {J. Symbolic Comput.}, FJOURNAL = {Journal of Symbolic Computation}, VOLUME = {9}, YEAR = {1990}, NUMBER = {5-6}, PAGES = {677--698}, ISSN = {0747-7171}, MRCLASS = {20D15}, MRNUMBER = {1075431 (91j:20050)}, DOI = {10.1016/S0747-7171(08)80082-X}, URL = {https://doi.org/10.1016/S0747-7171(08)80082-X}, } @article {OBr94, AUTHOR = {O'Brien, E. A.}, TITLE = {Isomorphism testing for {$p$}-groups}, JOURNAL = {J. Symbolic Comput.}, FJOURNAL = {Journal of Symbolic Computation}, VOLUME = {17}, YEAR = {1994}, NUMBER = {2}, PAGES = {131, 133--147}, ISSN = {0747-7171}, MRCLASS = {20D15 (20D45 20F28)}, MRNUMBER = {1283739 (95f:20040b)}, MRREVIEWER = {Richard Davitt}, DOI = {10.1006/jsco.1994.1007}, URL = {https://doi.org/10.1006/jsco.1994.1007}, } @incollection {OBr95, AUTHOR = {O'Brien, E. A.}, TITLE = {Computing automorphism groups of {$p$}-groups}, BOOKTITLE = {Computational algebra and number theory ({S}ydney, 1992)}, SERIES = {Math. Appl.}, VOLUME = {325}, PAGES = {83--90}, PUBLISHER = {Kluwer Acad. Publ.}, ADDRESS = {Dordrecht}, YEAR = {1995}, MRCLASS = {20D15 (20D45)}, MRNUMBER = {1344923 (96g:20024)}, MRREVIEWER = {Wolfgang Lempken}, } @book {Sims94, AUTHOR = {Sims, Charles C.}, TITLE = {Computation with finitely presented groups}, SERIES = {Encyclopedia of Mathematics and its Applications}, VOLUME = {48}, PUBLISHER = {Cambridge University Press}, ADDRESS = {Cambridge}, YEAR = {1994}, PAGES = {xiii+604}, ISBN = {0-521-43213-8}, MRCLASS = {20F05 (20-02 68Q40 68Q42)}, MRNUMBER = {1267733 (95f:20053)}, MRREVIEWER = {Friedrich Otto}, DOI = {10.1017/CBO9780511574702}, URL = {https://doi.org/10.1017/CBO9780511574702}, } @incollection {VL84, AUTHOR = {Vaughan-Lee, M. R.}, TITLE = {An aspect of the nilpotent quotient algorithm}, BOOKTITLE = {Computational group theory ({D}urham, 1982)}, PAGES = {75--83}, PUBLISHER = {Academic Press}, ADDRESS = {London}, YEAR = {1984}, MRCLASS = {20F05 (20-04 20D15 68Q40)}, MRNUMBER = {760652 (86b:20040)}, MRREVIEWER = {M. F. Newman}, } @article {VL90a, AUTHOR = {Vaughan-Lee, M. R.}, TITLE = {Collection from the left}, NOTE = {Computational group theory, Part 1}, JOURNAL = {J. Symbolic Comput.}, FJOURNAL = {Journal of Symbolic Computation}, VOLUME = {9}, YEAR = {1990}, NUMBER = {5-6}, PAGES = {725--733}, ISSN = {0747-7171}, MRCLASS = {20F12 (20-04 20D15 20F18)}, MRNUMBER = {1075434 (92c:20065)}, MRREVIEWER = {M. Greendlinger}, DOI = {10.1016/S0747-7171(08)80085-5}, URL = {https://doi.org/10.1016/S0747-7171(08)80085-5}, } @book {VL90b, AUTHOR = {Vaughan-Lee, Michael}, TITLE = {The restricted {B}urnside problem}, SERIES = {London Mathematical Society Monographs. New Series}, VOLUME = {5}, NOTE = {Oxford Science Publications}, PUBLISHER = {The Clarendon Press Oxford University Press}, ADDRESS = {New York}, YEAR = {1990}, PAGES = {xiv+209}, ISBN = {0-19-853573-2}, MRCLASS = {20-02 (20F12 20F40 20F45 20F50)}, MRNUMBER = {1057610 (92c:20001)}, MRREVIEWER = {Norman Blackburn}, } anupq-3.3.0/doc/chap3.txt000644 000766 000024 00000120410 14355420737 015444 0ustar00mhornstaff000000 000000 3 Infrastructure Most of the details in this chapter are of a technical nature; the user need only skim over this chapter on a first reading. Mostly, it is enough to know that  you must do a LoadPackage("anupq"); before you can expect to use a command defined by the ANUPQ package (details are in Section 'Loading the ANUPQ Package');  partial results of ANUPQ commands and some other data are stored in the ANUPQData global variable (details are in Section 'The ANUPQData Record');  doing SetInfoLevel(InfoANUPQ, n); for n greater than the default value 1 will give progressively more information of what is going on behind the scenes (details are in Section 'Setting the Verbosity of ANUPQ via Info and InfoANUPQ');  in Section 'Utility Functions' we describe some utility functions and functions that run examples from the collection of examples of this package;  in Section 'Attributes and a Property for fp and pc p-groups' we describe the attributes and property NuclearRank, MultiplicatorRank and IsCapable; and  in Section 'Hints and Warnings regarding the use of Options' we describe some troubleshooting strategies. Also this section explains the utility of setting ANUPQWarnOfOtherOptions := true; (particularly for novice users) for detecting misspelt options and diagnosing other option usage problems. 3.1 Loading the ANUPQ Package To use the ANUPQ package, as with any GAP package, it must be requested explicitly. This is done by calling  Example  gap> LoadPackage( "anupq" ); --------------------------------------------------------------------------- Loading ANUPQ 3.3.0 (ANU p-Quotient) by Greg Gamble (GAP code, http://school.maths.uwa.edu.au/~gregg),  Werner Nickel (GAP code, https://www2.mathematik.tu-darmstadt.de/~nickel/), and  Eamonn O'Brien (C code, https://www.math.auckland.ac.nz/~obrien). maintained by:  Greg Gamble (http://school.maths.uwa.edu.au/~gregg) and  Max Horn (https://www.quendi.de/math). uses ANU pq binary (C code program) version: 1.9 Homepage: https://gap-packages.github.io/anupq/ Report issues at https://github.com/gap-packages/anupq/issues --------------------------------------------------------------------------- true  Note that since the ANUPQ package uses the AutomorphimGroupPGroup function of the AutPGrp package and, in any case, often needs other AutPGrp functions when computing descendants, the user must ensure that the AutPGrp package is also installed, at least version 1.5. If the AutPGrp package is not installed, the ANUPQ package will fail to load. Also, if GAP cannot find a working pq binary, the call to LoadPackage will return fail. If you want to load the ANUPQ package by default, you can put the LoadPackage command into your gap.ini file (see Section Reference: The gap.ini and gaprc files in the GAP Reference Manual). By the way, the novice user of the ANUPQ package should probably also append the line  Example  ANUPQWarnOfOtherOptions := true;  to their gap.ini file, somewhere after the LoadPackage( "anupq" ); command (see ANUPQWarnOfOtherOptions (3.6-1)). 3.2 The ANUPQData Record This section contains fairly technical details which may be skipped on an initial reading. 3.2-1 ANUPQData ANUPQData  global variable is a GAP record in which the essential data for an ANUPQ session within GAP is stored; its fields are: binary the path of the pq binary; tmpdir the path of the temporary directory used by the pq binary and GAP (i.e. the directory in which all the pq's temporary files are created) (also see ANUPQDirectoryTemporary (3.2-2) below); outfile the full path of the default pq output file; SPimages the full path of the file GAP_library to which the pq program writes its Standard Presentation images; version the version of the current pq binary; ni a data record used by non-interactive functions (see below and Chapter 'Non-interactive ANUPQ functions'); io list of data records for PqStart (see below and PqStart (5.1-1)) processes; topqlogfile name of file logged to by ToPQLog (see ToPQLog (3.4-7)); and logstream stream of file logged to by ToPQLog (see ToPQLog (3.4-7)). Each time an interactive ANUPQ process is initiated via PqStart (see PqStart (5.1-1)), an identifying number ioIndex is generated for the interactive process and a record ANUPQData.io[ioIndex] with some or all of the fields listed below is created. Whenever a non-interactive function is called (see Chapter 'Non-interactive ANUPQ functions'), the record ANUPQData.ni is updated with fields that, if bound, have exactly the same purpose as for a ANUPQData.io[ioIndex] record. stream the IOStream opened for interactive ANUPQ process ioIndex or non-interactive ANUPQ function; group the group given as first argument to PqStart, Pq, PqEpimorphism, PqDescendants or PqStandardPresentation (or any synonymous methods); haspcp is bound and set to true when a pc presentation is first set inside the pq program (e.g. by PqPcPresentation or PqRestorePcPresentation or a higher order function like Pq, PqEpimorphism, PqPCover, PqDescendants or PqStandardPresentation that does a PqPcPresentation operation, but not PqStart which only starts up an interactive ANUPQ process); gens a list of the generators of the group group as strings (the same as those passed to the pq program); rels a list of the relators of the group group as strings (the same as those passed to the pq program); name the name of the group whose pc presentation is defined by a call to the pq program (according to the pq program -- unless you have used the GroupName option (see e.g. Pq (4.1-1)) or applied the function SetName (see SetName (Reference: Name)) to the group, the generic name "[grp]" is set as a default); gpnum if not a null string, the number (i.e. the unique label assigned by the pq program) of the last descendant processed; class the largest lower exponent-p central class of a quotient group of the group (usually group) found by a call to the pq program; forder the factored order of the quotient group of largest lower exponent-p central class found for the group (usually group) by a call to the pq program (this factored order is given as a list [p,n], indicating an order of p^n); pcoverclass the lower exponent-p central class of the p-covering group of a p-quotient of the group (usually group) found by a call to the pq program; workspace the workspace set for the pq process (either given as a second argument to PqStart, or set by default to 10000000); menu the current menu of the pq process (the pq program is managed by various menus, the details of which the user shouldn't normally need to know about -- the menu field remembers which menu the pq process is currently in); outfname is the file to which pq output is directed, which is always ANUPQData.outfile, except when option SetupFile is used with a non-interactive function, in which case outfname is set to "PQ_OUTPUT"; pQuotient is set to the value returned by Pq (see Pq (4.1-1)) (the field pQepi is also set at the same time); pQepi is set to the value returned by PqEpimorphism (see PqEpimorphism (4.1-2)) (the field pQuotient is also set at the same time); pCover is set to the value returned by PqPCover (see PqPCover (4.1-3)); SP is set to the value returned by PqStandardPresentation or StandardPresentation (see PqStandardPresentation (5.3-4)) when called interactively, for process i (the field SPepi is also set at the same time); SPepi is set to the value returned by EpimorphismPqStandardPresentation or EpimorphismStandardPresentation (see EpimorphismPqStandardPresentation (5.3-5)) when called interactively, for process i (the field SP is also set at the same time); descendants is set to the value returned by PqDescendants (see PqDescendants (4.4-1)); treepos if set by a call to PqDescendantsTreeCoclassOne (see PqDescendantsTreeCoclassOne (A.4-1)), it contains a record with fields class, node and ndes being the information that determines the last descendant with a non-zero number of descendants processed; xgapsheet if set by a call to PqDescendantsTreeCoclassOne (see PqDescendantsTreeCoclassOne (A.4-1)) during an XGAP session, it contains the XGAP Sheet on which the descendants tree is displayed; and nextX if set by a call to PqDescendantsTreeCoclassOne (see PqDescendantsTreeCoclassOne (A.4-1)) during an XGAP session, it contains a list of integers, the ith entry of which is the x-coordinate of the next node (representing a descendant) for the ith class. 3.2-2 ANUPQDirectoryTemporary ANUPQDirectoryTemporary( dir )  function calls the UNIX command mkdir to create dir, which must be a string, and if successful a directory object for dir is both assigned to ANUPQData.tmpdir and returned. The field ANUPQData.outfile is also set to be a file in ANUPQData.tmpdir, and on exit from GAP dir is removed. Most users will never need this command; by default, GAP typically chooses a random subdirectory of /tmp for ANUPQData.tmpdir which may occasionally have limits on what may be written there. ANUPQDirectoryTemporary permits the user to choose a directory (object) where one is not so limited. 3.3 Setting the Verbosity of ANUPQ via Info and InfoANUPQ 3.3-1 InfoANUPQ InfoANUPQ  info class The input to and the output from the pq program is, by default, not displayed. However the user may choose to see some, or all, of this input/output. This is done via the Info mechanism (see Section Reference: Info Functions in the GAP Reference Manual). For this purpose, there is the InfoClass InfoANUPQ. If the InfoLevel of InfoANUPQ is high enough each line of pq input/output is directed to a call to Info and will be displayed for the user to see. By default, the InfoLevel of InfoANUPQ is 1, and it is recommended that you leave it at this level, or higher. Messages that the user should presumably want to see and output from the pq program influenced by the value of the option OutputLevel (see the options listed in Section Pq (4.1-1)), other than timing and memory usage are directed to Info at InfoANUPQ level 1. To turn off all InfoANUPQ messaging, set the InfoANUPQ level to 0. There are five other user-intended InfoANUPQ levels: 2, 3, 4, 5 and 6.  Example  gap> SetInfoLevel(InfoANUPQ, 2);  enables the display of most timing and memory usage data from the pq program, and also the number of identity instances when the Identities option is used. (Some timing and memory usage data, particularly when profuse in quantity, is Info-ed at InfoANUPQ level 3 instead.) Note that the the GAP functions time and Runtime (see Runtime (Reference: Runtime) in the GAP Reference Manual) count the time spent by GAP and not the time spent by the (external) pq program.  Example  gap> SetInfoLevel(InfoANUPQ, 3);  enables the display of output of the nature of the first two InfoANUPQ that was not directly invoked by the user (e.g. some commands require GAP to discover something about the current state known to the pq program). The identity instances processed under the Identities option are also displayed at this level. In some cases, the pq program produces a lot of output despite the fact that the OutputLevel (see 6.2) is unset or is set to 0; such output is also Info-ed at InfoANUPQ level 3.  Example  gap> SetInfoLevel(InfoANUPQ, 4);  enables the display of all the commands directed to the pq program, behind a ToPQ>  prompt (so that you can distinguish it from the output from the pq program). See Section 'Hints and Warnings regarding the use of Options' for an example of how this can be a useful troubleshooting tool.  Example  gap> SetInfoLevel(InfoANUPQ, 5);  enables the display of the pq program's prompts for input. Finally,  Example  gap> SetInfoLevel(InfoANUPQ, 6);  enables the display of all other output from the pq program, namely the banner and menus. However, the timing data printed when the pq program exits can never be observed. 3.4 Utility Functions 3.4-1 PqLeftNormComm PqLeftNormComm( elts )  function returns for a list of elements of some group (e.g. elts may be a list of words in the generators of a free or fp group) the left normed commutator of elts, e.g. if w1, w2, w3 are such elements then PqLeftNormComm( [w1, w2, w3] ); is equivalent to Comm( Comm( w1, w2 ), w3 );. Note: elts must contain at least two elements. 3.4-2 PqGAPRelators PqGAPRelators( group, rels )  function returns a list of words that GAP understands, given a list rels of strings in the string representations of the generators of the fp group group prepared as a list of relators for the pq program. Note: The pq program does not use / to indicate multiplication by an inverse and uses square brackets to represent (left normed) commutators. Also, even though the pq program accepts relations, all elements of rels must be in relator form, i.e. a relation of form w1 = w2 must be written as w1*(w2)^-1. Here is an example:  Example  gap> F := FreeGroup("a", "b");  gap> PqGAPRelators(F, [ "a*b^2", "[a,b]^2*a", "([a,b,a,b,b]*a*b)^2*a" ]); [ a*b^2, a^-1*b^-1*a*b*a^-1*b^-1*a*b*a, b^-1*a^-1*b^-1*a^-1*b*a*b^-1*a*b*a^  -1*b*a^-1*b^-1*a*b*a*b^-1*a^-1*b^-1*a^-1*b*a*b^-1*a*b^-1*a^-1*b*a^-1*b^  -1*a*b*a*b*a^-1*b*a*b^-1*a*b*a^-1*b*a^-1*b^-1*a*b*a*b^-1*a^-1*b^-1*a^  -1*b*a*b^-1*a*b^-1*a^-1*b*a^-1*b^-1*a*b*a*b^2*a*b*a ]  3.4-3 PqParseWord PqParseWord( word, n )  function parses a word, a string representing a word in the pc generators x1,...,xn, through GAP. This function is provided as a rough-and-ready check of word for syntax errors. A syntax error will cause the entering of a break-loop, in which the error message may or may not be meaningful (depending on whether the syntax error gets caught at the GAP or kernel level). Note: The reason the generators must be x1,...,xn is that these are the pc generator names used by the pq program (as distinct from the generator names for the group provided by the user to a function like Pq that invokes the pq program). 3.4-4 PqExample PqExample( )  function PqExample( example[, PqStart][, Display] )  function PqExample( example[, PqStart][, filename] )  function With no arguments, or with single argument "index", or a string example that is not the name of a file in the examples directory, an index of available examples is displayed. With just the one argument example that is the name of a file in the examples directory, the example contained in that file is executed in its simplest form. Some examples accept options which you may use to modify some of the options used in the commands of the example. To find out which options an example accepts, use one of the mechanisms for displaying the example described below. Some examples have both non-interactive and interactive forms; those that are non-interactive only have a name ending in -ni; those that are interactive only have a name ending in -i; examples with names ending in .g also have only one form; all other examples have both non-interactive and interactive forms and for these giving PqStart as second argument invokes PqStart initially and makes the appropriate adjustments so that the example is executed or displayed using interactive functions. If PqExample is called with last (second or third) argument Display then the example is displayed without being executed. If the last argument is a non-empty string filename then the example is also displayed without being executed but is also written to a file with that name. Passing an empty string as last argument has the same effect as passing Display. Note: The variables used in PqExample are local to the running of PqExample, so there's no danger of having some of your variables over-written. However, they are not completely lost either. They are saved to a record ANUPQData.examples.vars, i.e. if F is a variable used in the example then you will be able to access it after PqExample has finished as ANUPQData.examples.vars.F. 3.4-5 AllPqExamples AllPqExamples( )  function returns a list of all currently available examples in default UNIX-listing (i.e. alphabetic) order. 3.4-6 GrepPqExamples GrepPqExamples( string )  function runs the UNIX command grep string over the ANUPQ examples and returns the list of examples for which there is a match. The actual matches are Info-ed at InfoANUPQ level 2. 3.4-7 ToPQLog ToPQLog( [filename] )  function With string argument filename, ToPQLog opens the file with name filename for logging; all commands written to the pq binary (that are Info-ed behind a ToPQ>  prompt at InfoANUPQ level 4) are then also written to that file (but without prompts). With no argument, ToPQLog stops logging to whatever file was being logged to. If a file was already being logged to, that file is closed and the file with name filename is opened for logging. 3.5 Attributes and a Property for fp and pc p-groups 3.5-1 NuclearRank NuclearRank( G )  attribute MultiplicatorRank( G )  attribute IsCapable( G )  property return the nuclear rank of G, p-multiplicator rank of G, and whether G is capable (i.e. true if it is, or false if it is not), respectively. These attributes and property are set automatically if G is one of the following:  an fp group returned by PqStandardPresentation or StandardPresentation (see PqStandardPresentation (4.2-1));  the image (fp group) of the epimorphism returned by an EpimorphismPqStandardPresentation or EpimorphismStandardPresentation call (see EpimorphismPqStandardPresentation (4.2-2)); or  one of the pc groups of the list of descendants returned by PqDescendants (see PqDescendants (4.4-1)). If G is an fp group or a pc p-group and not one of the above and the attribute or property has not otherwise been set for G, then PqStandardPresentation is called to set all three of NuclearRank, MultiplicatorRank and IsCapable, before returning the value of the attribute or property actually called. Such a group G must know in advance that it is a p-group; this is the case for the groups returned by the functions Pq and PqPCover, and the image group of the epimorphism returned by PqEpimorphism. Otherwise, if you know the group to be a p-group, then this can be set by typing  SetIsPGroup( G, true );  or by invoking IsPGroup( G ). Note that for an fp group G, the latter may result in a coset enumeration which might not terminate in a reasonable time. Note: For G such that HasNuclearRank(G) = true, IsCapable(G) is equivalent to (the truth or falsity of) NuclearRank( G ) = 0. 3.6 Hints and Warnings regarding the use of Options On a first reading we recommend you skip this section and come back to it if and when you run into trouble. Note: By options we refer to GAP options. The pq program also uses the term option; to distinguish the two usages of option, in this manual we use the term menu item to refer to what the pq program refers to as an option. Options are passed to the ANUPQ interface functions in either of the two usual mechanisms provided by GAP, namely:  options may be set globally using the function PushOptions (see Chapter Reference: Options Stack in the GAP Reference Manual); or  options may be appended to the argument list of any function call, separated by a colon from the argument list (see Chapter Reference: Function Calls in the GAP Reference Manual), in which case they are then passed on recursively to any subsequent inner function call, which may in turn have options of their own. Particularly, when one is using the interactive functions of Chapter 'Interactive ANUPQ functions', one should, in general, avoid using the global method of passing options. In fact, it is recommended that prior to calling PqStart the OptionsStack be empty. The essential problem with setting options globally using the function PushOptions is that options pushed onto OptionsStack, in this way, (generally) remain there until an explicit PopOptions() call is made. In contrast, options passed in the usual way behind a colon following a function's arguments (see Reference: Function Call With Options in the GAP Reference Manual) are local, and disappear from OptionsStack after the function has executed successfully. If the function does not execute successfully, i.e. it runs into error and the user quits the resulting break loop (see Section Reference: Break Loops in the Reference Manual) rather than attempting to repair the problem and typing return; then, unless the error at the kernel level, the OptionsStack is reset. If an error is detected inside the kernel (hopefully, this should occur only rarely, if at all) then the options of that function will not be cleared from OptionsStack; in such cases:  Example  gap> ResetOptionsStack(); #I Options stack is already empty  is usually necessary (see Chapter ResetOptionsStack (Reference: ResetOptionsStack) in the GAP Reference Manual), which recursively calls PopOptions() until OptionsStack is empty, or as in the above case warns you that the OptionsStack is already empty. Note that a function, that is passed options after the colon, will also see any global options or any options passed down recursively from functions calling that function, unless those options are over-ridden by options passed via the function. Also, note that duplication of option names for different programs may lead to misinterpretations, and mis-spelled options will not be seen. The non-interactive functions of Chapter 'Non-interactive ANUPQ functions' that have Pq somewhere in their name provide an alternative method of passing options as additional arguments. This has the advantages that options can be abbreviated and mis-spelled options will be trapped. 3.6-1 ANUPQWarnOfOtherOptions ANUPQWarnOfOtherOptions  global variable is a global variable that is by default false. If it is set to true then any function provided by the ANUPQ function that recognises at least one option, will warn you of other options, i.e. options that the function does not recognise. These warnings are emitted at InfoWarning or InfoANUPQ level 1. This is useful for detecting mis-spelled options. Here is an example using the function Pq (first described in Chapter 'Non-interactive ANUPQ functions'):  Example  gap> SetInfoLevel(InfoANUPQ, 1); # Set InfoANUPQ to default level gap> ANUPQWarnOfOtherOptions := true;; gap> # The following makes entry into break loops very ``quiet'' ... gap> OnBreak := function() Where(0); end;; gap> F := FreeGroup( "a", "b" );  gap> Pq( F : Prime := 2, Classbound := 1 ); #I ANUPQ Warning: Options: [ "Classbound" ] ignored #I (invalid for generic function: `Pq'). user interrupt at moreOfline := ReadLine( iostream ); Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can 'return;' to continue  Here we mistyped ClassBound as Classbound, and after seeing the Info-ed warning that Classbound was ignored, we typed a control-C (that's the user interrupt at message) which took us into a break loop. Since the Pq command was not able to finish, the options Prime and Classbound, in particular, will still be on the OptionsStack:  Example  brk> OptionsStack; [ rec( Prime := 2, Classbound := 1 ),   rec( Prime := 2, Classbound := 1, PqEpiOrPCover := "pQuotient" ) ]  The option PqEpiOrPCover is a behind-the-scenes option that need not concern the user. On quitting the break-loop the OptionsStack is reset and a warning telling you this is emitted:  Example  brk> quit; # to get back to the `gap>' prompt #I Options stack has been reset  Above, we altered OnBreak (see OnBreak (Reference: OnBreak) in the Reference manual) to reduce the back-tracing on entry into a break loop. We now restore OnBreak to its usual value.  Example  gap> OnBreak := Where;;  Notes In cases where functions recursively call others with options (e.g. when using PqExample with options), setting ANUPQWarnOfOtherOptions := true may give rise to spurious other option detections. It is recommended that the novice user set ANUPQWarnOfOtherOptions to true in their gap.ini file (see Section 'Loading the ANUPQ Package'). Other Troubleshooting Strategies There are some other strategies which may have helped us to see our error above. The function Pq recognises the option OutputLevel (see 6.2); if this option is set to at least 1, the pq program provides information on each class quotient as it is generated:  Example  gap> ANUPQWarnOfOtherOptions := false;; # Set back to normal gap> F := FreeGroup( "a", "b" );; gap> Pq( F : Prime := 2, Classbound := 1, OutputLevel := 1 );  #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^2 #I Group: [grp] to lower exponent-2 central class 2 has order 2^5 #I Group: [grp] to lower exponent-2 central class 3 has order 2^10 #I Group: [grp] to lower exponent-2 central class 4 has order 2^18 #I Group: [grp] to lower exponent-2 central class 5 has order 2^32 #I Group: [grp] to lower exponent-2 central class 6 has order 2^55 #I Group: [grp] to lower exponent-2 central class 7 has order 2^96 #I Group: [grp] to lower exponent-2 central class 8 has order 2^167 #I Group: [grp] to lower exponent-2 central class 9 has order 2^294 #I Group: [grp] to lower exponent-2 central class 10 has order 2^520 #I Group: [grp] to lower exponent-2 central class 11 has order 2^932 #I Group: [grp] to lower exponent-2 central class 12 has order 2^1679 [... output truncated ...]  After seeing the information for the class 2 quotient we may have got the idea that the Classbound option was not recognised and may have realised that this was due to a mis-spelling. The above will ordinarily cause the available space to be exhausted, necessitating user-intervention by typing control-C and quit; (to escape the break loop); otherwise Pq terminates when the class reaches 63 (the default value of ClassBound). If you have some familiarity with keyword command input to the pq binary, then setting the level of InfoANUPQ to 4 would also have indicated a problem:  Example  gap> ResetOptionsStack(); # Necessary, if a break-loop was entered above gap> SetInfoLevel(InfoANUPQ, 4); gap> Pq( F : Prime := 2, Classbound := 1 ); #I ToPQ> 7 #to (Main) p-Quotient Menu #I ToPQ> 1 #define group #I ToPQ> name [grp] #I ToPQ> prime 2 #I ToPQ> class 63 #I ToPQ> exponent 0 #I ToPQ> output 0 #I ToPQ> generators { a,b } #I ToPQ> relators { }; [... output truncated ...]  Here the line #I ToPQ> class 63 indicates that a directive to set the classbound to 63 was sent to the pq program. anupq-3.3.0/doc/chapBib.html000644 000766 000024 00000022561 14355420744 016131 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - References

References

[HN80] Havas, G. and Newman, M. F., Application of computers to questions like those of Burnside, in Burnside groups (Proc. Workshop, Univ. Bielefeld, Bielefeld, 1977), Springer, Lecture Notes in Math., 806, Berlin (1980), 211--230.

[LGS90] Leedham-Green, C. R. and Soicher, L. H., Collection from the left and other strategies, J. Symbolic Comput., 9 (5-6) (1990), 665--675
(Computational group theory, Part 1).

[New77] Newman, M. F., Determination of groups of prime-power order, in Group theory (Proc. Miniconf., Australian Nat. Univ., Canberra, 1975), Springer, Berlin (1977), 73--84. Lecture Notes in Math., Vol. 573.

[NNN98] Newman, M. F., Nickel, W. and Niemeyer, A. C., Descriptions of groups of prime-power order, J. Symbolic Comput., 25 (5) (1998), 665--682.

[NO96] Newman, M. F. and O'Brien, E. A., Application of computers to questions like those of Burnside. II, Internat. J. Algebra Comput., 6 (5) (1996), 593--605.

[O'B90] O'Brien, E. A., The p-group generation algorithm, J. Symbolic Comput., 9 (5-6) (1990), 677--698
(Computational group theory, Part 1).

[O'B94] O'Brien, E. A., Isomorphism testing for p-groups, J. Symbolic Comput., 17 (2) (1994), 131, 133--147.

[O'B95] O'Brien, E. A., Computing automorphism groups of p-groups, in Computational algebra and number theory (Sydney, 1992), Kluwer Acad. Publ., Math. Appl., 325, Dordrecht (1995), 83--90.

[Sim94] Sims, C. C., Computation with finitely presented groups, Cambridge University Press, Encyclopedia of Mathematics and its Applications, 48, Cambridge (1994), xiii+604 pages.

[VL84] Vaughan-Lee, M. R., An aspect of the nilpotent quotient algorithm, in Computational group theory (Durham, 1982), Academic Press, London (1984), 75--83.

[VL90a] Vaughan-Lee, M., The restricted Burnside problem, The Clarendon Press Oxford University Press, London Mathematical Society Monographs. New Series, 5, New York (1990), xiv+209 pages
(Oxford Science Publications).

[VL90b] Vaughan-Lee, M. R., Collection from the left, J. Symbolic Comput., 9 (5-6) (1990), 725--733
(Computational group theory, Part 1).

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/chap0.html000644 000766 000024 00000066327 14355420744 015604 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Contents
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

ANUPQ

ANU p-Quotient

3.3.0

5 January 2023

Greg Gamble
Email: Greg.Gamble@uwa.edu.au
Homepage: http://school.maths.uwa.edu.au/~gregg
Address:
Department of Mathematics and Statistics
Curtin University
GPO Box U 1987
Perth WA 6845
Australia

Werner Nickel
Homepage: https://www2.mathematik.tu-darmstadt.de/~nickel/

Eamonn O'Brien
Email: obrien@math.auckland.ac.nz
Homepage: https://www.math.auckland.ac.nz/~obrien
Address:
Department of Mathematics
University of Auckland
Private Bag 92019
Auckland
New Zealand

Copyright

© 2001-2016 by Greg Gamble

© 2001-2005 by Werner Nickel

© 1995-2001 by Eamon O'Brien

The GAP package ANUPQ is licensed under the Artistic License 2.0.

Contents

5 Interactive ANUPQ functions

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/chap1.txt000644 000766 000024 00000015751 14355420737 015455 0ustar00mhornstaff000000 000000 1 Introduction 1.1 Overview The GAP 4 package ANUPQ provides an interface to the ANU pq C program written by Eamonn O'Brien, making the functionality of the C program available to GAP. Henceforth, we shall refer to the ANUPQ package when referring to the GAP interface, and to the ANU pq program or just pq when referring to that C program. The pq program consists of implementations of the following algorithms: 1 A p-quotient algorithm to compute pc-presentations for p-factor groups of finitely presented groups. 2 A p-group generation algorithm to generate pc presentations of groups of prime power order. 3 A standard presentation algorithm used to compute a canonical pc-presentation of a p-group. 4 An algorithm which can be used to compute the automorphism group of a p-group. This part of the pq program is not accessible through the ANUPQ package. Instead, users are advised to consider the GAP 4 package AutPGrp by Bettina Eick and Eamonn O'Brien, which implements a better algorithm in GAP for the computation of automorphism groups of p-groups. The current version of the ANUPQ package requires GAP 4.5, and version 1.5 of the AutPGrp package. All code that made the package compatible with earlier versions of GAP has been removed. If you must use an older GAP version and cannot upgrade, then you may try using an older ANUPQ version. However, you should not use versions of the ANUPQ package older than 2.2, since they are known to have bugs. 1.2 How to read this manual It is not expected that readers of this manual will read it in a linear fashion from cover to cover; some sections contain material that is far too technical to be absorbed on a first reading. Firstly, installers of the ANUPQ package will need to read Chapter 'Installing the ANUPQ Package', if they have not already gleaned these details from the README file. Once the ANUPQ package is installed, users of the ANUPQ package will benefit most by first reading Chapter 'Mathematical Background and Terminology', which gives a brief description of the background and terminology used (this chapter also cites a number of references for further reading), and the introduction of Chapter 'Infrastructure' (skip the remainder of the chapter on a first reading). Then the user/reader should pursue Chapter 'Non-interactive ANUPQ functions' in detail, delving into Chapter 'ANUPQ Options' as necessary for the options of the functions that are described. The user will become best acquainted with the ANUPQ package by trying the examples. This chapter describes the non-interactive functions of the ANUPQ package, i.e. one-shot functions that invoke the pq program in such a way that once GAP has got what it needs, the pq is allowed to exit. It is expected that most of the time, users will only need these functions. Advanced users will want to explore Chapter 'Interactive ANUPQ functions' which describes all the interactive functions of the ANUPQ package; these are functions that extract information via a dialogue with a running pq process. Occasionally, a user needs the next step; the functions provided in this chapter make use of data from previous steps retained by the pq program, thus allowing the user to interact with the pq program like one can when one uses the pq program as a stand-alone (see guide.dvi in the standalone-doc directory). After having read Chapters 'Non-interactive ANUPQ functions' and 'Interactive ANUPQ functions', cross-references will have taken the reader into Chapter 'ANUPQ Options'; by this stage, the reader need only read the introduction of Chapter 'ANUPQ Options'. After the reader has developed some facility with the ANUPQ package, she should explore the examples described in Appendix 'Examples'. If you run into trouble using the ANUPQ functions, some troubleshooting hints are given in Section 'Hints and Warnings regarding the use of Options'. If the troubleshooting hints don't help, Section 'Authors and Acknowledgements' below, gives contact details for the authors of the components of the ANUPQ package. 1.3 Authors and Acknowledgements The C implementation of the ANU pq standalone was developed by Eamonn O'Brien. An interactive interface using iostreams was developed with the assistance of Werner Nickel by Greg Gamble. The GAP 4 version of this package was adapted from the GAP 3 version by Werner Nickel. A new co-maintainer, Max Horn, joined the team in November, 2011. The authors would like to thank Joachim Neubüser for his careful proof-reading and advice, and for formulating Chapter 'Mathematical Background and Terminology'. We would also like to thank Bettina Eick who by her testing and provision of examples helped us to eliminate a number of bugs and who provided a number of valuable suggestions for extensions of the package beyond the GAP 3 capabilities. If you find a bug, the last section of ANUPQ's README describes the information we need and where to send us a bug report; please take the time to read this (i.e. help us to help you). anupq-3.3.0/doc/chap0.txt000644 000766 000024 00000017040 14355420737 015445 0ustar00mhornstaff000000 000000  ANUPQ   ANU p-Quotient  3.3.0 5 January 2023 Greg Gamble Werner Nickel Eamonn O'Brien Greg Gamble Email: mailto:Greg.Gamble@uwa.edu.au Homepage: http://school.maths.uwa.edu.au/~gregg Address: Department of Mathematics and Statistics Curtin University GPO Box U 1987 Perth WA 6845 Australia Werner Nickel Homepage: https://www2.mathematik.tu-darmstadt.de/~nickel/ Eamonn O'Brien Email: mailto:obrien@math.auckland.ac.nz Homepage: https://www.math.auckland.ac.nz/~obrien Address: Department of Mathematics University of Auckland Private Bag 92019 Auckland New Zealand ------------------------------------------------------- Copyright © 2001-2016 by Greg Gamble © 2001-2005 by Werner Nickel © 1995-2001 by Eamon O'Brien The GAP package ANUPQ is licensed under the Artistic License 2.0 (https://opensource.org/licenses/artistic-license-2.0). ------------------------------------------------------- Contents (ANUPQ) 1 Introduction 1.1 Overview 1.2 How to read this manual 1.3 Authors and Acknowledgements 2 Mathematical Background and Terminology 2.1 Basic notions 2.1-1 pc Presentations and Consistency 2.1-2 Exponent-p Central Series and Weighted pc Presentations 2.1-3 p-Cover, p-Multiplicator 2.1-4 Descendants, Capable, Terminal, Nucleus 2.1-5 Laws 2.2 The p-quotient Algorithm 2.2-1 Finding the p-cover 2.2-2 Imposing the Relations of the fp Group 2.2-3 Imposing Laws 2.3 The p-group generation Algorithm, Standard Presentation, Isomorphism Testing 3 Infrastructure 3.1 Loading the ANUPQ Package 3.2 The ANUPQData Record 3.2-1 ANUPQData 3.2-2 ANUPQDirectoryTemporary 3.3 Setting the Verbosity of ANUPQ via Info and InfoANUPQ 3.3-1 InfoANUPQ 3.4 Utility Functions 3.4-1 PqLeftNormComm 3.4-2 PqGAPRelators 3.4-3 PqParseWord 3.4-4 PqExample 3.4-5 AllPqExamples 3.4-6 GrepPqExamples 3.4-7 ToPQLog 3.5 Attributes and a Property for fp and pc p-groups 3.5-1 NuclearRank 3.6 Hints and Warnings regarding the use of Options 3.6-1 ANUPQWarnOfOtherOptions 4 Non-interactive ANUPQ functions 4.1 Computing p-Quotients 4.1-1 Pq 4.1-2 PqEpimorphism 4.1-3 PqPCover 4.2 Computing Standard Presentations 4.2-1 PqStandardPresentation 4.2-2 EpimorphismPqStandardPresentation 4.3 Testing p-Groups for Isomorphism 4.3-1 IsPqIsomorphicPGroup 4.4 Computing Descendants of a p-Group 4.4-1 PqDescendants 4.4-2 PqSupplementInnerAutomorphisms 4.4-3 PqList 4.4-4 SavePqList 5 Interactive ANUPQ functions 5.1 Starting and Stopping Interactive ANUPQ Processes 5.1-1 PqStart 5.1-2 PqQuit 5.1-3 PqQuitAll 5.2 Interactive ANUPQ Process Utility Functions 5.2-1 PqProcessIndex 5.2-2 PqProcessIndices 5.2-3 IsPqProcessAlive 5.3 Interactive Versions of Non-interactive ANUPQ Functions 5.3-1 Pq 5.3-2 PqEpimorphism 5.3-3 PqPCover 5.3-4 PqStandardPresentation 5.3-5 EpimorphismPqStandardPresentation 5.3-6 PqDescendants 5.3-7 PqSetPQuotientToGroup 5.4 Low-level Interactive ANUPQ functions based on menu items of the pq program 5.5 General commands 5.5-1 PqNrPcGenerators 5.5-2 PqFactoredOrder 5.5-3 PqOrder 5.5-4 PqPClass 5.5-5 PqWeight 5.5-6 PqCurrentGroup 5.5-7 PqDisplayPcPresentation 5.5-8 PqSetOutputLevel 5.5-9 PqEvaluateIdentities 5.6 Commands from the Main p-Quotient menu 5.6-1 PqPcPresentation 5.6-2 PqSavePcPresentation 5.6-3 PqRestorePcPresentation 5.6-4 PqNextClass 5.6-5 PqComputePCover 5.7 Commands from the Advanced p-Quotient menu 5.7-1 PqCollect 5.7-2 PqSolveEquation 5.7-3 PqCommutator 5.7-4 PqSetupTablesForNextClass 5.7-5 PqTails 5.7-6 PqComputeTails 5.7-7 PqAddTails 5.7-8 PqDoConsistencyChecks 5.7-9 PqCollectDefiningRelations 5.7-10 PqCollectWordInDefiningGenerators 5.7-11 PqCommutatorDefiningGenerators 5.7-12 PqDoExponentChecks 5.7-13 PqEliminateRedundantGenerators 5.7-14 PqRevertToPreviousClass 5.7-15 PqSetMaximalOccurrences 5.7-16 PqSetMetabelian 5.7-17 PqDoConsistencyCheck 5.7-18 PqCompact 5.7-19 PqEchelonise 5.7-20 PqSupplyAutomorphisms 5.7-21 PqExtendAutomorphisms 5.7-22 PqApplyAutomorphisms 5.7-23 PqDisplayStructure 5.7-24 PqDisplayAutomorphisms 5.7-25 PqWritePcPresentation 5.8 Commands from the Standard Presentation menu 5.8-1 PqSPComputePcpAndPCover 5.8-2 PqSPStandardPresentation 5.8-3 PqSPSavePresentation 5.8-4 PqSPCompareTwoFilePresentations 5.8-5 PqSPIsomorphism 5.9 Commands from the Main p-Group Generation menu 5.9-1 PqPGSupplyAutomorphisms 5.9-2 PqPGExtendAutomorphisms 5.9-3 PqPGConstructDescendants 5.9-4 PqPGSetDescendantToPcp 5.10 Commands from the Advanced p-Group Generation menu 5.10-1 PqAPGDegree 5.10-2 PqAPGPermutations 5.10-3 PqAPGOrbits 5.10-4 PqAPGOrbitRepresentatives 5.10-5 PqAPGSingleStage 5.11 Primitive Interactive ANUPQ Process Read/Write Functions 5.11-1 PqRead 5.11-2 PqReadAll 5.11-3 PqReadUntil 5.11-4 PqWrite 6 ANUPQ Options 6.1 Overview 6.1-1 AllANUPQoptions 6.1-2 ANUPQoptions 6.2 Detailed descriptions of ANUPQ Options 7 Installing the ANUPQ Package 7.1 Testing your ANUPQ installation 7.2 Running the pq program as a standalone A Examples A.1 The Relators Option A.2 The Identities Option and PqEvaluateIdentities Function A.3 A Large Example A.4 Developing descendants trees A.4-1 PqDescendantsTreeCoclassOne  anupq-3.3.0/doc/chap4_mj.html000644 000766 000024 00000163367 14355420744 016300 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 4: Non-interactive ANUPQ functions
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

4 Non-interactive ANUPQ functions

Here we describe all the non-interactive functions of the ANUPQ package; i.e. "one-shot" functions that invoke the pq program in such a way that once GAP has got what it needs, the pq program is allowed to exit. It is expected that most of the time users will only need these functions. The functions interface with three of the four algorithms (see Chapter Introduction) provided by the ANU pq C program, and are mainly grouped according to the algorithm of the pq program they relate to.

In Section Computing p-Quotients, we describe the functions that give access to the \(p\)-quotient algorithm.

Section Computing Standard Presentations describe functions that give access to the standard presentation algorithm.

Section Testing p-Groups for Isomorphism describe functions that implement an isomorphism test for \(p\)-groups using the standard presentation algorithm.

In Section Computing Descendants of a p-Group, we describe functions that give access to the \(p\)-group generation algorithm.

To use any of the functions one must have at some stage previously typed:

gap> LoadPackage("anupq");

(the response of which we have omitted; see Loading the ANUPQ Package).

It is strongly recommended that the user try the examples provided. To save typing there is a PqExample equivalent for each manual example. We also suggest that to start with you may find the examples more instructive if you set the InfoANUPQ level to 2 (see InfoANUPQ (3.3-1)).

4.1 Computing p-Quotients

4.1-1 Pq
‣ Pq( F: options )( function )

returns for the fp or pc group F, the \(p\)-quotient of F specified by options, as a pc group. Following the colon, options is a selection of the options from the following list, separated by commas like record components (see Section Reference: Function Call With Options in the GAP Reference Manual). As a minimum the user must supply a value for the Prime option. Below we list the options recognised by Pq (see Chapter ANUPQ Options for detailed descriptions).

  • Prime := p

  • ClassBound := n

  • Exponent := n

  • Relators := rels

  • Metabelian

  • Identities := funcs

  • GroupName := name

  • OutputLevel := n

  • SetupFile := filename

  • PqWorkspace := workspace

Notes: Pq may also be called with no arguments or one integer argument, in which case it is being used interactively (see Pq (5.3-1)); the same options may be used, except that SetupFile and PqWorkspace are ignored by the interactive Pq function.

See Section Attributes and a Property for fp and pc p-groups for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the group returned by Pq.

See also PqEpimorphism (PqEpimorphism (4.1-2)).

We now give a few examples of the use of Pq. Except for the addition of a few comments and the non-suppression of output (by not using duplicated semicolons) the next 3 examples may be run by typing: PqExample( "Pq" ); (see PqExample (3.4-4)).

gap> LoadPackage("anupq");; # does nothing if ANUPQ is already loaded
gap> # First we get a p-quotient of a free group of rank 2
gap> F := FreeGroup("a", "b");; a := F.1;; b := F.2;;
gap> Pq( F : Prime := 2, ClassBound := 3 ); 
<pc group of size 1024 with 10 generators>
gap> # Now let us get a p-quotient of an fp group
gap> G := F / [a^4, b^4];
<fp group on the generators [ a, b ]>
gap> Pq( G : Prime := 2, ClassBound := 3 ); 
<pc group of size 256 with 8 generators>
gap> # Now let's get a different p-quotient of the same group
gap> Pq( G : Prime := 2, ClassBound := 3, Exponent := 4 ); 
<pc group of size 128 with 7 generators>
gap> # Now we'll get a p-quotient of another fp group
gap> # which we will redo using the `Relators' option
gap> R := [ a^25, Comm(Comm(b, a), a), b^5 ];
[ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ]
gap> H := F / R;
<fp group on the generators [ a, b ]>
gap> Pq( H : Prime := 5, ClassBound := 5, Metabelian );
<pc group of size 78125 with 7 generators>

Now we redo the last example to show how one may use the Relators option. Observe that Comm(Comm(b, a), a) is a left normed commutator which must be written in square bracket notation for the pq program and embedded in a pair of double quotes. The function PqGAPRelators (see PqGAPRelators (3.4-2)) can be used to translate a list of strings prepared for the Relators option into GAP format. Below we use it. Observe that the value of R is the same as before.

gap> F := FreeGroup("a", "b");;
gap> # `F' was defined for `Relators'. We use the same strings that GAP uses
gap> # for printing the free group generators. It is *not* necessary to
gap> # predefine: a := F.1; etc. (as it was above).
gap> rels := [ "a^25", "[b, a, a]", "b^5" ];
[ "a^25", "[b, a, a]", "b^5" ]
gap> R := PqGAPRelators(F, rels);
[ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ]
gap> H := F / R;
<fp group on the generators [ a, b ]>
gap> Pq( H : Prime := 5, ClassBound := 5, Metabelian, 
>            Relators := rels );
<pc group of size 78125 with 7 generators>

In fact, above we could have just passed F (rather than H), i.e. we could have done:

gap> F := FreeGroup("a", "b");;
gap> rels := [ "a^25", "[b, a, a]", "b^5" ];
[ "a^25", "[b, a, a]", "b^5" ]
gap> Pq( F : Prime := 5, ClassBound := 5, Metabelian, 
>            Relators := rels );
<pc group of size 78125 with 7 generators>

The non-interactive Pq function also allows the options to be passed in two other ways; these alternatives have been included for those familiar with the GAP 3 version of the ANUPQ package; the preferred method of passing options is the one already described. Firstly, they may be passed in a record as a second argument; note that any boolean options must be set explicitly e.g.

gap> Pq( H, rec( Prime := 5, ClassBound := 5, Metabelian := true ) );
<pc group of size 78125 with 7 generators>

It is also possible to pass them as extra arguments, where each option name appears as a string followed immediately by its value (if not a boolean option) e.g.

gap> Pq( H, "Prime", 5, "ClassBound", 5, "Metabelian" );
<pc group of size 78125 with 7 generators>

The preceding two examples can be run from GAP via PqExample( "Pq-ni" ); (see PqExample (3.4-4)).

This method of passing options permits abbreviation; the only restriction is that the abbreviation must be unique. So "Pr" may be used for "Prime", "Class" or even just "C" for "ClassBound", etc.

The following example illustrates the use of the option Identities. We compute the largest finite Burnside group of exponent \(5\) that also satisfies the \(3\)-Engel identity. Each identity is defined by a function whose arguments correspond to the variables of the identity. The return value of each of those functions is the identity evaluated on the arguments of the function.

gap> F := FreeGroup(2);
<free group on the generators [ f1, f2 ]>
gap> Burnside5 := x->x^5;
function( x ) ... end
gap> Engel3 := function( x,y ) return PqLeftNormComm( [x,y,y,y] ); end;
function( x, y ) ... end
gap> Pq( F : Prime := 5, Identities := [ Burnside5, Engel3 ] );
#I  Class 1 with 2 generators.
#I  Class 2 with 3 generators.
#I  Class 3 with 5 generators.
#I  Class 3 with 5 generators.
<pc group of size 3125 with 5 generators>

The above example can be run from GAP via PqExample( "B5-5-Engel3-Id" ); (see PqExample (3.4-4)).

4.1-2 PqEpimorphism
‣ PqEpimorphism( F: options )( function )

returns for the fp or pc group F an epimorphism from F onto the \(p\)-quotient of F specified by options; the possible options options and required option ("Prime") are as for Pq (see Pq (4.1-1)). PqEpimorphism only differs from Pq in what it outputs; everything about what must/may be passed as input to PqEpimorphism is the same as for Pq. The same alternative methods of passing options to the non-interactive Pq function are available to the non-interactive version of PqEpimorphism.

Notes: PqEpimorphism may also be called with no arguments or one integer argument, in which case it is being used interactively (see PqEpimorphism (5.3-2)), and the options SetupFile and PqWorkspace are ignored by the interactive PqEpimorphism function.

See Section Attributes and a Property for fp and pc p-groups for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the image group of the epimorphism returned by PqEpimorphism.

gap> F := FreeGroup (2, "F");
<free group on the generators [ F1, F2 ]>
gap> phi := PqEpimorphism( F : Prime := 5, ClassBound := 2 );
[ F1, F2 ] -> [ f1, f2 ]
gap> Image( phi );
<pc group of size 3125 with 5 generators>

Typing: PqExample( "PqEpimorphism" ); runs the above example in GAP (see PqExample (3.4-4)).

4.1-3 PqPCover
‣ PqPCover( F: options )( function )

returns for the fp or pc group F, the \(p\)-covering group of the \(p\)-quotient of F specified by options, as a pc group, i.e. the \(p\)-covering group of the \(p\)-quotient Pq( F : options ). Thus the options that PqPCover accepts are exactly those expected for Pq (and hence as a minimum the user must supply a value for the Prime option; see Pq (4.1-1) for more details), except in the following special case.

If F is already a \(p\)-group, in the sense that IsPGroup(F) is true, then

Prime

defaults to PrimePGroup(F), if not supplied and HasPrimePGroup(F) = true; and

ClassBound

defaults to PClassPGroup(F) if HasPClassPGroup(F) = true if not supplied, or to the usual default of 63, otherwise.

The same alternative methods of passing options to the non-interactive Pq function are available to the non-interactive version of PqPCover.

We now give a few examples of the use of PqPCover. These examples are just a subset of the ones we gave for Pq (see Pq (4.1-1)), except that in each instance the command Pq has been replaced with PqPCover. Essentially the same examples may be run by typing: PqExample( "PqPCover" ); (see PqExample (3.4-4)).

gap> F := FreeGroup("a", "b");; a := F.1;; b := F.2;;
gap> PqPCover( F : Prime := 2, ClassBound := 3 );
<pc group of size 262144 with 18 generators>
gap> 
gap> # Now let's get a p-cover of a p-quotient of an fp group
gap> G := F / [a^4, b^4];
<fp group on the generators [ a, b ]>
gap> PqPCover( G : Prime := 2, ClassBound := 3 );
<pc group of size 16384 with 14 generators>
gap> 
gap> # Now let's get a p-cover of a different p-quotient of the same group
gap> PqPCover( G : Prime := 2, ClassBound := 3, Exponent := 4 );
<pc group of size 8192 with 13 generators>
gap> 
gap> # Now we'll get a p-cover of a p-quotient of another fp group
gap> # which we will redo using the `Relators' option
gap> R := [ a^25, Comm(Comm(b, a), a), b^5 ];
[ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ]
gap> H := F / R;
<fp group on the generators [ a, b ]>
gap> PqPCover( H : Prime := 5, ClassBound := 5, Metabelian );
<pc group of size 48828125 with 11 generators>
gap> 
gap> # Now we redo the previous example using the `Relators' option
gap> F := FreeGroup("a", "b");;
gap> rels := [ "a^25", "[b, a, a]", "b^5" ];
[ "a^25", "[b, a, a]", "b^5" ]
gap> PqPCover( F : Prime := 5, ClassBound := 5, Metabelian, 
>                  Relators := rels );
<pc group of size 48828125 with 11 generators>

4.2 Computing Standard Presentations

4.2-1 PqStandardPresentation
‣ PqStandardPresentation( F: options )( function )
‣ StandardPresentation( F: options )( method )

return the p-quotient specified by options of the fp or pc \(p\)-group F, as an fp group which has a standard presentation. Here options is a selection of the options from the following list (see Chapter ANUPQ Options for detailed descriptions). Section Hints and Warnings regarding the use of Options gives some important hints and warnings regarding option usage, and Section Reference: Function Call With Options in the GAP Reference Manual describes their "record"-like syntax.

  • Prime := p

  • pQuotient := Q

  • ClassBound := n

  • Exponent := n

  • Metabelian

  • GroupName := name

  • OutputLevel := n

  • StandardPresentationFile := filename

  • SetupFile := filename

  • PqWorkspace := workspace

Unless F is a pc p-group, the user must supply either the option Prime or the option pQuotient (if both Prime and pQuotient are supplied, the prime p is determined by applying PrimePGroup (see PrimePGroup (Reference: PrimePGroup) in the Reference Manual) to the value of pQuotient).

The options for PqStandardPresentation may also be passed in the two other alternative ways described for Pq (see Pq (4.1-1)). StandardPresentation does not provide these alternative ways of passing options.

Notes: In contrast to the function Pq (see Pq (4.1-1)) which returns a pc group, PqStandardPresentation or StandardPresentation returns an fp group. This is because the output is mainly used for isomorphism testing for which an fp group is enough. However, the presentation is a polycyclic presentation and if you need to do any further computation with this group (e.g. to find the order) you can use the function PcGroupFpGroup (see PcGroupFpGroup (Reference: PcGroupFpGroup) in the GAP Reference Manual) to form a pc group.

If the user does not supply a p-quotient Q via the pQuotient option and the prime p is either supplied or F is a pc p-group, then a p-quotient Q is computed. If the user does supply a p-quotient Q via the pQuotient option, the package AutPGrp is called to compute the automorphism group of Q; an error will occur that asks the user to install the package AutPGrp if the automorphism group cannot be computed.

The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for the group returned by PqStandardPresentation or StandardPresentation (see Section Attributes and a Property for fp and pc p-groups).

We illustrate the method with the following examples.

gap> F := FreeGroup( "a", "b" );; a := F.1;; b := F.2;;
gap> G := F / [a^25, Comm(Comm(b, a), a), b^5];
<fp group on the generators [ a, b ]>
gap> S := StandardPresentation( G : Prime := 5, ClassBound := 10 );
<fp group on the generators [ f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, 
  f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26 ]>
gap> IsPcGroup( S );
false
gap> # if we need to compute with S we should convert it to a pc group
gap> Spc := PcGroupFpGroup( S );
<pc group of size 1490116119384765625 with 26 generators>
gap> 
gap> H := F / [ a^625, Comm(Comm(Comm(Comm(b, a), a), a), a)/Comm(b, a)^5,
>               Comm(Comm(b, a), b), b^625 ];;
gap> StandardPresentation( H : Prime := 5, ClassBound := 15, Metabelian );
<fp group on the generators [ f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, 
  f12, f13, f14, f15, f16, f17, f18, f19, f20 ]>
gap> 
gap> F4 := FreeGroup( "a", "b", "c", "d" );;
gap> a := F4.1;; b := F4.2;; c := F4.3;; d := F4.4;;
gap> G4 := F4 / [ b^4, b^2 / Comm(Comm (b, a), a), d^16,
>                 a^16 / (c * d), b^8 / (d * c^4) ];
<fp group on the generators [ a, b, c, d ]>
gap> K := Pq( G4 : Prime := 2, ClassBound := 1 );
<pc group of size 4 with 2 generators>
gap> StandardPresentation( G4 : pQuotient := K, ClassBound := 14 );
<fp group with 53 generators>

Typing: PqExample( "StandardPresentation" ); runs the above example in GAP (see PqExample (3.4-4)).

4.2-2 EpimorphismPqStandardPresentation
‣ EpimorphismPqStandardPresentation( F: options )( function )
‣ EpimorphismStandardPresentation( F: options )( method )

Each of the above functions accepts the same arguments and options as the function StandardPresentation (see StandardPresentation (4.2-1)) and returns an epimorphism from the fp or pc group F onto the finitely presented group given by a standard presentation, i.e. if S is the standard presentation computed for the \(p\)-quotient of F by StandardPresentation then EpimorphismStandardPresentation returns the epimorphism from F to the group with presentation S.

Note: The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for the image group of the epimorphism returned by EpimorphismPqStandardPresentation or EpimorphismStandardPresentation (see Section Attributes and a Property for fp and pc p-groups).

We illustrate the function with the following example.

gap> F := FreeGroup(6, "F");
<free group on the generators [ F1, F2, F3, F4, F5, F6 ]>
gap> # For printing GAP uses the symbols F1, ... for the generators of F
gap> x := F.1;; y := F.2;; z := F.3;; w := F.4;; a := F.5;; b := F.6;;
gap> R := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b,
>          Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ];;
gap> Q := F / R;
<fp group on the generators [ F1, F2, F3, F4, F5, F6 ]>
gap> # For printing GAP also uses the symbols F1, ... for the generators of Q
gap> # (the same as used for F) ... but the gen'rs of Q and F are different:
gap> GeneratorsOfGroup(F) = GeneratorsOfGroup(Q);
false
gap> G := Pq( Q : Prime := 3, ClassBound := 3 );
<pc group of size 729 with 6 generators>
gap> phi := EpimorphismStandardPresentation( Q : Prime := 3,
>                                                ClassBound := 3 );
[ F1, F2, F3, F4, F5, F6 ] -> [ f1*f2^2*f3*f4^2*f5^2, f1*f2*f3*f5, f3^2, 
  f4*f6^2, f5, f6 ]
gap> Source(phi); # This is the group Q (GAP uses F1, ... for gen'r symbols)
<fp group of size infinity on the generators [ F1, F2, F3, F4, F5, F6 ]>
gap> Range(phi);  # This is the group G (GAP uses f1, ... for gen'r symbols)
<fp group on the generators [ f1, f2, f3, f4, f5, f6 ]>
gap> AssignGeneratorVariables(G);
#I  Assigned the global variables [ f1, f2, f3, f4, f5, f6 ]
gap> # Just to see that the images of [F1, ..., F6] do generate G
gap> Group([ f1*f2^2*f3, f1*f2*f3*f4*f5^2*f6^2, f3^2, f4, f5, f6 ]) = G;
true
gap> Size( Image(phi) );
729

Typing: PqExample( "EpimorphismStandardPresentation" ); runs the above example in GAP (see PqExample (3.4-4)). Note that AssignGeneratorVariables (see AssignGeneratorVariables (Reference: AssignGeneratorVariables)) has only been available since GAP 4.3.

4.3 Testing p-Groups for Isomorphism

4.3-1 IsPqIsomorphicPGroup
‣ IsPqIsomorphicPGroup( G, H )( function )
‣ IsIsomorphicPGroup( G, H )( method )

each return true if G is isomorphic to H, where both G and H must be pc groups of prime power order. These functions compute and compare in GAP the fp groups given by standard presentations for G and H (see StandardPresentation (4.2-1)).

gap> G := Group( (1,2,3,4), (1,3) );
Group([ (1,2,3,4), (1,3) ])
gap> P1 := Image( IsomorphismPcGroup( G ) );
Group([ f1, f2, f3 ])
gap> P2 := SmallGroup( 8, 5 );
<pc group of size 8 with 3 generators>
gap> IsIsomorphicPGroup( P1, P2 );
false
gap> P3 := SmallGroup( 8, 4 );
<pc group of size 8 with 3 generators>
gap> IsIsomorphicPGroup( P1, P3 );
false
gap> P4 := SmallGroup( 8, 3 );
<pc group of size 8 with 3 generators>
gap> IsIsomorphicPGroup( P1, P4 );
true

Typing: PqExample( "IsIsomorphicPGroup" ); runs the above example in GAP (see PqExample (3.4-4)).

4.4 Computing Descendants of a p-Group

4.4-1 PqDescendants
‣ PqDescendants( G: options )( function )

returns, for the pc group G which must be of prime power order with a confluent pc presentation (see IsConfluent (Reference: IsConfluent for pc groups) in the GAP Reference Manual), a list of descendants (pc groups) of G. Following the colon options a selection of the options listed below should be given, separated by commas like record components (see Section Reference: Function Call With Options in the GAP Reference Manual). See Chapter ANUPQ Options for detailed descriptions of the options.

The automorphism group of each descendant D is also computed via a call to the AutomorphismGroupPGroup function of the AutPGrp package.

  • ClassBound := n

  • Relators := rels

  • OrderBound := n

  • StepSize := n, StepSize := list

  • RankInitialSegmentSubgroups := n

  • SpaceEfficient

  • CapableDescendants

  • AllDescendants := false

  • Exponent := n

  • Metabelian

  • GroupName := name

  • SubList := sub

  • BasicAlgorithm

  • CustomiseOutput := rec

  • SetupFile := filename

  • PqWorkspace := workspace

Notes: The function PqDescendants uses the automorphism group of G which it computes via the package AutPGrp. If this package is not installed an error may be raised. If the automorphism group of G is insoluble, the pq program will call GAP together with the AutPGrp package for certain orbit-stabilizer calculations. (So, in any case, one should ensure the AutPGrp package is installed.)

The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for each group of the list returned by PqDescendants (see Section Attributes and a Property for fp and pc p-groups).

The options options for PqDescendants may be passed in an alternative manner to that already described, namely you can pass PqDescendants a record as an argument, which contains as entries some (or all) of the above mentioned. Those parameters which do not occur in the record are set to their default values.

Note that you cannot set both OrderBound and StepSize.

In the first example we compute all descendants of the Klein four group which have exponent-2 class at most 5 and order at most \(2^6\).

gap> F := FreeGroup( "a", "b" );; a := F.1;; b := F.2;;
gap> G := PcGroupFpGroup( F / [ a^2, b^2, Comm(b, a) ] );
<pc group of size 4 with 2 generators>
gap> des := PqDescendants( G : OrderBound := 6, ClassBound := 5 );;
gap> Length(des);
83
gap> List(des, Size); 
[ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, 
  32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, 
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
  64, 64, 64, 64, 64, 64, 64 ]
gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 );
[ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 
  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
  4, 4, 4, 5, 5, 5, 5, 5 ]

Below, we compute all capable descendants of order 27 of the elementary abelian group of order 9.

gap> F := FreeGroup( 2, "g" );
<free group on the generators [ g1, g2 ]>
gap> G := PcGroupFpGroup( F / [ F.1^3, F.2^3, Comm(F.1, F.2) ] );
<pc group of size 9 with 2 generators>
gap> des := PqDescendants( G : OrderBound := 3, ClassBound := 2,
>                              CapableDescendants );
[ <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators> ]
gap> List(des, d -> Length( PCentralSeries( d, 3 ) ) - 1 );
[ 2, 2 ]
gap> # For comparison let us now compute all descendants
gap> PqDescendants( G : OrderBound := 3, ClassBound := 2);
[ <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators> ]

In the third example, we compute all capable descendants of the elementary abelian group of order \(5^2\) which have exponent-\(5\) class at most \(3\), exponent \(5\), and are metabelian.

gap> F := FreeGroup( 2, "g" );;
gap> G := PcGroupFpGroup( F / [ F.1^5, F.2^5, Comm(F.2, F.1) ] );
<pc group of size 25 with 2 generators>
gap> des := PqDescendants( G : Metabelian, ClassBound := 3,
>                              Exponent := 5, CapableDescendants );
[ <pc group of size 125 with 3 generators>, 
  <pc group of size 625 with 4 generators>, 
  <pc group of size 3125 with 5 generators> ]
gap> List(des, d -> Length( PCentralSeries( d, 5 ) ) - 1 );
[ 2, 3, 3 ]
gap> List(des, d -> Length( DerivedSeries( d ) ) );
[ 3, 3, 3 ]
gap> List(des, d -> Maximum( List( d, Order ) ) );
[ 5, 5, 5 ]

The examples "PqDescendants-1", "PqDescendants-2" and "PqDescendants-3" (in order) are essentially the same as the above three examples (see PqExample (3.4-4)).

4.4-2 PqSupplementInnerAutomorphisms
‣ PqSupplementInnerAutomorphisms( D )( function )

returns a generating set for a supplement to the inner automorphisms of D, in the form of a record with fields agAutos, agOrder and glAutos, as provided by the pq program. One should be very careful in using these automorphisms for a descendant calculation.

Note: In principle there must be a way to use those automorphisms in order to compute descendants but there does not seem to be a way to hand back these automorphisms properly to the pq program.

gap> Q := Pq( FreeGroup(2) : Prime := 3, ClassBound := 1 );
<pc group of size 9 with 2 generators>
gap> des := PqDescendants( Q : StepSize := 1 );
[ <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators> ]
gap> S := PqSupplementInnerAutomorphisms( des[3] );
rec( agAutos := [  ], agOrder := [ 3, 2, 2, 2 ], 
  glAutos := [ Pcgs([ f1, f2, f3 ]) -> [ f1*f2^2, f2, f3 ], 
      Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ], 
      Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ] ] )
gap> A := AutomorphismGroupPGroup( des[3] );
rec( 
  agAutos := [ Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ], 
      Pcgs([ f1, f2, f3 ]) -> [ f1*f2^2, f2, f3 ], 
      Pcgs([ f1, f2, f3 ]) -> [ f1*f3, f2, f3 ], 
      Pcgs([ f1, f2, f3 ]) -> [ f1, f2*f3, f3 ] ], agOrder := [ 2, 3, 3, 3 ], 
  glAutos := [  ], glOper := [  ], glOrder := 1, 
  group := <pc group of size 27 with 3 generators>, 
  one := IdentityMapping( <pc group of size 27 with 3 generators> ), 
  size := 54 )

Typing: PqExample( "PqSupplementInnerAutomorphisms" ); runs the above example in GAP (see PqExample (3.4-4)).

Note that by also including PqStart as a second argument to PqExample one can see how it is possible, with the aid of PqSetPQuotientToGroup (see PqSetPQuotientToGroup (5.3-7)), to do the equivalent computations with the interactive versions of Pq and PqDescendants and a single pq process (recall pq is the name of the external C program).

4.4-3 PqList
‣ PqList( filename: [SubList := sub] )( function )

reads a file with name filename (a string) and returns the list L of pc groups (or with option SubList a sublist of L or a single pc group in L) defined in that file. If the option SubList is passed and has the value sub, then it has the same meaning as for PqDescendants, i.e. if sub is an integer then PqList returns L[sub]; otherwise, if sub is a list of integers PqList returns Sublist(L, sub ).

Both PqList and SavePqList (see SavePqList (4.4-4)) can be used to save and restore a list of descendants (see PqDescendants (4.4-1)).

4.4-4 SavePqList
‣ SavePqList( filename, list )( function )

writes a list of descendants list to a file with name filename (a string).

SavePqList and PqList (see PqList (4.4-3)) can be used to save and restore, respectively, the results of PqDescendants (see PqDescendants (4.4-1)).

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/manual.css000644 000766 000024 00000015754 14355420744 015710 0ustar00mhornstaff000000 000000 /* manual.css Frank Lübeck */ /* This is the default CSS style sheet for GAPDoc HTML manuals. */ /* basic settings, fonts, sizes, colors, ... */ body { position: relative; background: #ffffff; color: #000000; width: 70%; margin: 0pt; padding: 15pt; font-family: Helvetica,Verdana,Arial,sans-serif; text-align: justify; } /* no side toc on title page, bib and index */ body.chap0 { width: 95%; } body.chapBib { width: 95%; } body.chapInd { width: 95%; } h1 { font-size: 200%; } h2 { font-size: 160%; } h3 { font-size: 160%; } h4 { font-size: 130%; } h5 { font-size: 100%; } p.foot { font-size: 60%; font-style: normal; } a:link { color: #00008e; text-decoration: none; } a:visited { color: #00008e; text-decoration: none; } a:active { color: #000000; text-decoration: none; } a:hover { background: #eeeeee; } pre { font-family: "Courier New",Courier,monospace; font-size: 100%; color:#111111; } tt,code { font-family: "Courier New",Courier,monospace; font-size: 110%; color: #000000; } var { } /* general alignment classes */ .pcenter { text-align: center; } .pleft { text-align: left; } .pright { text-align: right; } /* layout for the definitions of functions, variables, ... */ div.func { background: #e0e0e0; margin: 0pt 0pt; } /* general and special table settings */ table { border-collapse: collapse; margin-left: auto; margin-right: auto; } td, th { border-style: none; } table.func { padding: 0pt 1ex; margin-left: 1ex; margin-right: 1ex; background: transparent; /* line-height: 1.1; */ width: 100%; } table.func td.tdright { padding-right: 2ex; } /* Example elements (for old converted manuals, now in div+pre */ table.example { background: #efefef; border-style: none; border-width: 0pt; padding: 0px; width: 100% } table.example td { border-style: none; border-width: 0pt; padding: 0ex 1ex; } /* becomes ... */ div.example { background: #efefef; padding: 0ex 1ex; /* overflow-x: auto; */ overflow: auto; } /* Links to chapters in all files at top and bottom. */ /* If there are too many chapters then use 'display: none' here. */ div.chlinktop { background: #dddddd; border-style: solid; border-width: thin; margin: 2px; text-align: center; } div.chlinktop a { margin: 3px; } div.chlinktop a:hover { background: #ffffff; } div.chlinkbot { background: #dddddd; border-style: solid; border-width: thin; margin: 2px; text-align: center; /* width: 100%; */ } div.chlinkbot a { margin: 3px; } span.chlink1 { } /* and this is for the "Top", "Prev", "Next" links */ div.chlinkprevnexttop { background: #dddddd; border-style: solid; border-width: thin; text-align: center; margin: 2px; } div.chlinkprevnexttop a:hover { background: #ffffff; } div.chlinkprevnextbot { background: #dddddd; border-style: solid; border-width: thin; text-align: center; margin: 2px; } div.chlinkprevnextbot a:hover { background: #ffffff; } /* table of contents, initially don't display subsections */ div.ContSSBlock { display: none; } div.ContSSBlock br { display: none; } /* format in separate lines */ span.tocline { display: block; width: 100%; } div.ContSSBlock a { display: block; } /* this is for the main table of contents */ div.ContChap { } div.ContChap div.ContSect:hover div.ContSSBlock { display: block; position: absolute; background: #eeeeee; border-style: solid; border-width: 1px 4px 4px 1px; border-color: #666666; padding-left: 0.5ex; color: #000000; left: 20%; width: 40%; z-index: 10000; } div.ContSSBlock a:hover { background: #ffffff; } /* and here for the side menu of contents in the chapter files */ div.ChapSects { } div.ChapSects a:hover { background: #eeeeee; } div.ChapSects a:hover { display: block; width: 100%; background: #eeeeee; color: #000000; } div.ChapSects div.ContSect:hover div.ContSSBlock { display: block; position: fixed; background: #eeeeee; border-style: solid; border-width: 1px 2px 2px 1px; border-color: #666666; padding-left: 0ex; padding-right: 0.5ex; color: #000000; left: 54%; width: 25%; z-index: 10000; } div.ChapSects div.ContSect:hover div.ContSSBlock a { display: block; margin-left: 3px; } div.ChapSects div.ContSect:hover div.ContSSBlock a:hover { display: block; background: #ffffff; } div.ContSect { text-align: left; margin-left: 1em; } div.ChapSects { position: fixed; left: 75%; font-size: 90%; overflow: auto; top: 10px; bottom: 0px; } /* Table elements */ table.GAPDocTable { border-collapse: collapse; border-style: none; border-color: black; } table.GAPDocTable td, table.GAPDocTable th { padding: 3pt; border-width: thin; border-style: solid; border-color: #555555; } caption.GAPDocTable { caption-side: bottom; width: 70%; margin-top: 1em; margin-left: auto; margin-right: auto; } td.tdleft { text-align: left; } table.GAPDocTablenoborder { border-collapse: collapse; border-style: none; border-color: black; } table.GAPDocTablenoborder td, table.GAPDocTable th { padding: 3pt; border-width: 0pt; border-style: solid; border-color: #555555; } caption.GAPDocTablenoborder { caption-side: bottom; width: 70%; margin-top: 1em; margin-left: auto; margin-right: auto; } td.tdleft { text-align: left; } td.tdright { text-align: right; } td.tdcenter { text-align: center; } /* Colors and fonts can be overwritten for some types of elements. */ /* Verb elements */ pre.normal { color: #000000; } /* Func-like elements and Ref to Func-like */ code.func { color: #000000; } /* K elements */ code.keyw { color: #770000; } /* F elements */ code.file { color: #8e4510; } /* C elements */ code.code { } /* Item elements */ code.i { } /* Button elements */ strong.button { } /* Headings */ span.Heading { } /* Arg elements */ var.Arg { color: #006600; } /* Example elements, is in tables, see above */ div.Example { } /* Package elements */ strong.pkg { } /* URL-like elements */ span.URL { } /* Mark elements */ strong.Mark { } /* Ref elements */ b.Ref { } span.Ref { } /* this contains the contents page */ div.contents { } /* this contains the index page */ div.index { } /* ignore some text for non-css layout */ span.nocss { display: none; } /* colors for ColorPrompt like examples */ span.GAPprompt { color: #000097; font-weight: normal; } span.GAPbrkprompt { color: #970000; font-weight: normal; } span.GAPinput { color: #970000; } /* Bib entries */ p.BibEntry { } span.BibKey { color: #005522; } span.BibKeyLink { } b.BibAuthor { } i.BibTitle { } i.BibBookTitle { } span.BibEditor { } span.BibJournal { } span.BibType { } span.BibPublisher { } span.BibSchool { } span.BibEdition { } span.BibVolume { } span.BibSeries { } span.BibNumber { } span.BibPages { } span.BibOrganization { } span.BibAddress { } span.BibYear { } span.BibPublisher { } span.BibNote { } span.BibHowpublished { } anupq-3.3.0/doc/interact.xml000644 000766 000024 00000275415 14355420571 016254 0ustar00mhornstaff000000 000000 Interactive ANUPQ functions Here we describe the interactive functions defined by the &ANUPQ; package, i.e. the functions that manipulate and initiate interactive &ANUPQ; processes. These are functions that extract information via a dialogue with a running pq process (process used in the UNIX sense). Occasionally, a user needs the next step; the functions provided in this chapter make use of data from previous steps retained by the pq program, thus allowing the user to interact with the pq program like one can when one uses the pq program as a stand-alone (see guide.dvi in the standalone-doc directory).

An interactive &ANUPQ; process is initiated by PqStart and terminated via PqQuit; these functions are described in ection .

Each interactive &ANUPQ; function that manipulates an already started interactive &ANUPQ; process, has a form where the first argument is the integer i returned by the initiating PqStart command, and a second form with one argument fewer (where the integer i is discovered by a default mechanism, namely by determining the least integer i for which there is a currently active interactive &ANUPQ; process). We will thus commonly say that for the ith (or default) interactive &ANUPQ; process a certain function performs a given action. In each case, it is an error if i is not the index of an active interactive process, or there are no current active interactive processes.

Notes: The global method of passing options (via PushOptions), should not be used with any of the interactive functions. In fact, the OptionsStack should be empty at the time any of the interactive functions is called.

On quitting &GAP;, PqQuitAll(); is executed, which terminates all active interactive &ANUPQ; processes. If &GAP; is killed without quitting, before all interactive &ANUPQ; processes are terminated, zombie processes (still living child processes whose parents have died), may result. Since zombie processes do consume resources, in such an event, the responsible computer user should seek out and terminate those zombie processes (e.g. on Linux: ps xw | grep pq gives you information on the pq processes corresponding to any interactive &ANUPQ; processes started in a &GAP; session; you can then do kill N for each number N appearing in the first column of this output).

Starting and Stopping Interactive ANUPQ Processes activate an iostream for an interactive &ANUPQ; process (i.e. PqStart starts up a pq process and opens a &GAP; iostream to talk to that process) and returns an integer i that can be used to identify that process. The argument G should be an fp group or pc group that the user intends to manipulate using interactive &ANUPQ; functions. If the function is called without specifying G, a group can be read in by using the function PqRestorePcPresentation (see ). If PqStart is given an integer argument workspace, then the pq program is started up with a workspace (an integer array) of size workspace (i.e. 4 \times workspace bytes in a 32-bit environment); otherwise, the pq program sets a default workspace of 10000000.

The only options currently recognised by PqStart are Prime, Exponent and Relators (see Chapter  for detailed descriptions of these options) and if provided they are essentially global for the interactive &ANUPQ; process, except that any interactive function interacting with the process and passing new values for these options will over-ride the global values. closes the stream of the ith or default interactive &ANUPQ; process and unbinds its ANUPQData.io record.

Note: It can happen that the pq process, and hence the &GAP; iostream assigned to communicate with it, can die, e.g. by the user typing a Ctrl-C while the pq process is engaged in a long calculation. IsPqProcessAlive (see ) is provided to check the status of the &GAP; iostream (and hence the status of the pq process it was communicating with). is provided as a convenience, to terminate all active interactive &ANUPQ; processes with a single command. It is equivalent to executing PqQuit(i) for all active interactive &ANUPQ; processes i (see ).

Interactive ANUPQ Process Utility Functions With argument i, which must be a positive integer, PqProcessIndex returns i if it corresponds to an active interactive process, or raises an error. With no arguments it returns the default active interactive process or returns fail and emits a warning message to Info at InfoANUPQ or InfoWarning level 1.

Note: Essentially, an interactive &ANUPQ; process i is active if ANUPQData.io[i] is bound (i.e. we still have some data telling us about it). Also see . returns the list of integer indices of all active interactive &ANUPQ; processes (see  for the meaning of active). return true if the &GAP; iostream of the ith (or default) interactive &ANUPQ; process started by PqStart is alive (i.e. can still be written to), or false, otherwise. (See the notes for  and .)

interruption If the user does not yet have a gap> prompt then usually the pq program is still away doing something and an &ANUPQ; interface function is still waiting for a reply. Typing a Ctrl-C (i.e. holding down the Ctrl key and typing c) will stop the waiting and send &GAP; into a break-loop, from which one has no option but to quit;. The typing of Ctrl-C, in such a circumstance, usually causes the stream of the interactive &ANUPQ; process to die; to check this we provide IsPqProcessAlive (see ).

The &GAP; iostream of an interactive &ANUPQ; process will also die if the pq program has a segmentation fault. We do hope that this never happens to you, but if it does and the failure is reproducible, then it's a bug and we'd like to know about it. Please read the README that comes with the &ANUPQ; package to find out what to include in a bug report and who to email it to.

Interactive Versions of Non-interactive ANUPQ Functions return, for the fp or pc group (let us call it F), of the ith or default interactive &ANUPQ; process, the p-quotient of F specified by options, as a pc group; F must previously have been given (as first argument) to PqStart to start the interactive &ANUPQ; process (see ) or restored from file using the function PqRestorePcPresentation (see ). Following the colon options is a selection of the options listed for the non-interactive Pq function (see ), separated by commas like record components (see Section  in the &GAP; Reference Manual), except that the options SetupFile or PqWorkspace are ignored by the interactive Pq, and RedoPcp is an option only recognised by the interactive Pq i.e. the following options are recognised by the interactive Pq function: Prime := poption Prime ClassBound := noption ClassBound Exponent := noption Exponent Relators := relsoption Relators Metabelianoption Metabelian Identities := funcsoption Identities GroupName := nameoption GroupName OutputLevel := noption OutputLevel RedoPcpoption RedoPcp Detailed descriptions of the above options may be found in Chapter .

As a minimum the Pq function must have a value for the Prime option, though Prime need not be passed again in the case it has previously been provided, e.g. to PqStart (see ) when starting the interactive process.

The behaviour of the interactive Pq function depends on the current state of the pc presentation stored by the pq program: If no pc presentation has yet been computed (the case immediately after the PqStart call initiating the process) then the quotient group of the input group of the process of largest lower exponent-p class bounded by the value of the ClassBound option (see ) is returned. If the current pc presentation of the process was determined by a previous call to Pq or PqEpimorphism, and the current call has a larger value ClassBound then the class is extended as much as is possible and the quotient group of the input group of the process of the new lower exponent-p class is returned. If the current pc presentation of the process was determined by a previous call to PqPCover then a consistent pc presentation of a quotient for the current class is determined before proceeding as in 2. If the RedoPcp option is supplied the current pc presentation is scrapped, all options must be re-supplied (in particular, Prime must be supplied) and then the Pq function proceeds as in 1. See Section  for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the group returned by Pq.

The following is one of the examples for the non-interactive Pq redone with the interactive version. Also, we set the option OutputLevel to 1 (see ), in order to see the orders of the quotients of all the classes determined, and we set the InfoANUPQ level to 2 (see ), so that we catch the timing information. F := FreeGroup("a", "b");; a := F.1;; b := F.2;; gap> G := F / [a^4, b^4]; gap> PqStart(G); 1 gap> SetInfoLevel(InfoANUPQ, 2); #To see timing information gap> Pq(: Prime := 2, ClassBound := 3, OutputLevel := 1 ); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^2 #I Group: [grp] to lower exponent-2 central class 2 has order 2^5 #I Group: [grp] to lower exponent-2 central class 3 has order 2^8 #I Computation of presentation took 0.00 seconds ]]> return, for the fp or pc group (let us call it F), of the ith or default interactive &ANUPQ; process, an epimorphism from F onto the p-quotient of F specified by options; F must previously have been given (as first argument) to PqStart to start the interactive &ANUPQ; process (see ). Since the underlying interactions with the pq program effected by the interactive PqEpimorphism are identical to those effected by the interactive Pq, everything said regarding the requirements and behaviour of the interactive Pq function (see ) is also the case for the interactive PqEpimorphism.

Note: See Section  for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the image group of the epimorphism returned by PqEpimorphism. return, for the fp or pc group of the ith or default interactive &ANUPQ; process, the p-covering group of the p-quotient Pq(i : options) or Pq(: options), modulo the following: If no pc presentation has yet been computed (the case immediately after the PqStart call initiating the process) and the group F of the process is already a p-group, in the sense that HasIsPGroup(F) and IsPGroup(F) is true, then Prime defaults to PrimePGroup(F), if not supplied and HasPrimePGroup(F) = true; and ClassBound defaults to PClassPGroup(F) if HasPClassPGroup(F) = true if not supplied, or to the usual default of 63, otherwise. If a pc presentation has been computed and none of options is RedoPcp or if no pc presentation has yet been computed but 1. does not apply then PqPCover(i : options); is equivalent to:

If the RedoPcp option is supplied the current pc presentation is scrapped, and PqPCover proceeds as in 1. or 2. but without the RedoPcp option.
automorphismsof p-groups return, for the ith or default interactive &ANUPQ; process, the p-quotient of the group F of the process, specified by options, as an fp group which has a standard presentation. Here options is a selection of the options from the following list (see Chapter  for detailed descriptions); this list is the same as for the non-interactive version of PqStandardPresentation except for the omission of options SetupFile and PqWorkspace (see ). Prime := poption Prime pQuotient := Qoption pQuotient ClassBound := noption ClassBound Exponent := noption Exponent Metabelianoption Metabelian GroupName := nameoption GroupName OutputLevel := noption OutputLevel StandardPresentationFile := filenameoption StandardPresentationFile Unless F is a pc p-group, or the option Prime has been passed to a previous interactive function for the process to compute a p-quotient for F, the user must supply either the option Prime or the option pQuotient (if both Prime and pQuotient are supplied, the prime p is determined by applying PrimePGroup (see  in the Reference Manual) to the value of pQuotient).

Taking one of the examples for the non-interactive version of StandardPresentation (see ) that required two separate calls to the pq program, we now show how it can be done by setting up a dialogue with just the one pq process, using the interactive version of StandardPresentation: F4 := FreeGroup( "a", "b", "c", "d" );; gap> a := F4.1;; b := F4.2;; c := F4.3;; d := F4.4;; gap> G4 := F4 / [ b^4, b^2 / Comm(Comm (b, a), a), d^16, > a^16 / (c * d), b^8 / (d * c^4) ]; gap> SetInfoLevel(InfoANUPQ, 1); #Only essential Info please gap> PqStart(G4); #Start a new interactive process for a new group 2 gap> K := Pq( 2 : Prime := 2, ClassBound := 1 ); #`pq' process no. is 2 gap> StandardPresentation( 2 : pQuotient := K, ClassBound := 14 ); ]]> Notes

In contrast to the function Pq (see ) which returns a pc group, PqStandardPresentation or StandardPresentation returns an fp group. This is because the output is mainly used for isomorphism testing for which an fp group is enough. However, the presentation is a polycyclic presentation and if you need to do any further computation with this group (e.g. to find the order) you can use the function PcGroupFpGroup (see  in the &GAP; Reference Manual) to form a pc group.

If the user does not supply a p-quotient Q via the pQuotient option, and the prime p is either supplied, stored, or F is a pc p-group, then a p-quotient Q is computed. (The value of the prime p is stored if passed initially to PqStart or to a subsequent interactive process.) Note that a stored value for pQuotient (from a prior call to Pq) does not have precedence over a value for the prime p. If the user does supply a p-quotient Q via the pQuotient option, the package &AutPGrp; is called to compute the automorphism group of Q; an error will occur that asks the user to install the package &AutPGrp; if the automorphism group cannot be computed.

If any of the interactive functions PqStandardPresentation, StandardPresentation, EpimorphismPqStandardPresentation or EpimorphismStandardPresentation has been called previously for an interactive process, a subsequent call to any of these functions for the same process returns the previously computed value. Note that all these functions compute both an epimorphism and an fp group and store the results in the SPepi and SP fields of the data record associated with the process. See the example for the interactive EpimorphismStandardPresentation ().

The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for the group returned by PqStandardPresentation or StandardPresentation (see Section ). Each of the above functions accepts the same arguments and options as the interactive form of StandardPresentation (see ) and returns an epimorphism from the fp or pc group F of the ith or default interactive &ANUPQ; process onto the finitely presented group given by a standard presentation, i.e. if S is the standard presentation computed for the p-quotient of F by StandardPresentation then EpimorphismStandardPresentation returns the epimorphism from F to the group with presentation S. The group F must have been given (as first argument) to PqStart to start the interactive &ANUPQ; process (see ).

Taking our earlier non-interactive example (see ) and modifying it a little, we illustrate, as for the interactive StandardPresentation (see ), how something that required two separate calls to the pq program can now be achieved with a dialogue with just one pq process. Also, observe that calls to one of the standard presentation functions (as mentioned in the notes of ) computes and stores both an fp group with a standard presentation and an epimorphism; subsequent calls to a standard presentation function for the same process simply return the appropriate stored value. F := FreeGroup(6, "F");; gap> x := F.1;; y := F.2;; z := F.3;; w := F.4;; a := F.5;; b := F.6;; gap> R := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b, > Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ]; [ F1^3*F4^-1, F2^3*F4^-1*F5^2*F6^2, F4^3*F6^-1, F2^-1*F1^-1*F2*F1*F3^-1, F3^-1*F1^-1*F3*F1, F3^-1*F2^-1*F3*F2*F5^-1, F3^3 ] gap> Q := F / R; gap> PqStart( Q ); 3 gap> G := Pq( 3 : Prime := 3, ClassBound := 3 ); gap> lev := InfoLevel(InfoANUPQ);; # Save current InfoANUPQ level gap> SetInfoLevel(InfoANUPQ, 2); # To see computation times gap> # It is not necessary to pass the `Prime' option to gap> # `EpimorphismStandardPresentation' since it was previously gap> # passed to `Pq': gap> phi := EpimorphismStandardPresentation( 3 : ClassBound := 3 ); #I Class 1 3-quotient and its 3-covering group computed in 0.00 seconds #I Order of GL subgroup is 48 #I No. of soluble autos is 0 #I dim U = 1 dim N = 3 dim M = 3 #I nice stabilizer with perm rep #I Computing standard presentation for class 2 took 0.00 seconds #I Computing standard presentation for class 3 took 0.01 seconds [ F1, F2, F3, F4, F5, F6 ] -> [ f1*f2^2*f3*f4^2*f5^2, f1*f2*f3*f5, f3^2, f4*f6^2, f5, f6 ] gap> # Image of phi should be isomorphic to G ... gap> # let's check the order is correct: gap> Size( Image(phi) ); 729 gap> # `StandardPresentation' and `EpimorphismStandardPresentation' gap> # behave like attributes, so no computation is done when gap> # either is called again for the same process ... gap> StandardPresentation( 3 : ClassBound := 3 ); gap> # No timing data was Info-ed since no computation was done gap> SetInfoLevel(InfoANUPQ, lev); # Restore previous InfoANUPQ level ]]> A very similar (essential details are the same) example to the above may be executed live, by typing: PqExample( "EpimorphismStandardPresentation-i" );.

Note: The notes for PqStandardPresentation or StandardPresentation (see ) apply also to EpimorphismPqStandardPresentation or EpimorphismStandardPresentation except that their return value is an epimorphism onto an fp group, i.e. one should interpret the phrase returns an fp group as returns an epimorphism onto an fp group etc. return for the pc group G of the ith or default interactive &ANUPQ; process, which must be of prime power order with a confluent pc presentation (see  in the &GAP; Reference Manual), a list of descendants (pc groups) of G. The group G is usually given as first argument to PqStart when starting the interactive &ANUPQ; process (see ). Alternatively, one may initiate the process with an fp group, use Pq interactively (see ) to create a pc group and use PqSetPQuotientToGroup (see ), which involves no computation, to set the pc group returned by Pq as the group of the process. Note that repeating a call to PqDescendants for the same interactive &ANUPQ; process simply returns the list of descendants originally calculated; a warning is emitted at InfoANUPQ level 1 reminding you of this should you do this.

After the colon, options a selection of the options listed for the non-interactive PqDescendants function (see ), should be given, separated by commas like record components (see Section  in the &GAP; Reference Manual), except that the options SetupFile or PqWorkspace are ignored by the interactive PqDescendants, i.e. the following options are recognised by the interactive PqDescendants function: ClassBound := noption ClassBound Relators := relsoption Relators OrderBound := noption OrderBound StepSize := n, StepSize := list option StepSize RankInitialSegmentSubgroups := noption RankInitialSegmentSubgroups SpaceEfficientoption SpaceEfficient CapableDescendantsoption CapableDescendants AllDescendants := falseoption AllDescendants Exponent := noption Exponent Metabelianoption Metabelian GroupName := nameoption GroupName SubList := suboption SubList BasicAlgorithmoption BasicAlgorithm CustomiseOutput := recoption CustomiseOutput Notes: The function PqDescendants uses the automorphism group of G which it computes via the package &AutPGrp; if the automorphism group of G is not already present. If &AutPGrp; is not installed an error may be raised. If the automorphism group of G is insoluble the pq program will call &GAP; together with the &AutPGrp; package for certain orbit-stabilizer calculations.

The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for each group of the list returned by PqDescendants (see Section ).

Let us now repeat the examples previously given for the non-interactive PqDescendants, but this time with the interactive version of PqDescendants: F := FreeGroup( "a", "b" );; a := F.1;; b := F.2;; gap> G := PcGroupFpGroup( F / [ a^2, b^2, Comm(b, a) ] ); gap> PqStart(G); #This will now be the 4th interactive process running 4 gap> des := PqDescendants( 4 : OrderBound := 6, ClassBound := 5 );; gap> Length(des); 83 gap> List(des, Size); [ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 ] gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 ); [ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5 ] ]]> In the second example we compute all capable descendants of order 27 of the elementary abelian group of order 9. F := FreeGroup( 2, "g" );; gap> G := PcGroupFpGroup( F / [ F.1^3, F.2^3, Comm(F.1, F.2) ] ); gap> PqStart(G); #This will now be the 5th interactive process running 5 gap> des := PqDescendants( 5 : OrderBound := 3, ClassBound := 2, > CapableDescendants ); [ , ] gap> List(des, d -> Length( PCentralSeries( d, 3 ) ) - 1 ); [ 2, 2 ] gap> # For comparison let us now compute all descendants gap> # (using the non-interactive Pq function) gap> PqDescendants( G : OrderBound := 3, ClassBound := 2); [ , , ] ]]> In the third example, we compute all capable descendants of the elementary abelian group of order 5^2 which have exponent-5 class at most 3, exponent 5, and are metabelian. F := FreeGroup( 2, "g" );; gap> G := PcGroupFpGroup( F / [ F.1^5, F.2^5, Comm(F.2, F.1) ] ); gap> PqStart(G); #This will now be the 6th interactive process running 6 gap> des := PqDescendants( 6 : Metabelian, ClassBound := 3, > Exponent := 5, CapableDescendants ); [ , , ] gap> List(des, d -> Length( PCentralSeries( d, 5 ) ) - 1 ); [ 2, 3, 3 ] gap> List(des, d -> Length( DerivedSeries( d ) ) ); [ 3, 3, 3 ] gap> List(des, d -> Maximum( List( d, Order ) ) ); [ 5, 5, 5 ] ]]> for the ith or default interactive &ANUPQ; process, set the p-quotient previously computed by the interactive Pq function (see ) to be the group of the process. This function is supplied to enable the computation of descendants of a p-quotient that is already known to the pq program, via the interactive PqDescendants function (see ), thus avoiding the need to re-submit it and have the pq program recompute it.

Note: See the function PqPGSetDescendantToPcp () for a mechanism to make (the p-cover of) a particular descendants the current group of the process.

The following example of the usage of PqSetPQuotientToGroup, which is essentially equivalent to what is obtained by running PqExample("PqDescendants-1-i");, redoes the first example of (which computes the descendants of the Klein four group). F := FreeGroup( "a", "b" ); gap> procId := PqStart( F : Prime := 2 ); 7 gap> Pq( procId : ClassBound := 1 ); gap> PqSetPQuotientToGroup( procId ); gap> des := PqDescendants( procId : OrderBound := 6, ClassBound := 5 );; gap> Length(des); 83 gap> List(des, Size); [ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 ] gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 ); [ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5 ] ]]>

Low-level Interactive ANUPQ functions based on menu items of the pq program The pq program has 5 menus, the details of which the reader will not normally need to know, but if she wishes to know the details they may be found in the standalone manual: guide.dvi. Both guide.dvi and the pq program refer to the items of these 5 menus as options, which do not correspond in any way to the options used by any of the &GAP; functions that interface with the pq program.

Warning: The commands provided in this section are intended to provide something like the interactive functionality one has when running the standalone, from within &GAP;. The pq standalone (in particular, its advanced menus) assumes some expertise of the user; doing the wrong thing can cause the program to crash. While a number of safeguards have been provided in the &GAP; interface to the pq program, these are not foolproof, and the user should exercise care and ensure pre-requisites of the various commands are met.

General commands The following commands either use a menu item from whatever menu is current for the pq program, or have general application and are not associated with just one menu item of the pq program. for the ith or default interactive &ANUPQ; process, return the number of pc generators of the lower exponent p-class quotient of the group currently determined by the process. This also applies if the pc presentation is not consistent. for the ith or default interactive &ANUPQ; process, return an integer pair [p, n] where p is a prime and n is the number of pc generators (see ) in the pc presentation of the quotient group currently determined by the process. If this presentation is consistent, then p^n is the order of the quotient group. Otherwise (if tails have been added but the necessary consistency checks, relation collections, exponent law checks and redundant generator eliminations have not yet been done), p^n is an upper bound for the order of the group. for the ith or default interactive &ANUPQ; process, return p^n where [p, n] is the pair as returned by PqFactoredOrder (see ). for the ith or default interactive &ANUPQ; process, return the lower exponent p-class of the quotient group currently determined by the process. for the ith or default interactive &ANUPQ; process, return the weight of the jth pc generator of the lower exponent p-class quotient of the group currently determined by the process, or fail if there is no such numbered pc generator. for the ith or default interactive &ANUPQ; process, return the group whose pc presentation is determined by the process as a &GAP; pc group (either a lower exponent p-class quotient of the start group or the p-cover of such a quotient).

Notes: See Section  for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the group returned by PqCurrentGroup. for the ith or default interactive &ANUPQ; process, direct the pq program to display the pc presentation of the lower exponent p-class quotient of the group currently determined by the process.

Except if the last command communicating with the pq program was a p-group generation command (for which there is only a verbose output level), to set the amount of information this command displays you may wish to call PqSetOutputLevel first (see ), or equivalently pass the option OutputLevel (see ).

Note: For those familiar with the pq program, PqDisplayPcPresentation performs menu item 4 of the current menu of the pq program. for the ith or default interactive &ANUPQ; process, direct the pq program to set the output level of the pq program to lev.

Note: For those familiar with the pq program, PqSetOutputLevel performs menu item 5 of the main (or advanced) p-Quotient menu, or the Standard Presentation menu. for the ith or default interactive &ANUPQ; process, invoke the evaluation of identities defined by the Identities option, and eliminate any redundant pc generators formed. Since a previous value of Identities is saved in the data record of the process, it is unnecessary to pass the Identities if set previously.

Note: This function is mainly implemented at the &GAP; level. It does not correspond to a menu item of the pq program.

Commands from the Main p-Quotient menu for the ith or default interactive &ANUPQ; process, direct the pq program to compute the pc presentation of the quotient (determined by options) of the group of the process, which for process i is stored as ANUPQData.io[i].group.

The possible options are the same as for the interactive Pq (see ) function, except for RedoPcp (which, in any case, would be superfluous), namely: Prime, ClassBound, Exponent, Relators, GroupName, Metabelian, Identities and OutputLevel (see Chapter  for a detailed description for these options). The option Prime is required unless already provided to PqStart.

Notes

The pc presentation is held by the pq program. In contrast to Pq (see ), no &GAP; pc group is returned; see PqCurrentGroup () if you need the corresponding &GAP; pc group.

PqPcPresentation(i: options); is roughly equivalent to the following sequence of low-level commands:

where opts is options except with the ClassBound option set to 1, and class is either the maximum class of a p-quotient of the group of the process or the user-supplied value of the option ClassBound (whichever is smaller). If the Identities option has been set, both the first PqPcPresentation class 1 call and the PqNextClass calls invoke PqEvaluateIdentities(i); as their final step.

For those familiar with the pq program, PqPcPresentation performs menu item 1 of the main p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to save the pc presentation previously computed for the quotient of the group of that process to the file with name filename. If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which &GAP; was started. A saved file may be restored by PqRestorePcPresentation (see ).

Note: For those familiar with the pq program, PqSavePcPresentation performs menu item 2 of the main p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to restore the pc presentation previously saved to filename, by PqSavePcPresentation (see ). If the first character of the string filename is not /, filename is assumed to be the path of a readable file relative to the directory in which &GAP; was started.

Note: For those familiar with the pq program, PqRestorePcPresentation performs menu item 3 of the main p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to calculate the next class of ANUPQData.io[i].group.

option QueueFactor PqNextClass accepts the option QueueFactor (see also ) which should be a positive integer if automorphisms have been previously supplied. If the pq program requires a queue factor and none is supplied via the option QueueFactor a default of 15 is taken.

Notes

The single command: PqNextClass(i); is equivalent to executing

If the Identities option is set the PqEliminateRedundantGenerators(i); step is essentially replaced by PqEvaluateIdentities(i); (which invokes its own elimination of redundant generators).

For those familiar with the pq program, PqNextClass performs menu item 6 of the main p-Quotient menu. for the ith or default interactive &ANUPQ; processi, directi, the pq program to compute the p-covering group of ANUPQData.io[i].group. In contrast to the function PqPCover (see ), this function does not return a &GAP; pc group.

Notes

The single command: PqComputePCover(i); is equivalent to executing

For those familiar with the pq program, PqComputePCover performs menu item 7 of the main p-Quotient menu.
Commands from the Advanced p-Quotient menu for the ith or default interactive &ANUPQ; process, instruct the pq program to do a collection on word, a word in the current pc generators (the form of word required is described below). PqCollect returns the resulting word of the collection as a list of generator number, exponent pairs (the same form as the second allowed input form of word; see below).

The argument word may be input in either of the following ways: word may be a string, where the ith pc generator is represented by xi, e.g. "x3*x2^2*x1". This way is quite versatile as parentheses and left-normed commutators -- using square brackets, in the same way as PqGAPRelators (see ) -- are permitted; word is checked for correct syntax via PqParseWord (see ). Otherwise, word must be a list of generator number, exponent pairs of integers, i.e.  each pair represents a syllable so that [ [3, 1], [2, 2], [1, 1] ] represents the same word as that of the example given for the first allowed form of word. Note: For those familiar with the pq program, PqCollect performs menu item 1 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to solve a * x = b for x, where a and b are words in the pc generators. For the representation of these words see the description of the function PqCollect ().

Note: For those familiar with the pq program, PqSolveEquation performs menu item 2 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, instruct the pq program to compute the left normed commutator of the list words of words in the current pc generators raised to the integer power pow, and return the resulting word as a list of generator number, exponent pairs. The form required for each word of words is the same as that required for the word argument of PqCollect (see ). The form of the output word is also the same as for PqCollect.

Note: For those familiar with the pq program, PqCommutator performs menu item 3 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to set up tables for the next class. As as side-effect, after PqSetupTablesForNextClass(i) the value returned by PqPClass(i) will be one more than it was previously.

Note: For those familiar with the pq program, PqSetupTablesForNextClass performs menu item 6 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to compute and add tails of weight weight if weight is in the integer range [2 .. PqPClass(i)] (assuming i is the number of the process, even in the default case) or for all weights if weight = 0.

If weight is non-zero, then tails that introduce new generators for only weight weight are computed and added, and in this case and if weight < PqPClass(i), it is assumed that the tails that introduce new generators for each weight from PqPClass(i) down to weight weight + 1 have already been added. You may wish to call PqSetMetabelian (see ) prior to calling PqTails.

Notes

For its use in the context of finding the next class see ; in particular, a call to PqSetupTablesForNextClass (see ) needs to have been made prior to calling PqTails.

The single command: PqTails(i, weight); is equivalent to

For those familiar with the pq program, PqTails uses menu item 7 of the Advanced p-Quotient menu.
for the ith or default interactive &ANUPQ; process, direct the pq program to compute tails of weight weight if weight is in the integer range [2 .. PqPClass(i)] (assuming i is the number of the process, even in the default case) or for all weights if weight = 0. See PqTails () for more details.

Note: For those familiar with the pq program, PqComputeTails uses menu item 7 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to add the tails of weight weight, previously computed by PqComputeTails (see ), if weight is in the integer range [2 .. PqPClass(i)] (assuming i is the number of the process, even in the default case) or for all weights if weight = 0. See PqTails () for more details.

Note: For those familiar with the pq program, PqAddTails uses menu item 7 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, do consistency checks for weight weight if weight is in the integer range [3 .. PqPClass(i)] (assuming i is the number of the process) or for all weights if weight = 0, and for type type if type is in the range [1, 2, 3] (see below) or for all types if type = 0. (For its use in the context of finding the next class see .)

The type of a consistency check is defined as follows. PqDoConsistencyChecks(i, weight, type) for weight in [3 .. PqPClass(i)] and the given value of type invokes the equivalent of the following PqDoConsistencyCheck calls (see ): type = 1: PqDoConsistencyCheck(i, a, a, a) checks 2 * PqWeight(i, a) + 1 = weight, for pc generators of index a. type = 2: PqDoConsistencyCheck(i, b, b, a) checks for pc generators of indices b, a satisfyingx both b > a and PqWeight(i, b) + PqWeight(i, a) + 1 = weight. type = 3: PqDoConsistencyCheck(i, c, b, a) checks for pc generators of indices c, b, a satisfying c > b > a and the sum of the weights of these generators equals weight. Notes

PqWeight(i, j) returns the weight of the jth pc generator, for process i (see ).

It is assumed that tails for the given weight (or weights) have already been added (see ).

For those familiar with the pq program, PqDoConsistencyChecks performs menu item 8 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to collect the images of the defining relations of the original fp group of the process, with respect to the current pc presentation, in the context of finding the next class (see ). If the tails operation is not complete then the relations may be evaluated incorrectly.

Note: For those familiar with the pq program, PqCollectDefiningRelations performs menu item 9 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, take a user-defined word word in the defining generators of the original presentation of the fp or pc group of the process. Each generator is mapped into the current pc presentation, and the resulting word is collected with respect to the current pc presentation. The result of the collection is returned as a list of generator number, exponent pairs.

The word argument may be input in either of the two ways described for PqCollect (see ).

Note: For those familiar with the pq program, PqCollectDefiningGenerators performs menu item 23 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, take a list words of user-defined words in the defining generators of the original presentation of the fp or pc group of the process, and an integer power pow. Each generator is mapped into the current pc presentation. The list words is interpreted as a left-normed commutator which is then raised to pow and collected with respect to the current pc presentation. The result of the collection is returned as a list of generator number, exponent pairs.

Note For those familiar with the pq program, PqCommutatorDefiningGenerators performs menu item 24 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to do exponent checks for weights (inclusively) between the bounds of Bounds or for all weights if Bounds is not given. The value list of Bounds (assuming the interactive process is numbered i) should be a list of two integers low, high satisfying 1 \le low \le high \le PqPClass(i) (see ). If no exponent law has been specified, no exponent checks are performed.

Note: For those familiar with the pq program, PqDoExponentChecks performs menu item 10 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to eliminate redundant generators of the current p-quotient.

Note: For those familiar with the pq program, PqEliminateRedundantGenerators performs menu item 11 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to abandon the current class and revert to the previous class.

Note: For those familiar with the pq program, PqRevertToPreviousClass performs menu item 12 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to set maximal occurrences of the weight 1 generators in the definitions of pcp generators of the group of the process. This can be used to avoid the definition of generators of which one knows for theoretical reasons that they would be eliminated later on.

The argument noccur must be a list of non-negative integers of length the number of weight 1 generators (i.e. the rank of the class 1 p-quotient of the group of the process). An entry of 0 for a particular generator indicates that there is no limit on the number of occurrences for the generator.

Note: For those familiar with the pq program, PqSetMaximalOccurrences performs menu item 13 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to enforce metabelian-ness.

Note: For those familiar with the pq program, PqSetMetabelian performs menu item 14 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to do the consistency check for the pc generators with indices c, b, a which should be non-increasing positive integers, i.e. c \ge b \ge a.

There are 3 types of consistency checks: \begin{array}{rclrl} (a^n)a &=& a(a^n) && {\rm (Type\ 1)} \\ (b^n)a &=& b^{(n-1)}(ba), b(a^n) = (ba)a^{(n-1)} && {\rm (Type\ 2)} \\ c(ba) &=& (cb)a && {\rm (Type\ 3)} \\ \end{array} The reason some people talk about Jacobi relations instead of consistency checks becomes clear when one looks at the consistency check of type 3: \begin{array}{rcl} c(ba) &=& a c[c,a] b[b,a] = acb [c,a][c,a,b][b,a] = \dots \\ (cb)a &=& b c[c,b] a = a b[b,a] c[c,a] [c,b][c,b,a] \\ &=& abc [b,a] [b,a,c] [c,a] [c,b] [c,b,a] = \dots \\ \end{array} Each collection would normally carry on further. But one can see already that no other commutators of weight 3 will occur. After all terms of weight one and weight two have been moved to the left we end up with: \begin{array}{rcl} & &abc [b,a] [c,a] [c,b] [c,a,b] \dots \\ &=&abc [b,a] [c,a] [c,b] [c,b,a] [b,a,c] \dots \\ \end{array} Modulo terms of weight 4 this is equivalent to [c,a,b] [b,c,a] [a,b,c] = 1 which is the Jacobi identity.

See also PqDoConsistencyChecks ().

Note: For those familiar with the pq program, PqDoConsistencyCheck and PqJacobi perform menu item 15 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to do a compaction of its work space. This function is safe to perform only at certain points in time.

Note: For those familiar with the pq program, PqCompact performs menu item 16 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to echelonise the word most recently collected by PqCollect or PqCommutator against the relations of the current pc presentation, and return the number of the generator made redundant or fail if no generator was made redundant. A call to PqCollect (see ) or PqCommutator (see ) needs to be performed prior to using this command.

Note: For those familiar with the pq program, PqEchelonise performs menu item 17 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, supply the automorphism data provided by the list mlist of matrices with non-negative integer coefficients. Each matrix in mlist describes one automorphism in the following way. The rows of each matrix correspond to the pc generators of weight one. Each row is the exponent vector of the image of the corresponding weight one generator under the respective automorphism. Note: For those familiar with the pq program, PqSupplyAutomorphisms uses menu item 18 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to extend automorphisms of the p-quotient of the previous class to the p-quotient of the present class.

Note: For those familiar with the pq program, PqExtendAutomorphisms uses menu item 18 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to apply automorphisms; qfac is the queue factor e.g. 15.

Note: For those familiar with the pq program, PqCloseRelations performs menu item 19 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to display the structure for the pcp generators numbered (inclusively) between the bounds of Bounds or for all generators if Bounds is not given. The value list of Bounds (assuming the interactive process is numbered i) should be a list of two integers low, high satisfying 1 \le low \le high \le PqNrPcGenerators(i) (see ). PqDisplayStructure also accepts the option OutputLevel (see ).

Explanation of output

New generators are defined as commutators of previous generators and generators of class 1 or as p-th powers of generators that have themselves been defined as p-th powers. A generator is never defined as p-th power of a commutator.

Therefore, there are two cases: all the numbers on the righthand side are either the same or they differ. Below, gi refers to the ith defining generator. If the righthand side numbers are all the same, then the generator is a p-th power (of a p-th power of a p-th power, etc.). The number of repeated digits say how often a p-th power has to be taken.

In the following example, the generator number 31 is the eleventh power of generator 17 which in turn is an eleventh power and so on:

\begintt #I 31 is defined on 17^11 = 1 1 1 1 1 \endtt So generator 31 is obtained by taking the eleventh power of generator 1 five times. If the numbers are not all the same, the generator is defined by a commutator. If the first two generator numbers differ, the generator is defined as a left-normed commutator of the weight one generators, e.g.

\begintt #I 19 is defined on [11, 1] = 2 1 1 1 1 \endtt Here, generator 19 is defined as the commutator of generator 11 and generator 1 which is the same as the left-normed commutator [x2, x1, x1, x1, x1]. One can check this by tracing back the definition of generator 11 until one gets to a generator of class 1. If the first two generator numbers are identical, then the left most component of the left-normed commutator is a p-th power, e.g.

\begintt #I 25 is defined on [14, 1] = 1 1 2 1 1 \endtt

In this example, generator 25 is defined as commutator of generator 14 and generator 1. The left-normed commutator is [(x1^{11})^{11}, x2, x1, x1] Again, this can be verified by tracing back the definitions. Note: For those familiar with the pq program, PqDisplayStructure performs menu item 20 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to display the automorphism actions on the pcp generators numbered (inclusively) between the bounds of Bounds or for all generators if Bounds is not given. The value list of Bounds (assuming the interactive process is numbered i) should be a list of two integers low, high satisfying 1 \le low \le high \le PqNrPcGenerators(i) (see ). PqDisplayStructure also accepts the option OutputLevel (see ).

Note: For those familiar with the pq program, PqDisplayAutomorphisms performs menu item 21 of the Advanced p-Quotient menu. for the ith or default interactive &ANUPQ; process, direct the pq program to write a pc presentation of a previously-computed quotient of the group of that process, to the file with name filename. Here the group of a process is the one given as first argument when PqStart was called to initiate that process (for process i the group is stored as ANUPQData.io[i].group). If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which &GAP; was started. If a pc presentation has not been previously computed by the pq program, then pq is called to compute it first, effectively invoking PqPcPresentation (see ).

Note: For those familiar with the pq program, PqPcWritePresentation performs menu item 25 of the Advanced p-Quotient menu.

Commands from the Standard Presentation menu for the ith or default interactive &ANUPQ; process, directs the pq program to compute for the group of that process a pc presentation up to the p-quotient of maximum class or the value of the option ClassBound and the p-cover of that quotient, and sets up tabular information required for computation of a standard presentation. Here the group of a process is the one given as first argument when PqStart was called to initiate that process (for process i the group is stored as ANUPQData.io[i].group).

The possible options are Prime, ClassBound, Relators, Exponent, Metabelian and OutputLevel (see Chapter  for detailed descriptions of these options). The option Prime is normally determined via PrimePGroup, and so is not required unless the group doesn't know it's a p-group and HasPrimePGroup returns false.

Note: For those familiar with the pq program, PqSPComputePcpAndPCover performs option 1 of the Standard Presentation menu. for the ith or default interactive &ANUPQ; process, inputs data given by options to compute a standard presentation for the group of that process. If argument mlist is given it is assumed to be the automorphism group data required. Otherwise it is assumed that a call to either Pq (see ) or PqEpimorphism (see ) has generated a p-quotient and that &GAP; can compute its automorphism group from which the necessary automorphism group data can be derived. The group of the process is the one given as first argument when PqStart was called to initiate the process (for process i the group is stored as ANUPQData.io[i].group and the p-quotient if existent is stored as ANUPQData.io[i].pQuotient). If mlist is not given and a p-quotient of the group has not been previously computed a class 1 p-quotient is computed.

PqSPStandardPresentation accepts three options, all optional: ClassBound := noption ClassBound PcgsAutomorphismsoption PcgsAutomorphisms StandardPresentationFile := filenameoption StandardPresentationFile If ClassBound is omitted it defaults to 63.

Detailed descriptions of the above options may be found in Chapter .

Note: For those familiar with the pq program, PqSPPcPresentation performs menu item 2 of the Standard Presentation menu. for the ith or default interactive &ANUPQ; process, directs the pq program to save the standard presentation previously computed for the group of that process to the file with name filename, where the group of a process is the one given as first argument when PqStart was called to initiate that process. If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which &GAP; was started.

Note: For those familiar with the pq program, PqSPSavePresentation performs menu item 3 of the Standard Presentation menu. for the ith or default interactive &ANUPQ; process, direct the pq program to compare the presentations in the files with names f1 and f2 and returns true if they are identical and false otherwise. For each of the strings f1 and f2, if the first character is not a / then it is assumed to be the path of a readable file relative to the directory in which &GAP; was started.

Notes

The presentations in files f1 and f2 must have been generated by the pq program but they do not need to be standard presentations. If If the presentations in files f1 and f2 have been generated by PqSPStandardPresentation (see ) then a false response from PqSPCompareTwoFilePresentations says the groups defined by those presentations are not isomorphic.

For those familiar with the pq program, PqSPCompareTwoFilePresentations performs menu item 6 of the Standard Presentation menu. for the ith or default interactive &ANUPQ; process, direct the pq program to compute the isomorphism mapping from the p-group of the process to its standard presentation. This function provides a description only; for a &GAP; object, use EpimorphismStandardPresentation (see ).

Note: For those familiar with the pq program, PqSPIsomorphism performs menu item 8 of the Standard Presentation menu.

Commands from the Main p-Group Generation menu Note that the p-group generation commands can only be applied once the pq program has produced a pc presentation of some quotient group of the group of the process. for the ith or default interactive &ANUPQ; process, supply the pq program with the automorphism group data needed for the current quotient of the group of that process (for process i the group is stored as ANUPQData.io[i].group). For a description of the format of mlist see . The options possible are NumberOfSolubleAutomorphisms and RelativeOrders. (Detailed descriptions of these options may be found in Chapter .)

If mlist is omitted, the automorphism data is determined from the group of the process which must have been a p-group in pc presentation.

Note: For those familiar with the pq program, PqPGSupplyAutomorphisms performs menu item 1 of the main p-Group Generation menu. for the ith or default interactive &ANUPQ; process, direct the pq program to compute the extensions of the automorphisms of the p-quotient of the previous class to the p-quotient of the current class. You may wish to set the InfoLevel of InfoANUPQ to 2 (or more) in order to see the output from the pq program (see ).

Note: For those familiar with the pq program, PqPGExtendAutomorphisms performs menu item 2 of the main or advanced p-Group Generation menu. for the ith or default interactive &ANUPQ; process, direct the pq program to construct descendants prescribed by options, and return the number of descendants constructed (compare function  which returns the list of descendants). The options possible are ClassBound, OrderBound, StepSize, PcgsAutomorphisms, RankInitialSegmentSubgroups, SpaceEfficient, CapableDescendants, AllDescendants, Exponent, Metabelian, BasicAlgorithm, CustomiseOutput. (Detailed descriptions of these options may be found in Chapter .)

PqPGConstructDescendants requires that the pq program has previously computed a pc presentation and a p-cover for a p-quotient of some class of the group of the process.

Note: For those familiar with the pq program, PqPGConstructDescendants performs menu item 5 of the main p-Group Generation menu. for the ith or default interactive &ANUPQ; process, direct the pq program to restore group n of class cls from a temporary file, where cls and n are positive integers, or the group stored in name. PqPGSetDescendantToPcp and PqPGRestoreDescendantFromFile are synonyms; they make sense only after a prior call to construct descendants by say PqPGConstructDescendants (see ) or the interactive PqDescendants (see ). In the Filename option forms, the option defaults to the last filename in which a presentation was stored by the pq program.

Notes

Since the PqPGSetDescendantToPcp and PqPGRestoreDescendantFromFile are intended to be used in calculation of further descendants the pq program computes the p-cover of the restored descendant. Hence, PqCurrentGroup used immediately after one of these commands returns the p-cover of the restored descendant rather than the descendant itself.

For those familiar with the pq program, PqPGSetDescendantToPcp and PqPGRestoreDescendantFromFile perform menu item 3 of the main or advanced p-Group Generation menu.

Commands from the Advanced p-Group Generation menu The functions below perform the component algorithms of PqPGConstructDescendants (see ). You can get some idea of their usage by trying PqExample("Nott-APG-Rel-i");. You can get some idea of the breakdown of PqPGConstructDescendants into these functions by comparing the previous output with PqExample("Nott-PG-Rel-i");.

These functions are intended for use only by experts; please contact the authors of the package if you genuinely have a need for them and need any amplified descriptions. for the ith or default interactive &ANUPQ; process, direct the pq program to invoke menu item 6 of the Advanced p-Group Generation menu. Here the step-size step and the rank rank are positive integers and are the arguments required by the pq program. See  for the one recognised option Exponent. for the ith or default interactive &ANUPQ; process, direct the pq program to perform menu item 7 of the Advanced p-Group Generation menu. Here the options options recognised are PcgsAutomorphisms, SpaceEfficient, PrintAutomorphisms and PrintPermutations (see Chapter  for details). for the ith or default interactive &ANUPQ; process, direct the pq to perform menu item 8 of the Advanced p-Group Generation menu.

Here the options options recognised are PcgsAutomorphisms, SpaceEfficient and CustomiseOutput (see Chapter  for details). For the CustomiseOutput option only the setting of the orbit is recognised (all other fields if set are ignored). for the ith or default interactive &ANUPQ; process, direct the pq to perform item 9 of the Advanced p-Group Generation menu.

The options options may be any selection of the following: PcgsAutomorphisms, SpaceEfficient, Exponent, Metabelian, CapableDescendants (or AllDescendants), CustomiseOutput (where only the group and autgroup fields are recognised) and Filename (see Chapter  for details). If Filename is omitted the reduced p-cover is written to the file "redPCover" in the temporary directory whose name is stored in ANUPQData.tmpdir. for the ith or default interactive &ANUPQ; process, direct the pq to perform option 5 of the Advanced p-Group Generation menu.

The possible options are StepSize, PcgsAutomorphisms, RankInitialSegmentSubgroups, SpaceEfficient, CapableDescendants, AllDescendants, Exponent, Metabelian, BasicAlgorithm and CustomiseOutput. (Detailed descriptions of these options may be found in Chapter .)

Primitive Interactive ANUPQ Process Read/Write Functions For those familiar with using the pq program as a standalone we provide primitive read/write tools to communicate directly with an interactive &ANUPQ; process, started via PqStart. For the most part, it is up to the user to translate the output strings from pq program into a form useful in &GAP;. read a complete line of &ANUPQ; output, from the ith or default interactive &ANUPQ; process, if there is output to be read and returns fail otherwise. When successful, the line is returned as a string complete with trailing newline, colon, or question-mark character. Please note that it is possible to be too quick (i.e. the return can be fail purely because the output from &ANUPQ; is not there yet), but if PqRead finds any output at all, it waits for a complete line. PqRead also writes the line read via Info at InfoANUPQ level 2. It doesn't try to distinguish banner and menu output from other output of the pq program. read and return as many complete lines of &ANUPQ; output, from the ith or default interactive &ANUPQ; process, as there are to be read, at the time of the call, as a list of strings with any trailing newlines removed and returns the empty list otherwise. PqReadAll also writes each line read via Info at InfoANUPQ level 2. It doesn't try to distinguish banner and menu output from other output of the pq program. Whenever PqReadAll finds only a partial line, it waits for the complete line, thus increasing the probability that it has captured all the output to be had from &ANUPQ;. read complete lines of &ANUPQ; output, from the ith or default interactive &ANUPQ; process, chomps them (i.e. removes any trailing newline character), emits them to Info at InfoANUPQ level 2 (without trying to distinguish banner and menu output from other output of the pq program), and applies the function Modify (where Modify is just the identity map/function for the first two forms) until a chomped line line for which IsMyLine( Modify(line) ) is true. PqReadUntil returns the list of Modify-ed chomped lines read.

Notes: When provided by the user, Modify should be a function that accepts a single string argument.

IsMyLine should be a function that is able to accept the output of Modify (or take a single string argument when Modify is not provided) and should return a boolean.

If IsMyLine( Modify(line) ) is never true, PqReadUntil will wait indefinitely. write string to the ith or default interactive &ANUPQ; process; string must be in exactly the form the &ANUPQ; standalone expects. The command is echoed via Info at InfoANUPQ level 3 (with a ToPQ> prompt); i.e. do SetInfoLevel(InfoANUPQ, 3); to see what is transmitted to the pq program. PqWrite returns true if successful in writing to the stream of the interactive &ANUPQ; process, and fail otherwise.

Note: If PqWrite returns fail it means that the &ANUPQ; process has died.

anupq-3.3.0/doc/chap4.txt000644 000766 000024 00000125537 14355420737 015464 0ustar00mhornstaff000000 000000 4 Non-interactive ANUPQ functions Here we describe all the non-interactive functions of the ANUPQ package; i.e. one-shot functions that invoke the pq program in such a way that once GAP has got what it needs, the pq program is allowed to exit. It is expected that most of the time users will only need these functions. The functions interface with three of the four algorithms (see Chapter 'Introduction') provided by the ANU pq C program, and are mainly grouped according to the algorithm of the pq program they relate to. In Section 'Computing p-Quotients', we describe the functions that give access to the p-quotient algorithm. Section 'Computing Standard Presentations' describe functions that give access to the standard presentation algorithm. Section 'Testing p-Groups for Isomorphism' describe functions that implement an isomorphism test for p-groups using the standard presentation algorithm. In Section 'Computing Descendants of a p-Group', we describe functions that give access to the p-group generation algorithm. To use any of the functions one must have at some stage previously typed:  Example  gap> LoadPackage("anupq");  (the response of which we have omitted; see 'Loading the ANUPQ Package'). It is strongly recommended that the user try the examples provided. To save typing there is a PqExample equivalent for each manual example. We also suggest that to start with you may find the examples more instructive if you set the InfoANUPQ level to 2 (see InfoANUPQ (3.3-1)). 4.1 Computing p-Quotients 4.1-1 Pq Pq( F: options )  function returns for the fp or pc group F, the p-quotient of F specified by options, as a pc group. Following the colon, options is a selection of the options from the following list, separated by commas like record components (see Section Reference: Function Call With Options in the GAP Reference Manual). As a minimum the user must supply a value for the Prime option. Below we list the options recognised by Pq (see Chapter 'ANUPQ Options' for detailed descriptions).  Prime := p  ClassBound := n  Exponent := n  Relators := rels  Metabelian  Identities := funcs  GroupName := name  OutputLevel := n  SetupFile := filename  PqWorkspace := workspace Notes: Pq may also be called with no arguments or one integer argument, in which case it is being used interactively (see Pq (5.3-1)); the same options may be used, except that SetupFile and PqWorkspace are ignored by the interactive Pq function. See Section 'Attributes and a Property for fp and pc p-groups' for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the group returned by Pq. See also PqEpimorphism (PqEpimorphism (4.1-2)). We now give a few examples of the use of Pq. Except for the addition of a few comments and the non-suppression of output (by not using duplicated semicolons) the next 3 examples may be run by typing: PqExample( "Pq" ); (see PqExample (3.4-4)).  Example  gap> LoadPackage("anupq");; # does nothing if ANUPQ is already loaded gap> # First we get a p-quotient of a free group of rank 2 gap> F := FreeGroup("a", "b");; a := F.1;; b := F.2;; gap> Pq( F : Prime := 2, ClassBound := 3 );   gap> # Now let us get a p-quotient of an fp group gap> G := F / [a^4, b^4];  gap> Pq( G : Prime := 2, ClassBound := 3 );   gap> # Now let's get a different p-quotient of the same group gap> Pq( G : Prime := 2, ClassBound := 3, Exponent := 4 );   gap> # Now we'll get a p-quotient of another fp group gap> # which we will redo using the `Relators' option gap> R := [ a^25, Comm(Comm(b, a), a), b^5 ]; [ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ] gap> H := F / R;  gap> Pq( H : Prime := 5, ClassBound := 5, Metabelian );   Now we redo the last example to show how one may use the Relators option. Observe that Comm(Comm(b, a), a) is a left normed commutator which must be written in square bracket notation for the pq program and embedded in a pair of double quotes. The function PqGAPRelators (see PqGAPRelators (3.4-2)) can be used to translate a list of strings prepared for the Relators option into GAP format. Below we use it. Observe that the value of R is the same as before.  Example  gap> F := FreeGroup("a", "b");; gap> # `F' was defined for `Relators'. We use the same strings that GAP uses gap> # for printing the free group generators. It is *not* necessary to gap> # predefine: a := F.1; etc. (as it was above). gap> rels := [ "a^25", "[b, a, a]", "b^5" ]; [ "a^25", "[b, a, a]", "b^5" ] gap> R := PqGAPRelators(F, rels); [ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ] gap> H := F / R;  gap> Pq( H : Prime := 5, ClassBound := 5, Metabelian,  >  Relators := rels );   In fact, above we could have just passed F (rather than H), i.e. we could have done:  Example  gap> F := FreeGroup("a", "b");; gap> rels := [ "a^25", "[b, a, a]", "b^5" ]; [ "a^25", "[b, a, a]", "b^5" ] gap> Pq( F : Prime := 5, ClassBound := 5, Metabelian,  >  Relators := rels );   The non-interactive Pq function also allows the options to be passed in two other ways; these alternatives have been included for those familiar with the GAP 3 version of the ANUPQ package; the preferred method of passing options is the one already described. Firstly, they may be passed in a record as a second argument; note that any boolean options must be set explicitly e.g.  Example  gap> Pq( H, rec( Prime := 5, ClassBound := 5, Metabelian := true ) );   It is also possible to pass them as extra arguments, where each option name appears as a string followed immediately by its value (if not a boolean option) e.g.  Example  gap> Pq( H, "Prime", 5, "ClassBound", 5, "Metabelian" );   The preceding two examples can be run from GAP via PqExample( "Pq-ni" ); (see PqExample (3.4-4)). This method of passing options permits abbreviation; the only restriction is that the abbreviation must be unique. So "Pr" may be used for "Prime", "Class" or even just "C" for "ClassBound", etc. The following example illustrates the use of the option Identities. We compute the largest finite Burnside group of exponent 5 that also satisfies the 3-Engel identity. Each identity is defined by a function whose arguments correspond to the variables of the identity. The return value of each of those functions is the identity evaluated on the arguments of the function.  Example  gap> F := FreeGroup(2);  gap> Burnside5 := x->x^5; function( x ) ... end gap> Engel3 := function( x,y ) return PqLeftNormComm( [x,y,y,y] ); end; function( x, y ) ... end gap> Pq( F : Prime := 5, Identities := [ Burnside5, Engel3 ] ); #I Class 1 with 2 generators. #I Class 2 with 3 generators. #I Class 3 with 5 generators. #I Class 3 with 5 generators.   The above example can be run from GAP via PqExample( "B5-5-Engel3-Id" ); (see PqExample (3.4-4)). 4.1-2 PqEpimorphism PqEpimorphism( F: options )  function returns for the fp or pc group F an epimorphism from F onto the p-quotient of F specified by options; the possible options options and required option ("Prime") are as for Pq (see Pq (4.1-1)). PqEpimorphism only differs from Pq in what it outputs; everything about what must/may be passed as input to PqEpimorphism is the same as for Pq. The same alternative methods of passing options to the non-interactive Pq function are available to the non-interactive version of PqEpimorphism. Notes: PqEpimorphism may also be called with no arguments or one integer argument, in which case it is being used interactively (see PqEpimorphism (5.3-2)), and the options SetupFile and PqWorkspace are ignored by the interactive PqEpimorphism function. See Section 'Attributes and a Property for fp and pc p-groups' for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the image group of the epimorphism returned by PqEpimorphism.  Example  gap> F := FreeGroup (2, "F");  gap> phi := PqEpimorphism( F : Prime := 5, ClassBound := 2 ); [ F1, F2 ] -> [ f1, f2 ] gap> Image( phi );   Typing: PqExample( "PqEpimorphism" ); runs the above example in GAP (see PqExample (3.4-4)). 4.1-3 PqPCover PqPCover( F: options )  function returns for the fp or pc group F, the p-covering group of the p-quotient of F specified by options, as a pc group, i.e. the p-covering group of the p-quotient Pq( F : options ). Thus the options that PqPCover accepts are exactly those expected for Pq (and hence as a minimum the user must supply a value for the Prime option; see Pq (4.1-1) for more details), except in the following special case. If F is already a p-group, in the sense that IsPGroup(F) is true, then Prime defaults to PrimePGroup(F), if not supplied and HasPrimePGroup(F) = true; and ClassBound defaults to PClassPGroup(F) if HasPClassPGroup(F) = true if not supplied, or to the usual default of 63, otherwise. The same alternative methods of passing options to the non-interactive Pq function are available to the non-interactive version of PqPCover. We now give a few examples of the use of PqPCover. These examples are just a subset of the ones we gave for Pq (see Pq (4.1-1)), except that in each instance the command Pq has been replaced with PqPCover. Essentially the same examples may be run by typing: PqExample( "PqPCover" ); (see PqExample (3.4-4)).  Example  gap> F := FreeGroup("a", "b");; a := F.1;; b := F.2;; gap> PqPCover( F : Prime := 2, ClassBound := 3 );  gap>  gap> # Now let's get a p-cover of a p-quotient of an fp group gap> G := F / [a^4, b^4];  gap> PqPCover( G : Prime := 2, ClassBound := 3 );  gap>  gap> # Now let's get a p-cover of a different p-quotient of the same group gap> PqPCover( G : Prime := 2, ClassBound := 3, Exponent := 4 );  gap>  gap> # Now we'll get a p-cover of a p-quotient of another fp group gap> # which we will redo using the `Relators' option gap> R := [ a^25, Comm(Comm(b, a), a), b^5 ]; [ a^25, a^-1*b^-1*a*b*a^-1*b^-1*a^-1*b*a^2, b^5 ] gap> H := F / R;  gap> PqPCover( H : Prime := 5, ClassBound := 5, Metabelian );  gap>  gap> # Now we redo the previous example using the `Relators' option gap> F := FreeGroup("a", "b");; gap> rels := [ "a^25", "[b, a, a]", "b^5" ]; [ "a^25", "[b, a, a]", "b^5" ] gap> PqPCover( F : Prime := 5, ClassBound := 5, Metabelian,  >  Relators := rels );   4.2 Computing Standard Presentations 4.2-1 PqStandardPresentation PqStandardPresentation( F: options )  function StandardPresentation( F: options )  method return the p-quotient specified by options of the fp or pc p-group F, as an fp group which has a standard presentation. Here options is a selection of the options from the following list (see Chapter 'ANUPQ Options' for detailed descriptions). Section 'Hints and Warnings regarding the use of Options' gives some important hints and warnings regarding option usage, and Section Reference: Function Call With Options in the GAP Reference Manual describes their record-like syntax.  Prime := p  pQuotient := Q  ClassBound := n  Exponent := n  Metabelian  GroupName := name  OutputLevel := n  StandardPresentationFile := filename  SetupFile := filename  PqWorkspace := workspace Unless F is a pc p-group, the user must supply either the option Prime or the option pQuotient (if both Prime and pQuotient are supplied, the prime p is determined by applying PrimePGroup (see PrimePGroup (Reference: PrimePGroup) in the Reference Manual) to the value of pQuotient). The options for PqStandardPresentation may also be passed in the two other alternative ways described for Pq (see Pq (4.1-1)). StandardPresentation does not provide these alternative ways of passing options. Notes: In contrast to the function Pq (see Pq (4.1-1)) which returns a pc group, PqStandardPresentation or StandardPresentation returns an fp group. This is because the output is mainly used for isomorphism testing for which an fp group is enough. However, the presentation is a polycyclic presentation and if you need to do any further computation with this group (e.g. to find the order) you can use the function PcGroupFpGroup (see PcGroupFpGroup (Reference: PcGroupFpGroup) in the GAP Reference Manual) to form a pc group. If the user does not supply a p-quotient Q via the pQuotient option and the prime p is either supplied or F is a pc p-group, then a p-quotient Q is computed. If the user does supply a p-quotient Q via the pQuotient option, the package AutPGrp is called to compute the automorphism group of Q; an error will occur that asks the user to install the package AutPGrp if the automorphism group cannot be computed. The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for the group returned by PqStandardPresentation or StandardPresentation (see Section 'Attributes and a Property for fp and pc p-groups'). We illustrate the method with the following examples.  Example  gap> F := FreeGroup( "a", "b" );; a := F.1;; b := F.2;; gap> G := F / [a^25, Comm(Comm(b, a), a), b^5];  gap> S := StandardPresentation( G : Prime := 5, ClassBound := 10 );  gap> IsPcGroup( S ); false gap> # if we need to compute with S we should convert it to a pc group gap> Spc := PcGroupFpGroup( S );  gap>  gap> H := F / [ a^625, Comm(Comm(Comm(Comm(b, a), a), a), a)/Comm(b, a)^5, >  Comm(Comm(b, a), b), b^625 ];; gap> StandardPresentation( H : Prime := 5, ClassBound := 15, Metabelian );  gap>  gap> F4 := FreeGroup( "a", "b", "c", "d" );; gap> a := F4.1;; b := F4.2;; c := F4.3;; d := F4.4;; gap> G4 := F4 / [ b^4, b^2 / Comm(Comm (b, a), a), d^16, >  a^16 / (c * d), b^8 / (d * c^4) ];  gap> K := Pq( G4 : Prime := 2, ClassBound := 1 );  gap> StandardPresentation( G4 : pQuotient := K, ClassBound := 14 );   Typing: PqExample( "StandardPresentation" ); runs the above example in GAP (see PqExample (3.4-4)). 4.2-2 EpimorphismPqStandardPresentation EpimorphismPqStandardPresentation( F: options )  function EpimorphismStandardPresentation( F: options )  method Each of the above functions accepts the same arguments and options as the function StandardPresentation (see StandardPresentation (4.2-1)) and returns an epimorphism from the fp or pc group F onto the finitely presented group given by a standard presentation, i.e. if S is the standard presentation computed for the p-quotient of F by StandardPresentation then EpimorphismStandardPresentation returns the epimorphism from F to the group with presentation S. Note: The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for the image group of the epimorphism returned by EpimorphismPqStandardPresentation or EpimorphismStandardPresentation (see Section 'Attributes and a Property for fp and pc p-groups'). We illustrate the function with the following example.  Example  gap> F := FreeGroup(6, "F");  gap> # For printing GAP uses the symbols F1, ... for the generators of F gap> x := F.1;; y := F.2;; z := F.3;; w := F.4;; a := F.5;; b := F.6;; gap> R := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b, >  Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ];; gap> Q := F / R;  gap> # For printing GAP also uses the symbols F1, ... for the generators of Q gap> # (the same as used for F) ... but the gen'rs of Q and F are different: gap> GeneratorsOfGroup(F) = GeneratorsOfGroup(Q); false gap> G := Pq( Q : Prime := 3, ClassBound := 3 );  gap> phi := EpimorphismStandardPresentation( Q : Prime := 3, >  ClassBound := 3 ); [ F1, F2, F3, F4, F5, F6 ] -> [ f1*f2^2*f3*f4^2*f5^2, f1*f2*f3*f5, f3^2,   f4*f6^2, f5, f6 ] gap> Source(phi); # This is the group Q (GAP uses F1, ... for gen'r symbols)  gap> Range(phi); # This is the group G (GAP uses f1, ... for gen'r symbols)  gap> AssignGeneratorVariables(G); #I Assigned the global variables [ f1, f2, f3, f4, f5, f6 ] gap> # Just to see that the images of [F1, ..., F6] do generate G gap> Group([ f1*f2^2*f3, f1*f2*f3*f4*f5^2*f6^2, f3^2, f4, f5, f6 ]) = G; true gap> Size( Image(phi) ); 729  Typing: PqExample( "EpimorphismStandardPresentation" ); runs the above example in GAP (see PqExample (3.4-4)). Note that AssignGeneratorVariables (see AssignGeneratorVariables (Reference: AssignGeneratorVariables)) has only been available since GAP 4.3. 4.3 Testing p-Groups for Isomorphism 4.3-1 IsPqIsomorphicPGroup IsPqIsomorphicPGroup( G, H )  function IsIsomorphicPGroup( G, H )  method each return true if G is isomorphic to H, where both G and H must be pc groups of prime power order. These functions compute and compare in GAP the fp groups given by standard presentations for G and H (see StandardPresentation (4.2-1)).  Example  gap> G := Group( (1,2,3,4), (1,3) ); Group([ (1,2,3,4), (1,3) ]) gap> P1 := Image( IsomorphismPcGroup( G ) ); Group([ f1, f2, f3 ]) gap> P2 := SmallGroup( 8, 5 );  gap> IsIsomorphicPGroup( P1, P2 ); false gap> P3 := SmallGroup( 8, 4 );  gap> IsIsomorphicPGroup( P1, P3 ); false gap> P4 := SmallGroup( 8, 3 );  gap> IsIsomorphicPGroup( P1, P4 ); true  Typing: PqExample( "IsIsomorphicPGroup" ); runs the above example in GAP (see PqExample (3.4-4)). 4.4 Computing Descendants of a p-Group 4.4-1 PqDescendants PqDescendants( G: options )  function returns, for the pc group G which must be of prime power order with a confluent pc presentation (see IsConfluent (Reference: IsConfluent for pc groups) in the GAP Reference Manual), a list of descendants (pc groups) of G. Following the colon options a selection of the options listed below should be given, separated by commas like record components (see Section Reference: Function Call With Options in the GAP Reference Manual). See Chapter 'ANUPQ Options' for detailed descriptions of the options. The automorphism group of each descendant D is also computed via a call to the AutomorphismGroupPGroup function of the AutPGrp package.  ClassBound := n  Relators := rels  OrderBound := n  StepSize := n, StepSize := list  RankInitialSegmentSubgroups := n  SpaceEfficient  CapableDescendants  AllDescendants := false  Exponent := n  Metabelian  GroupName := name  SubList := sub  BasicAlgorithm  CustomiseOutput := rec  SetupFile := filename  PqWorkspace := workspace Notes: The function PqDescendants uses the automorphism group of G which it computes via the package AutPGrp. If this package is not installed an error may be raised. If the automorphism group of G is insoluble, the pq program will call GAP together with the AutPGrp package for certain orbit-stabilizer calculations. (So, in any case, one should ensure the AutPGrp package is installed.) The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for each group of the list returned by PqDescendants (see Section 'Attributes and a Property for fp and pc p-groups'). The options options for PqDescendants may be passed in an alternative manner to that already described, namely you can pass PqDescendants a record as an argument, which contains as entries some (or all) of the above mentioned. Those parameters which do not occur in the record are set to their default values. Note that you cannot set both OrderBound and StepSize. In the first example we compute all descendants of the Klein four group which have exponent-2 class at most 5 and order at most 2^6.  Example  gap> F := FreeGroup( "a", "b" );; a := F.1;; b := F.2;; gap> G := PcGroupFpGroup( F / [ a^2, b^2, Comm(b, a) ] );  gap> des := PqDescendants( G : OrderBound := 6, ClassBound := 5 );; gap> Length(des); 83 gap> List(des, Size);  [ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32,   32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32,   64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64,   64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,   64, 64, 64, 64, 64, 64, 64 ] gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 ); [ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,   3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,   4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,   4, 4, 4, 5, 5, 5, 5, 5 ]  Below, we compute all capable descendants of order 27 of the elementary abelian group of order 9.  Example  gap> F := FreeGroup( 2, "g" );  gap> G := PcGroupFpGroup( F / [ F.1^3, F.2^3, Comm(F.1, F.2) ] );  gap> des := PqDescendants( G : OrderBound := 3, ClassBound := 2, >  CapableDescendants ); [ ,   ] gap> List(des, d -> Length( PCentralSeries( d, 3 ) ) - 1 ); [ 2, 2 ] gap> # For comparison let us now compute all descendants gap> PqDescendants( G : OrderBound := 3, ClassBound := 2); [ ,   ,   ]  In the third example, we compute all capable descendants of the elementary abelian group of order 5^2 which have exponent-5 class at most 3, exponent 5, and are metabelian.  Example  gap> F := FreeGroup( 2, "g" );; gap> G := PcGroupFpGroup( F / [ F.1^5, F.2^5, Comm(F.2, F.1) ] );  gap> des := PqDescendants( G : Metabelian, ClassBound := 3, >  Exponent := 5, CapableDescendants ); [ ,   ,   ] gap> List(des, d -> Length( PCentralSeries( d, 5 ) ) - 1 ); [ 2, 3, 3 ] gap> List(des, d -> Length( DerivedSeries( d ) ) ); [ 3, 3, 3 ] gap> List(des, d -> Maximum( List( d, Order ) ) ); [ 5, 5, 5 ]  The examples "PqDescendants-1", "PqDescendants-2" and "PqDescendants-3" (in order) are essentially the same as the above three examples (see PqExample (3.4-4)). 4.4-2 PqSupplementInnerAutomorphisms PqSupplementInnerAutomorphisms( D )  function returns a generating set for a supplement to the inner automorphisms of D, in the form of a record with fields agAutos, agOrder and glAutos, as provided by the pq program. One should be very careful in using these automorphisms for a descendant calculation. Note: In principle there must be a way to use those automorphisms in order to compute descendants but there does not seem to be a way to hand back these automorphisms properly to the pq program.  Example  gap> Q := Pq( FreeGroup(2) : Prime := 3, ClassBound := 1 );  gap> des := PqDescendants( Q : StepSize := 1 ); [ ,   ,   ] gap> S := PqSupplementInnerAutomorphisms( des[3] ); rec( agAutos := [ ], agOrder := [ 3, 2, 2, 2 ],   glAutos := [ Pcgs([ f1, f2, f3 ]) -> [ f1*f2^2, f2, f3 ],   Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ],   Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ] ] ) gap> A := AutomorphismGroupPGroup( des[3] ); rec(   agAutos := [ Pcgs([ f1, f2, f3 ]) -> [ f1^2, f2, f3^2 ],   Pcgs([ f1, f2, f3 ]) -> [ f1*f2^2, f2, f3 ],   Pcgs([ f1, f2, f3 ]) -> [ f1*f3, f2, f3 ],   Pcgs([ f1, f2, f3 ]) -> [ f1, f2*f3, f3 ] ], agOrder := [ 2, 3, 3, 3 ],   glAutos := [ ], glOper := [ ], glOrder := 1,   group := ,   one := IdentityMapping( ),   size := 54 )  Typing: PqExample( "PqSupplementInnerAutomorphisms" ); runs the above example in GAP (see PqExample (3.4-4)). Note that by also including PqStart as a second argument to PqExample one can see how it is possible, with the aid of PqSetPQuotientToGroup (see PqSetPQuotientToGroup (5.3-7)), to do the equivalent computations with the interactive versions of Pq and PqDescendants and a single pq process (recall pq is the name of the external C program). 4.4-3 PqList PqList( filename: [SubList := sub] )  function reads a file with name filename (a string) and returns the list L of pc groups (or with option SubList a sublist of L or a single pc group in L) defined in that file. If the option SubList is passed and has the value sub, then it has the same meaning as for PqDescendants, i.e. if sub is an integer then PqList returns L[sub]; otherwise, if sub is a list of integers PqList returns Sublist(L, sub ). Both PqList and SavePqList (see SavePqList (4.4-4)) can be used to save and restore a list of descendants (see PqDescendants (4.4-1)). 4.4-4 SavePqList SavePqList( filename, list )  function writes a list of descendants list to a file with name filename (a string). SavePqList and PqList (see PqList (4.4-3)) can be used to save and restore, respectively, the results of PqDescendants (see PqDescendants (4.4-1)). anupq-3.3.0/doc/basics.xml000644 000766 000024 00000043572 14355420571 015704 0ustar00mhornstaff000000 000000 Mathematical Background and Terminology In this chapter we will give a brief description of the mathematical notions used in the algorithms implemented in the ANU pq program that are made accessible from &GAP; through this package. For proofs and details we will point to relevant places in the published literature. Also we will try to give some explanation of terminology that may help to use the low-level interactive functions described in Section . However, users who intend to use these functions are strongly advised to acquire a thorough understanding of the algorithms from the quoted literature. There is little or no checking done in these functions and naive use may result in incorrect results.

Basic notions pc Presentations and Consistency For details, see e.g. .

Every finite p-group G has a presentation of the form: \{a_1,\dots,a_n \mid a_i^p = v_{ii}, 1 \le i \le n, [a_k, a_j] = v_{jk}, 1 \le j < k \le n \}. where v_{jk} is a word in the elements a_{k+1},\dots,a_n for 1 \le j \leq k \le n.

power-commutator presentationpc presentationpcp pc generatorscollection This is called a power-commutator presentation (or pc presentation or pcp) of G, generators from such a presentation will be referred to as pc generators. In terms of such pc generators every element of G can be written in a normal form a_1^{e_1}\dots a_n^{e_n} with 0 \le e_i < p. Moreover any given product of the generators can be brought into such a normal form using the defining relations in the above presentation as rewrite rules. Any such process is called collection. For the discussion of various collection methods see and .

consistentconfluent rewriting systemconfluent Every p-group of order p^n has such a pcp on n generators and conversely every such presentation defines a p-group. However a p-group defined by a pcp on n generators can be of smaller order p^m with m<n. A pcp on n generators that does in fact define a p-group of order p^n is called consistent in this manual, in line with most of the literature on the algorithms occurring here. A consistent pcp determines a confluent rewriting system (see  of the &GAP; Reference Manual) for the group it defines and for this reason often (in particular in the &GAP; Reference Manual) such a pcp presentation is also called confluent.

Consistency of a pcp is tantamount to the fact that for any given word in the generators any two collections will yield the same normal form.

consistency conditions Consistency of a pcp can be checked by a finite set of consistency conditions, demanding that collection of the left hand side and of the right hand side of certain equations, starting with subproducts indicated by bracketing, will result in the same normal form. There are 3 types of such equations (that will be referred to in the manual): \begin{array}{rclrl} (a^n)a &=& a(a^n) &&{\rm (Type 1)} \\ (b^n)a &=& b^{(n-1)}(ba), b(a^n) = (ba)a^{(n-1)} &&{\rm (Type 2)} \\ c(ba) &=& (cb)a &&{\rm (Type 3)} \\ \end{array} See for a description of a sufficient set of consistency conditions in the context of the p-quotient algorithm. Exponent-p Central Series and Weighted pc Presentations For details, see .

exponent-p central series The (descending or lower) (exponent-)p-central series of an arbitrary group G is defined by P_0(G) := G, P_i(G) := [G, P_{i-1}(G)] P_{i-1}(G)^p. For a p-group G this series terminates with the trivial group. G classp-class has p-class c if c is the smallest integer such that P_c(G) is the trivial group. In this manual, as well as in much of the literature about the pq- and related algorithms, the p-class is often referred to simply by class.

Let the p-group G have a consistent pcp as above. Then the subgroups \langle1\rangle < {\langle}a_n\rangle < {\langle}a_n, a_{n-1}\rangle < \dots < {\langle}a_n,\dots,a_i\rangle < \dots < G form a central series of G. If this refines the p-central series, weight function we can define the weight function w for the pc generators by w(a_i) = k, if a_i is contained in P_{k-1}(G) but not in P_k(G).

weighted pcp The pair of such a weight function and a pcp allowing it, is called a weighted pcp. p-Cover, p-Multiplicator For details, see .

p-covering groupp-cover p-multiplicator p-multiplicator rank multiplicator rank Let d be the minimal number of generators of the p-group G of p-class c. Then G is isomorphic to a factor group F/R of a free group F of rank d. We denote [F, R] R^p by R^*. It can be proved (see e.g. ) that the isomorphism type of G^* := F/R^* depends only on G. G^* is called the p-covering group or p-cover of G, and R/R^* the p-multiplicator of G. The p-multiplicator is, of course, an elementary abelian p-group; its minimal number of generators is called the (p-)multiplicator rank. Descendants, Capable, Terminal, Nucleus For details, see and .

descendantimmediate descendantnucleus capableterminal Let again G be a p-group of p-class c and d the minimal number of generators of G. A p-group H is a descendant of G if the minimal number of generators of H is d and H/P_c(H) is isomorphic to G. A descendant H of G is an immediate descendant if it has p-class c+1. G is called capable if it has immediate descendants; otherwise it is terminal.

Let G^* = F/R^* again be the p-cover of G. Then the group P_c(G^*) is called the nucleus of G. Note that P_c(G^*) is contained in the p-multiplicator R/R^*.

nucleusallowable subgroup It is proved (e.g. in ) that the immediate descendants of G are obtained as factor groups of the p-cover by (proper) supplements of the nucleus in the (elementary abelian) p-multiplicator. These are also called allowable.

extended automorphismpermutations It is further proved there that every automorphism \alpha of F/R extends to an automorphism \alpha^* of the p-cover F/R^* and that the restriction of \alpha^* to the multiplicator R/R^* is uniquely determined by \alpha. Each extended automorphism \alpha^* induces a permutation of the allowable subgroups. Thus the extended automorphisms determine a group P of permutations on the set A of allowable subgroups (The group P of permutations will appear in the description of some interactive functions). Choosing a representative S from each orbit of P on A, the set of factor groups F/S contains each (isomorphism type of) immediate descendant of G exactly once. For each immediate descendant, the procedure of computing the p-cover, extending the automorphisms and computing the orbits on allowable subgroups can be repeated. Iteration of this procedure can in principle be used to determine all descendants of a p-group. Laws lawidentical relationexponent law metabelian lawEngel identity Let l(x_1, \dots, x_n) be a word in the free generators x_1, \dots, x_n of a free group of rank n. Then l(x_1, \dots, x_n) = 1 is called a law or identical relation in a group G if l(g_1, \dots, g_n) = 1 for any choice of elements g_1, \dots, g_n in G. In particular, x^e = 1 is called an exponent law, [[x,y],[u,v]] = 1 the metabelian law, and [\dots [[x_1,x_2],x_2],\dots, x_2] = 1 an Engel identity.

The p-quotient Algorithm For details, see , and . Other descriptions of the algorithm are given in .

The pq algorithm successively determines the factor groups of the groups of the p-central series of a finitely presented (fp) group G. If a bound b for the p-class is given, the algorithm will determine those factor groups up to at most p-class b. If the p-central series terminates with a subgroup P_k(G) with k < b, the algorithm will stop with that group. If no such bound is given, it will try to find the biggest such factor group.

G/P_1(G) is the largest elementary abelian p-factor group of G and this can be found from the relation matrix of G using matrix diagonalisation modulo p. So it suffices to explain how G/P_{i+1}(G) is found from G and G/P_i(G) for some i \ge 1.

This is done, in principle, in two steps: first the p-cover of G_i := G/P_i(G) is determined (which depends only on G_i, not on G) and then G/P_{i+1}(G) as a factor group of this p-cover. Finding the p-cover A very detailed description of the first step is given in , from which we just extract some passages in order to point to some terms occurring in this manual.

labelled pcpdefinitionof generator Let H be a p-group and p^{d(b)} be the order of H/P_b(H). So d := d(1) is the minimal number of generators of H. A weighted pcp of H will be called labelled if for each generator a_k, k > d one relation, having this generator as its right hand side, is marked as definition of this generator.

As described in , a weighted labelled pcp of a p-group can be obtained stepping down its p-central series.

So let us assume that a weighted labelled pcp of G_i is given. A straightforward way of of writing down a (not necessarily consistent) pcp for its p-cover is to add generators, one for each relation which is not a definition, and modify the right hand side of each such relation by multiplying it on the right by one of the new generators -- a different generator for each such relation. Further relations are then added to make the new generators central and of order p. This procedure is called adding tails. A more formal description of it is again given in .

tails It is important to realise that the new generators will generate an elementary abelian group, that is, in additive notation, a vector space over the field of p elements. As said, the pcp of the p-cover obtained in this way need not be consistent. Since the pcp of G_i was consistent, applying the consistency conditions to the pcp of the p-cover, in case the presentation obtained for p-cover is not consistent, will produce a set of equations between the new generators, that, written additively, are linear equations over the field of p elements and can hence be used to remove redundant generators until a consistent pcp is obtained.

In reality, to follow this straightforward procedure would be forbiddingly inefficient except for very small examples. There are many ways of a priori reducing the number of new generators to be introduced, using e.g. the weights attached to the generators, and the main part of is devoted to a detailed discussion with proofs of these possibilities. Imposing the Relations of the fp Group In order to obtain G/P_{i+1}(G) from the pcp of the p-cover of G_i = G/P_i(G), the defining relations from the original presentation of G must be imposed. Since G_i is a homomorphic image of G, these relations again yield relations between the new generators in the presentation of the p-cover of G_i. Imposing Laws While we have so far only considered the computation of the factor groups of a given fp group by the groups of its descending p-central series, the p-quotient algorithm allows a very important variant of this idea: laws can be prescribed that should be fulfilled by the p-factor groups computed by the algorithm. The key observation here is the fact that at each step down the descending p-central series it suffices to impose these laws only for a finite number of words. Again for efficiency of the method it is crucial to keep the number of such words small, and much of and the literature quoted in this paper is devoted to this problem.

exponent check In this form, starting with a free group and imposing an exponent law (also referred to as an exponent check) the pq program has, in fact, found its most noted application in the determination of (restricted) Burnside groups (as reported in e.g. , and ).

Via a &GAP; program using the local interactive functions of the pq program made available through this interface also arbitrary laws can be imposed via the option Identities (see ).

The p-group generation Algorithm, Standard Presentation, Isomorphism Testing For details, see and .

p-group generationorbits The p-group generation algorithm determines the immediate descendants of a given p-group G up to isomorphism. From what has been explained in Section , it is clear that this amounts to the construction of the p-cover, the extension of the automorphisms of G to the p-cover and the determination of representatives of the orbits of the action of these automorphisms on the set of supplements of the nucleus in the p-multiplicator.

The main practical problem here is the determination of these representatives. describes methods for this and the pq program allows choices according to whether space or time limitations must be met.

As well as the descendants of G, the pq program determines their automorphism groups from that of G (see ), which is important for an iteration of the process; this has been used by Eamonn O'Brien, e.g. in the classification of the 2-groups that are now also part of the Small Groups library available through &GAP;.

standard presentationechelonised matrix label of standard matrix A variant of the p-group generation algorithm is also used to define a standard presentation of a given p-group. This is done by constructing an isomorphic copy of the given group through a chain of descendants and at each step making a choice of a particular representative for the respective orbit of capable groups. In a fairly delicate process, subgroups of the p-multiplicator are represented by echelonised matrices and a first among the labels for standard matrices is chosen (this is described in detail in ).

isomorphism testingcompaction Finally, the standard presentation provides a way of testing if two given p-groups are isomorphic: the standard presentations of the groups are computed, for practical purposes compacted and the results compared for being identical, i.e. the groups are isomorphic if and only if their standard presentations are identical.

anupq-3.3.0/doc/chap5.txt000644 000766 000024 00000340667 14355420737 015470 0ustar00mhornstaff000000 000000 5 Interactive ANUPQ functions Here we describe the interactive functions defined by the ANUPQ package, i.e. the functions that manipulate and initiate interactive ANUPQ processes. These are functions that extract information via a dialogue with a running pq process (process used in the UNIX sense). Occasionally, a user needs the next step; the functions provided in this chapter make use of data from previous steps retained by the pq program, thus allowing the user to interact with the pq program like one can when one uses the pq program as a stand-alone (see guide.dvi in the standalone-doc directory). An interactive ANUPQ process is initiated by PqStart and terminated via PqQuit; these functions are described in ection 'Starting and Stopping Interactive ANUPQ Processes'. Each interactive ANUPQ function that manipulates an already started interactive ANUPQ process, has a form where the first argument is the integer i returned by the initiating PqStart command, and a second form with one argument fewer (where the integer i is discovered by a default mechanism, namely by determining the least integer i for which there is a currently active interactive ANUPQ process). We will thus commonly say that for the ith (or default) interactive ANUPQ process a certain function performs a given action. In each case, it is an error if i is not the index of an active interactive process, or there are no current active interactive processes. Notes: The global method of passing options (via PushOptions), should not be used with any of the interactive functions. In fact, the OptionsStack should be empty at the time any of the interactive functions is called. On quitting GAP, PqQuitAll(); is executed, which terminates all active interactive ANUPQ processes. If GAP is killed without quitting, before all interactive ANUPQ processes are terminated, zombie processes (still living child processes whose parents have died), may result. Since zombie processes do consume resources, in such an event, the responsible computer user should seek out and terminate those zombie processes (e.g. on Linux: ps xw | grep pq gives you information on the pq processes corresponding to any interactive ANUPQ processes started in a GAP session; you can then do kill N for each number N appearing in the first column of this output). 5.1 Starting and Stopping Interactive ANUPQ Processes 5.1-1 PqStart PqStart( G, workspace: options )  function PqStart( G: options )  function PqStart( workspace: options )  function PqStart( : options )  function activate an iostream for an interactive ANUPQ process (i.e. PqStart starts up a pq process and opens a GAP iostream to talk to that process) and returns an integer i that can be used to identify that process. The argument G should be an fp group or pc group that the user intends to manipulate using interactive ANUPQ functions. If the function is called without specifying G, a group can be read in by using the function PqRestorePcPresentation (see PqRestorePcPresentation (5.6-3)). If PqStart is given an integer argument workspace, then the pq program is started up with a workspace (an integer array) of size workspace (i.e. 4 × workspace bytes in a 32-bit environment); otherwise, the pq program sets a default workspace of 10000000. The only options currently recognised by PqStart are Prime, Exponent and Relators (see Chapter 'ANUPQ Options' for detailed descriptions of these options) and if provided they are essentially global for the interactive ANUPQ process, except that any interactive function interacting with the process and passing new values for these options will over-ride the global values. 5.1-2 PqQuit PqQuit( i )  function PqQuit( )  function closes the stream of the ith or default interactive ANUPQ process and unbinds its ANUPQData.io record. Note: It can happen that the pq process, and hence the GAP iostream assigned to communicate with it, can die, e.g. by the user typing a Ctrl-C while the pq process is engaged in a long calculation. IsPqProcessAlive (see IsPqProcessAlive (5.2-3)) is provided to check the status of the GAP iostream (and hence the status of the pq process it was communicating with). 5.1-3 PqQuitAll PqQuitAll( )  function is provided as a convenience, to terminate all active interactive ANUPQ processes with a single command. It is equivalent to executing PqQuit(i) for all active interactive ANUPQ processes i (see PqQuit (5.1-2)). 5.2 Interactive ANUPQ Process Utility Functions 5.2-1 PqProcessIndex PqProcessIndex( i )  function PqProcessIndex( )  function With argument i, which must be a positive integer, PqProcessIndex returns i if it corresponds to an active interactive process, or raises an error. With no arguments it returns the default active interactive process or returns fail and emits a warning message to Info at InfoANUPQ or InfoWarning level 1. Note: Essentially, an interactive ANUPQ process i is active if ANUPQData.io[i] is bound (i.e. we still have some data telling us about it). Also see PqStart (5.1-1). 5.2-2 PqProcessIndices PqProcessIndices( )  function returns the list of integer indices of all active interactive ANUPQ processes (see PqProcessIndex (5.2-1) for the meaning of active). 5.2-3 IsPqProcessAlive IsPqProcessAlive( i )  function IsPqProcessAlive( )  function return true if the GAP iostream of the ith (or default) interactive ANUPQ process started by PqStart is alive (i.e. can still be written to), or false, otherwise. (See the notes for PqStart (5.1-1) and PqQuit (5.1-2).) If the user does not yet have a gap> prompt then usually the pq program is still away doing something and an ANUPQ interface function is still waiting for a reply. Typing a Ctrl-C (i.e. holding down the Ctrl key and typing c) will stop the waiting and send GAP into a break-loop, from which one has no option but to quit;. The typing of Ctrl-C, in such a circumstance, usually causes the stream of the interactive ANUPQ process to die; to check this we provide IsPqProcessAlive (see IsPqProcessAlive). The GAP iostream of an interactive ANUPQ process will also die if the pq program has a segmentation fault. We do hope that this never happens to you, but if it does and the failure is reproducible, then it's a bug and we'd like to know about it. Please read the README that comes with the ANUPQ package to find out what to include in a bug report and who to email it to. 5.3 Interactive Versions of Non-interactive ANUPQ Functions 5.3-1 Pq Pq( i: options )  function Pq( : options )  function return, for the fp or pc group (let us call it F), of the ith or default interactive ANUPQ process, the p-quotient of F specified by options, as a pc group; F must previously have been given (as first argument) to PqStart to start the interactive ANUPQ process (see PqStart (5.1-1)) or restored from file using the function PqRestorePcPresentation (see PqRestorePcPresentation (5.6-3)). Following the colon options is a selection of the options listed for the non-interactive Pq function (see Pq (4.1-1)), separated by commas like record components (see Section Reference: Function Call With Options in the GAP Reference Manual), except that the options SetupFile or PqWorkspace are ignored by the interactive Pq, and RedoPcp is an option only recognised by the interactive Pq i.e. the following options are recognised by the interactive Pq function:  Prime := p  ClassBound := n  Exponent := n  Relators := rels  Metabelian  Identities := funcs  GroupName := name  OutputLevel := n  RedoPcp Detailed descriptions of the above options may be found in Chapter 'ANUPQ Options'. As a minimum the Pq function must have a value for the Prime option, though Prime need not be passed again in the case it has previously been provided, e.g. to PqStart (see PqStart (5.1-1)) when starting the interactive process. The behaviour of the interactive Pq function depends on the current state of the pc presentation stored by the pq program: 1 If no pc presentation has yet been computed (the case immediately after the PqStart call initiating the process) then the quotient group of the input group of the process of largest lower exponent-p class bounded by the value of the ClassBound option (see 6.2) is returned. 2 If the current pc presentation of the process was determined by a previous call to Pq or PqEpimorphism, and the current call has a larger value ClassBound then the class is extended as much as is possible and the quotient group of the input group of the process of the new lower exponent-p class is returned. 3 If the current pc presentation of the process was determined by a previous call to PqPCover then a consistent pc presentation of a quotient for the current class is determined before proceeding as in 2. 4 If the RedoPcp option is supplied the current pc presentation is scrapped, all options must be re-supplied (in particular, Prime must be supplied) and then the Pq function proceeds as in 1. See Section 'Attributes and a Property for fp and pc p-groups' for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the group returned by Pq. The following is one of the examples for the non-interactive Pq redone with the interactive version. Also, we set the option OutputLevel to 1 (see 6.2), in order to see the orders of the quotients of all the classes determined, and we set the InfoANUPQ level to 2 (see InfoANUPQ (3.3-1)), so that we catch the timing information.  Example  gap> F := FreeGroup("a", "b");; a := F.1;; b := F.2;; gap> G := F / [a^4, b^4];  gap> PqStart(G); 1 gap> SetInfoLevel(InfoANUPQ, 2); #To see timing information gap> Pq(: Prime := 2, ClassBound := 3, OutputLevel := 1 ); #I Lower exponent-2 central series for [grp] #I Group: [grp] to lower exponent-2 central class 1 has order 2^2 #I Group: [grp] to lower exponent-2 central class 2 has order 2^5 #I Group: [grp] to lower exponent-2 central class 3 has order 2^8 #I Computation of presentation took 0.00 seconds   5.3-2 PqEpimorphism PqEpimorphism( i: options )  function PqEpimorphism( : options )  function return, for the fp or pc group (let us call it F), of the ith or default interactive ANUPQ process, an epimorphism from F onto the p-quotient of F specified by options; F must previously have been given (as first argument) to PqStart to start the interactive ANUPQ process (see PqStart (5.1-1)). Since the underlying interactions with the pq program effected by the interactive PqEpimorphism are identical to those effected by the interactive Pq, everything said regarding the requirements and behaviour of the interactive Pq function (see Pq (5.3-1)) is also the case for the interactive PqEpimorphism. Note: See Section 'Attributes and a Property for fp and pc p-groups' for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the image group of the epimorphism returned by PqEpimorphism. 5.3-3 PqPCover PqPCover( i: options )  function PqPCover( : options )  function return, for the fp or pc group of the ith or default interactive ANUPQ process, the p-covering group of the p-quotient Pq(i : options) or Pq(: options), modulo the following: 1 If no pc presentation has yet been computed (the case immediately after the PqStart call initiating the process) and the group F of the process is already a p-group, in the sense that HasIsPGroup(F) and IsPGroup(F) is true, then Prime defaults to PrimePGroup(F), if not supplied and HasPrimePGroup(F) = true; and ClassBound defaults to PClassPGroup(F) if HasPClassPGroup(F) = true if not supplied, or to the usual default of 63, otherwise. 2 If a pc presentation has been computed and none of options is RedoPcp or if no pc presentation has yet been computed but 1. does not apply then PqPCover(i : options); is equivalent to:   Pq(i : options); PqPCover(i);  3 If the RedoPcp option is supplied the current pc presentation is scrapped, and PqPCover proceeds as in 1. or 2. but without the RedoPcp option. 5.3-4 PqStandardPresentation PqStandardPresentation( [i]: options )  function StandardPresentation( [i]: options )  function return, for the ith or default interactive ANUPQ process, the p-quotient of the group F of the process, specified by options, as an fp group which has a standard presentation. Here options is a selection of the options from the following list (see Chapter 'ANUPQ Options' for detailed descriptions); this list is the same as for the non-interactive version of PqStandardPresentation except for the omission of options SetupFile and PqWorkspace (see PqStandardPresentation (4.2-1)).  Prime := p  pQuotient := Q  ClassBound := n  Exponent := n  Metabelian  GroupName := name  OutputLevel := n  StandardPresentationFile := filename Unless F is a pc p-group, or the option Prime has been passed to a previous interactive function for the process to compute a p-quotient for F, the user must supply either the option Prime or the option pQuotient (if both Prime and pQuotient are supplied, the prime p is determined by applying PrimePGroup (see PrimePGroup (Reference: PrimePGroup) in the Reference Manual) to the value of pQuotient). Taking one of the examples for the non-interactive version of StandardPresentation (see StandardPresentation (4.2-1)) that required two separate calls to the pq program, we now show how it can be done by setting up a dialogue with just the one pq process, using the interactive version of StandardPresentation:  Example  gap> F4 := FreeGroup( "a", "b", "c", "d" );; gap> a := F4.1;; b := F4.2;; c := F4.3;; d := F4.4;; gap> G4 := F4 / [ b^4, b^2 / Comm(Comm (b, a), a), d^16, >  a^16 / (c * d), b^8 / (d * c^4) ];  gap> SetInfoLevel(InfoANUPQ, 1); #Only essential Info please gap> PqStart(G4); #Start a new interactive process for a new group 2 gap> K := Pq( 2 : Prime := 2, ClassBound := 1 ); #`pq' process no. is 2  gap> StandardPresentation( 2 : pQuotient := K, ClassBound := 14 );   Notes In contrast to the function Pq (see Pq (4.1-1)) which returns a pc group, PqStandardPresentation or StandardPresentation returns an fp group. This is because the output is mainly used for isomorphism testing for which an fp group is enough. However, the presentation is a polycyclic presentation and if you need to do any further computation with this group (e.g. to find the order) you can use the function PcGroupFpGroup (see PcGroupFpGroup (Reference: PcGroupFpGroup) in the GAP Reference Manual) to form a pc group. If the user does not supply a p-quotient Q via the pQuotient option, and the prime p is either supplied, stored, or F is a pc p-group, then a p-quotient Q is computed. (The value of the prime p is stored if passed initially to PqStart or to a subsequent interactive process.) Note that a stored value for pQuotient (from a prior call to Pq) does not have precedence over a value for the prime p. If the user does supply a p-quotient Q via the pQuotient option, the package AutPGrp is called to compute the automorphism group of Q; an error will occur that asks the user to install the package AutPGrp if the automorphism group cannot be computed. If any of the interactive functions PqStandardPresentation, StandardPresentation, EpimorphismPqStandardPresentation or EpimorphismStandardPresentation has been called previously for an interactive process, a subsequent call to any of these functions for the same process returns the previously computed value. Note that all these functions compute both an epimorphism and an fp group and store the results in the SPepi and SP fields of the data record associated with the process. See the example for the interactive EpimorphismStandardPresentation (EpimorphismStandardPresentation (5.3-5)). The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for the group returned by PqStandardPresentation or StandardPresentation (see Section 'Attributes and a Property for fp and pc p-groups'). 5.3-5 EpimorphismPqStandardPresentation EpimorphismPqStandardPresentation( [i]: options )  function EpimorphismStandardPresentation( [i]: options )  method Each of the above functions accepts the same arguments and options as the interactive form of StandardPresentation (see StandardPresentation (5.3-4)) and returns an epimorphism from the fp or pc group F of the ith or default interactive ANUPQ process onto the finitely presented group given by a standard presentation, i.e. if S is the standard presentation computed for the p-quotient of F by StandardPresentation then EpimorphismStandardPresentation returns the epimorphism from F to the group with presentation S. The group F must have been given (as first argument) to PqStart to start the interactive ANUPQ process (see PqStart (5.1-1)). Taking our earlier non-interactive example (see EpimorphismPqStandardPresentation (4.2-2)) and modifying it a little, we illustrate, as for the interactive StandardPresentation (see StandardPresentation (5.3-4)), how something that required two separate calls to the pq program can now be achieved with a dialogue with just one pq process. Also, observe that calls to one of the standard presentation functions (as mentioned in the notes of StandardPresentation (5.3-4)) computes and stores both an fp group with a standard presentation and an epimorphism; subsequent calls to a standard presentation function for the same process simply return the appropriate stored value.  Example  gap> F := FreeGroup(6, "F");; gap> x := F.1;; y := F.2;; z := F.3;; w := F.4;; a := F.5;; b := F.6;; gap> R := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b, >  Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ]; [ F1^3*F4^-1, F2^3*F4^-1*F5^2*F6^2, F4^3*F6^-1, F2^-1*F1^-1*F2*F1*F3^-1,   F3^-1*F1^-1*F3*F1, F3^-1*F2^-1*F3*F2*F5^-1, F3^3 ] gap> Q := F / R;  gap> PqStart( Q ); 3 gap> G := Pq( 3 : Prime := 3, ClassBound := 3 );  gap> lev := InfoLevel(InfoANUPQ);; # Save current InfoANUPQ level gap> SetInfoLevel(InfoANUPQ, 2); # To see computation times gap> # It is not necessary to pass the `Prime' option to gap> # `EpimorphismStandardPresentation' since it was previously gap> # passed to `Pq': gap> phi := EpimorphismStandardPresentation( 3 : ClassBound := 3 ); #I Class 1 3-quotient and its 3-covering group computed in 0.00 seconds #I Order of GL subgroup is 48 #I No. of soluble autos is 0 #I dim U = 1 dim N = 3 dim M = 3 #I nice stabilizer with perm rep #I Computing standard presentation for class 2 took 0.00 seconds #I Computing standard presentation for class 3 took 0.01 seconds [ F1, F2, F3, F4, F5, F6 ] -> [ f1*f2^2*f3*f4^2*f5^2, f1*f2*f3*f5, f3^2,   f4*f6^2, f5, f6 ] gap> # Image of phi should be isomorphic to G ... gap> # let's check the order is correct: gap> Size( Image(phi) ); 729 gap> # `StandardPresentation' and `EpimorphismStandardPresentation' gap> # behave like attributes, so no computation is done when gap> # either is called again for the same process ... gap> StandardPresentation( 3 : ClassBound := 3 );  gap> # No timing data was Info-ed since no computation was done gap> SetInfoLevel(InfoANUPQ, lev); # Restore previous InfoANUPQ level  A very similar (essential details are the same) example to the above may be executed live, by typing: PqExample( "EpimorphismStandardPresentation-i" );. Note: The notes for PqStandardPresentation or StandardPresentation (see PqStandardPresentation (5.3-4)) apply also to EpimorphismPqStandardPresentation or EpimorphismStandardPresentation except that their return value is an epimorphism onto an fp group, i.e. one should interpret the phrase returns an fp group as returns an epimorphism onto an fp group etc. 5.3-6 PqDescendants PqDescendants( i: options )  function PqDescendants( : options )  function return for the pc group G of the ith or default interactive ANUPQ process, which must be of prime power order with a confluent pc presentation (see IsConfluent (Reference: IsConfluent for pc groups) in the GAP Reference Manual), a list of descendants (pc groups) of G. The group G is usually given as first argument to PqStart when starting the interactive ANUPQ process (see PqStart (5.1-1)). Alternatively, one may initiate the process with an fp group, use Pq interactively (see Pq (5.3-1)) to create a pc group and use PqSetPQuotientToGroup (see PqSetPQuotientToGroup (5.3-7)), which involves no computation, to set the pc group returned by Pq as the group of the process. Note that repeating a call to PqDescendants for the same interactive ANUPQ process simply returns the list of descendants originally calculated; a warning is emitted at InfoANUPQ level 1 reminding you of this should you do this. After the colon, options a selection of the options listed for the non-interactive PqDescendants function (see PqDescendants (4.4-1)), should be given, separated by commas like record components (see Section Reference: Function Call With Options in the GAP Reference Manual), except that the options SetupFile or PqWorkspace are ignored by the interactive PqDescendants, i.e. the following options are recognised by the interactive PqDescendants function:  ClassBound := n  Relators := rels  OrderBound := n  StepSize := n, StepSize := list  RankInitialSegmentSubgroups := n  SpaceEfficient  CapableDescendants  AllDescendants := false  Exponent := n  Metabelian  GroupName := name  SubList := sub  BasicAlgorithm  CustomiseOutput := rec Notes: The function PqDescendants uses the automorphism group of G which it computes via the package AutPGrp if the automorphism group of G is not already present. If AutPGrp is not installed an error may be raised. If the automorphism group of G is insoluble the pq program will call GAP together with the AutPGrp package for certain orbit-stabilizer calculations. The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for each group of the list returned by PqDescendants (see Section 'Attributes and a Property for fp and pc p-groups'). Let us now repeat the examples previously given for the non-interactive PqDescendants, but this time with the interactive version of PqDescendants:  Example  gap> F := FreeGroup( "a", "b" );; a := F.1;; b := F.2;; gap> G := PcGroupFpGroup( F / [ a^2, b^2, Comm(b, a) ] );  gap> PqStart(G); #This will now be the 4th interactive process running 4 gap> des := PqDescendants( 4 : OrderBound := 6, ClassBound := 5 );; gap> Length(des); 83 gap> List(des, Size); [ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32,   32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32,   64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64,   64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,   64, 64, 64, 64, 64, 64, 64 ] gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 ); [ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,   3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,   4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,   4, 4, 4, 5, 5, 5, 5, 5 ]  In the second example we compute all capable descendants of order 27 of the elementary abelian group of order 9.  Example  gap> F := FreeGroup( 2, "g" );; gap> G := PcGroupFpGroup( F / [ F.1^3, F.2^3, Comm(F.1, F.2) ] );  gap> PqStart(G); #This will now be the 5th interactive process running 5 gap> des := PqDescendants( 5 : OrderBound := 3, ClassBound := 2, >  CapableDescendants ); [ ,   ] gap> List(des, d -> Length( PCentralSeries( d, 3 ) ) - 1 ); [ 2, 2 ] gap> # For comparison let us now compute all descendants gap> # (using the non-interactive Pq function) gap> PqDescendants( G : OrderBound := 3, ClassBound := 2); [ ,   ,   ]  In the third example, we compute all capable descendants of the elementary abelian group of order 5^2 which have exponent-5 class at most 3, exponent 5, and are metabelian.  Example  gap> F := FreeGroup( 2, "g" );; gap> G := PcGroupFpGroup( F / [ F.1^5, F.2^5, Comm(F.2, F.1) ] );  gap> PqStart(G); #This will now be the 6th interactive process running 6 gap> des := PqDescendants( 6 : Metabelian, ClassBound := 3, >  Exponent := 5, CapableDescendants ); [ ,   ,   ] gap> List(des, d -> Length( PCentralSeries( d, 5 ) ) - 1 ); [ 2, 3, 3 ] gap> List(des, d -> Length( DerivedSeries( d ) ) ); [ 3, 3, 3 ] gap> List(des, d -> Maximum( List( d, Order ) ) ); [ 5, 5, 5 ]  5.3-7 PqSetPQuotientToGroup PqSetPQuotientToGroup( i )  function PqSetPQuotientToGroup( )  function for the ith or default interactive ANUPQ process, set the p-quotient previously computed by the interactive Pq function (see Pq (5.3-1)) to be the group of the process. This function is supplied to enable the computation of descendants of a p-quotient that is already known to the pq program, via the interactive PqDescendants function (see PqDescendants (5.3-6)), thus avoiding the need to re-submit it and have the pq program recompute it. Note: See the function PqPGSetDescendantToPcp (PqPGSetDescendantToPcp (5.9-4)) for a mechanism to make (the p-cover of) a particular descendants the current group of the process. The following example of the usage of PqSetPQuotientToGroup, which is essentially equivalent to what is obtained by running PqExample("PqDescendants-1-i");, redoes the first example of PqDescendants (5.3-6) (which computes the descendants of the Klein four group).  Example  gap> F := FreeGroup( "a", "b" );  gap> procId := PqStart( F : Prime := 2 ); 7 gap> Pq( procId : ClassBound := 1 );  gap> PqSetPQuotientToGroup( procId ); gap> des := PqDescendants( procId : OrderBound := 6, ClassBound := 5 );; gap> Length(des); 83 gap> List(des, Size); [ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32,   32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32,   64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64,   64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,   64, 64, 64, 64, 64, 64, 64 ] gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 ); [ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,   3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,   4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,   4, 4, 4, 5, 5, 5, 5, 5 ]  5.4 Low-level Interactive ANUPQ functions based on menu items of the pq program The pq program has 5 menus, the details of which the reader will not normally need to know, but if she wishes to know the details they may be found in the standalone manual: guide.dvi. Both guide.dvi and the pq program refer to the items of these 5 menus as options, which do not correspond in any way to the options used by any of the GAP functions that interface with the pq program. Warning: The commands provided in this section are intended to provide something like the interactive functionality one has when running the standalone, from within GAP. The pq standalone (in particular, its advanced menus) assumes some expertise of the user; doing the wrong thing can cause the program to crash. While a number of safeguards have been provided in the GAP interface to the pq program, these are not foolproof, and the user should exercise care and ensure pre-requisites of the various commands are met. 5.5 General commands The following commands either use a menu item from whatever menu is current for the pq program, or have general application and are not associated with just one menu item of the pq program. 5.5-1 PqNrPcGenerators PqNrPcGenerators( i )  function PqNrPcGenerators( )  function for the ith or default interactive ANUPQ process, return the number of pc generators of the lower exponent p-class quotient of the group currently determined by the process. This also applies if the pc presentation is not consistent. 5.5-2 PqFactoredOrder PqFactoredOrder( i )  function PqFactoredOrder( )  function for the ith or default interactive ANUPQ process, return an integer pair [p, n] where p is a prime and n is the number of pc generators (see PqNrPcGenerators (5.5-1)) in the pc presentation of the quotient group currently determined by the process. If this presentation is consistent, then p^n is the order of the quotient group. Otherwise (if tails have been added but the necessary consistency checks, relation collections, exponent law checks and redundant generator eliminations have not yet been done), p^n is an upper bound for the order of the group. 5.5-3 PqOrder PqOrder( i )  function PqOrder( )  function for the ith or default interactive ANUPQ process, return p^n where [p, n] is the pair as returned by PqFactoredOrder (see PqFactoredOrder (5.5-2)). 5.5-4 PqPClass PqPClass( i )  function PqPClass( )  function for the ith or default interactive ANUPQ process, return the lower exponent p-class of the quotient group currently determined by the process. 5.5-5 PqWeight PqWeight( i, j )  function PqWeight( j )  function for the ith or default interactive ANUPQ process, return the weight of the jth pc generator of the lower exponent p-class quotient of the group currently determined by the process, or fail if there is no such numbered pc generator. 5.5-6 PqCurrentGroup PqCurrentGroup( i )  function PqCurrentGroup( )  function for the ith or default interactive ANUPQ process, return the group whose pc presentation is determined by the process as a GAP pc group (either a lower exponent p-class quotient of the start group or the p-cover of such a quotient). Notes: See Section 'Attributes and a Property for fp and pc p-groups' for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the group returned by PqCurrentGroup. 5.5-7 PqDisplayPcPresentation PqDisplayPcPresentation( i: [OutputLevel := lev] )  function PqDisplayPcPresentation( : [OutputLevel := lev] )  function for the ith or default interactive ANUPQ process, direct the pq program to display the pc presentation of the lower exponent p-class quotient of the group currently determined by the process. Except if the last command communicating with the pq program was a p-group generation command (for which there is only a verbose output level), to set the amount of information this command displays you may wish to call PqSetOutputLevel first (see PqSetOutputLevel (5.5-8)), or equivalently pass the option OutputLevel (see 6.2). Note: For those familiar with the pq program, PqDisplayPcPresentation performs menu item 4 of the current menu of the pq program. 5.5-8 PqSetOutputLevel PqSetOutputLevel( i, lev )  function PqSetOutputLevel( lev )  function for the ith or default interactive ANUPQ process, direct the pq program to set the output level of the pq program to lev. Note: For those familiar with the pq program, PqSetOutputLevel performs menu item 5 of the main (or advanced) p-Quotient menu, or the Standard Presentation menu. 5.5-9 PqEvaluateIdentities PqEvaluateIdentities( i: [Identities := funcs] )  function PqEvaluateIdentities( : [Identities := funcs] )  function for the ith or default interactive ANUPQ process, invoke the evaluation of identities defined by the Identities option, and eliminate any redundant pc generators formed. Since a previous value of Identities is saved in the data record of the process, it is unnecessary to pass the Identities if set previously. Note: This function is mainly implemented at the GAP level. It does not correspond to a menu item of the pq program. 5.6 Commands from the Main p-Quotient menu 5.6-1 PqPcPresentation PqPcPresentation( i: options )  function PqPcPresentation( : options )  function for the ith or default interactive ANUPQ process, direct the pq program to compute the pc presentation of the quotient (determined by options) of the group of the process, which for process i is stored as ANUPQData.io[i].group. The possible options are the same as for the interactive Pq (see Pq (5.3-1)) function, except for RedoPcp (which, in any case, would be superfluous), namely: Prime, ClassBound, Exponent, Relators, GroupName, Metabelian, Identities and OutputLevel (see Chapter 'ANUPQ Options' for a detailed description for these options). The option Prime is required unless already provided to PqStart. Notes The pc presentation is held by the pq program. In contrast to Pq (see Pq (5.3-1)), no GAP pc group is returned; see PqCurrentGroup (PqCurrentGroup (5.5-6)) if you need the corresponding GAP pc group. PqPcPresentation(i: options); is roughly equivalent to the following sequence of low-level commands:  PqPcPresentation(i: opts); #class 1 call for c in [2 .. class] do  PqNextClass(i); od;  where opts is options except with the ClassBound option set to 1, and class is either the maximum class of a p-quotient of the group of the process or the user-supplied value of the option ClassBound (whichever is smaller). If the Identities option has been set, both the first PqPcPresentation class 1 call and the PqNextClass calls invoke PqEvaluateIdentities(i); as their final step. For those familiar with the pq program, PqPcPresentation performs menu item 1 of the main p-Quotient menu. 5.6-2 PqSavePcPresentation PqSavePcPresentation( i, filename )  function PqSavePcPresentation( filename )  function for the ith or default interactive ANUPQ process, direct the pq program to save the pc presentation previously computed for the quotient of the group of that process to the file with name filename. If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which GAP was started. A saved file may be restored by PqRestorePcPresentation (see PqRestorePcPresentation (5.6-3)). Note: For those familiar with the pq program, PqSavePcPresentation performs menu item 2 of the main p-Quotient menu. 5.6-3 PqRestorePcPresentation PqRestorePcPresentation( i, filename )  function PqRestorePcPresentation( filename )  function for the ith or default interactive ANUPQ process, direct the pq program to restore the pc presentation previously saved to filename, by PqSavePcPresentation (see PqSavePcPresentation (5.6-2)). If the first character of the string filename is not /, filename is assumed to be the path of a readable file relative to the directory in which GAP was started. Note: For those familiar with the pq program, PqRestorePcPresentation performs menu item 3 of the main p-Quotient menu. 5.6-4 PqNextClass PqNextClass( i: [QueueFactor] )  function PqNextClass( : [QueueFactor] )  function for the ith or default interactive ANUPQ process, direct the pq program to calculate the next class of ANUPQData.io[i].group. PqNextClass accepts the option QueueFactor (see also 6.2) which should be a positive integer if automorphisms have been previously supplied. If the pq program requires a queue factor and none is supplied via the option QueueFactor a default of 15 is taken. Notes The single command: PqNextClass(i); is equivalent to executing  PqComputePCover(i); PqCollectDefiningRelations(i); PqDoExponentChecks(i); PqEliminateRedundantGenerators(i);  If the Identities option is set the PqEliminateRedundantGenerators(i); step is essentially replaced by PqEvaluateIdentities(i); (which invokes its own elimination of redundant generators). For those familiar with the pq program, PqNextClass performs menu item 6 of the main p-Quotient menu. 5.6-5 PqComputePCover PqComputePCover( i )  function PqComputePCover( )  function for the ith or default interactive ANUPQ processi, directi, the pq program to compute the p-covering group of ANUPQData.io[i].group. In contrast to the function PqPCover (see PqPCover (4.1-3)), this function does not return a GAP pc group. Notes The single command: PqComputePCover(i); is equivalent to executing  PqSetupTablesForNextClass(i); PqTails(i, 0); PqDoConsistencyChecks(i, 0, 0); PqEliminateRedundantGenerators(i);  For those familiar with the pq program, PqComputePCover performs menu item 7 of the main p-Quotient menu. 5.7 Commands from the Advanced p-Quotient menu 5.7-1 PqCollect PqCollect( i, word )  function PqCollect( word )  function for the ith or default interactive ANUPQ process, instruct the pq program to do a collection on word, a word in the current pc generators (the form of word required is described below). PqCollect returns the resulting word of the collection as a list of generator number, exponent pairs (the same form as the second allowed input form of word; see below). The argument word may be input in either of the following ways: 1 word may be a string, where the ith pc generator is represented by xi, e.g. "x3*x2^2*x1". This way is quite versatile as parentheses and left-normed commutators -- using square brackets, in the same way as PqGAPRelators (see PqGAPRelators (3.4-2)) -- are permitted; word is checked for correct syntax via PqParseWord (see PqParseWord (3.4-3)). 2 Otherwise, word must be a list of generator number, exponent pairs of integers, i.e.  each pair represents a syllable so that [ [3, 1], [2, 2], [1, 1] ] represents the same word as that of the example given for the first allowed form of word. Note: For those familiar with the pq program, PqCollect performs menu item 1 of the Advanced p-Quotient menu. 5.7-2 PqSolveEquation PqSolveEquation( i, a, b )  function PqSolveEquation( a, b )  function for the ith or default interactive ANUPQ process, direct the pq program to solve a * x = b for x, where a and b are words in the pc generators. For the representation of these words see the description of the function PqCollect (PqCollect (5.7-1)). Note: For those familiar with the pq program, PqSolveEquation performs menu item 2 of the Advanced p-Quotient menu. 5.7-3 PqCommutator PqCommutator( i, words, pow )  function PqCommutator( words, pow )  function for the ith or default interactive ANUPQ process, instruct the pq program to compute the left normed commutator of the list words of words in the current pc generators raised to the integer power pow, and return the resulting word as a list of generator number, exponent pairs. The form required for each word of words is the same as that required for the word argument of PqCollect (see PqCollect (5.7-1)). The form of the output word is also the same as for PqCollect. Note: For those familiar with the pq program, PqCommutator performs menu item 3 of the Advanced p-Quotient menu. 5.7-4 PqSetupTablesForNextClass PqSetupTablesForNextClass( i )  function PqSetupTablesForNextClass( )  function for the ith or default interactive ANUPQ process, direct the pq program to set up tables for the next class. As as side-effect, after PqSetupTablesForNextClass(i) the value returned by PqPClass(i) will be one more than it was previously. Note: For those familiar with the pq program, PqSetupTablesForNextClass performs menu item 6 of the Advanced p-Quotient menu. 5.7-5 PqTails PqTails( i, weight )  function PqTails( weight )  function for the ith or default interactive ANUPQ process, direct the pq program to compute and add tails of weight weight if weight is in the integer range [2 .. PqPClass(i)] (assuming i is the number of the process, even in the default case) or for all weights if weight = 0. If weight is non-zero, then tails that introduce new generators for only weight weight are computed and added, and in this case and if weight < PqPClass(i), it is assumed that the tails that introduce new generators for each weight from PqPClass(i) down to weight weight + 1 have already been added. You may wish to call PqSetMetabelian (see PqSetMetabelian (5.7-16)) prior to calling PqTails. Notes For its use in the context of finding the next class see PqNextClass (5.6-4); in particular, a call to PqSetupTablesForNextClass (see PqSetupTablesForNextClass (5.7-4)) needs to have been made prior to calling PqTails. The single command: PqTails(i, weight); is equivalent to  PqComputeTails(i, weight); PqAddTails(i, weight);  For those familiar with the pq program, PqTails uses menu item 7 of the Advanced p-Quotient menu. 5.7-6 PqComputeTails PqComputeTails( i, weight )  function PqComputeTails( weight )  function for the ith or default interactive ANUPQ process, direct the pq program to compute tails of weight weight if weight is in the integer range [2 .. PqPClass(i)] (assuming i is the number of the process, even in the default case) or for all weights if weight = 0. See PqTails (PqTails (5.7-5)) for more details. Note: For those familiar with the pq program, PqComputeTails uses menu item 7 of the Advanced p-Quotient menu. 5.7-7 PqAddTails PqAddTails( i, weight )  function PqAddTails( weight )  function for the ith or default interactive ANUPQ process, direct the pq program to add the tails of weight weight, previously computed by PqComputeTails (see PqComputeTails (5.7-6)), if weight is in the integer range [2 .. PqPClass(i)] (assuming i is the number of the process, even in the default case) or for all weights if weight = 0. See PqTails (PqTails (5.7-5)) for more details. Note: For those familiar with the pq program, PqAddTails uses menu item 7 of the Advanced p-Quotient menu. 5.7-8 PqDoConsistencyChecks PqDoConsistencyChecks( i, weight, type )  function PqDoConsistencyChecks( weight, type )  function for the ith or default interactive ANUPQ process, do consistency checks for weight weight if weight is in the integer range [3 .. PqPClass(i)] (assuming i is the number of the process) or for all weights if weight = 0, and for type type if type is in the range [1, 2, 3] (see below) or for all types if type = 0. (For its use in the context of finding the next class see PqNextClass (5.6-4).) The type of a consistency check is defined as follows. PqDoConsistencyChecks(i, weight, type) for weight in [3 .. PqPClass(i)] and the given value of type invokes the equivalent of the following PqDoConsistencyCheck calls (see PqDoConsistencyCheck (5.7-17)): type = 1: PqDoConsistencyCheck(i, a, a, a) checks 2 * PqWeight(i, a) + 1 = weight, for pc generators of index a. type = 2: PqDoConsistencyCheck(i, b, b, a) checks for pc generators of indices b, a satisfyingx both b > a and PqWeight(i, b) + PqWeight(i, a) + 1 = weight. type = 3: PqDoConsistencyCheck(i, c, b, a) checks for pc generators of indices c, b, a satisfying c > b > a and the sum of the weights of these generators equals weight. Notes PqWeight(i, j) returns the weight of the jth pc generator, for process i (see PqWeight (5.5-5)). It is assumed that tails for the given weight (or weights) have already been added (see PqTails (5.7-5)). For those familiar with the pq program, PqDoConsistencyChecks performs menu item 8 of the Advanced p-Quotient menu. 5.7-9 PqCollectDefiningRelations PqCollectDefiningRelations( i )  function PqCollectDefiningRelations( )  function for the ith or default interactive ANUPQ process, direct the pq program to collect the images of the defining relations of the original fp group of the process, with respect to the current pc presentation, in the context of finding the next class (see PqNextClass (5.6-4)). If the tails operation is not complete then the relations may be evaluated incorrectly. Note: For those familiar with the pq program, PqCollectDefiningRelations performs menu item 9 of the Advanced p-Quotient menu. 5.7-10 PqCollectWordInDefiningGenerators PqCollectWordInDefiningGenerators( i, word )  function PqCollectWordInDefiningGenerators( word )  function for the ith or default interactive ANUPQ process, take a user-defined word word in the defining generators of the original presentation of the fp or pc group of the process. Each generator is mapped into the current pc presentation, and the resulting word is collected with respect to the current pc presentation. The result of the collection is returned as a list of generator number, exponent pairs. The word argument may be input in either of the two ways described for PqCollect (see PqCollect (5.7-1)). Note: For those familiar with the pq program, PqCollectDefiningGenerators performs menu item 23 of the Advanced p-Quotient menu. 5.7-11 PqCommutatorDefiningGenerators PqCommutatorDefiningGenerators( i, words, pow )  function PqCommutatorDefiningGenerators( words, pow )  function for the ith or default interactive ANUPQ process, take a list words of user-defined words in the defining generators of the original presentation of the fp or pc group of the process, and an integer power pow. Each generator is mapped into the current pc presentation. The list words is interpreted as a left-normed commutator which is then raised to pow and collected with respect to the current pc presentation. The result of the collection is returned as a list of generator number, exponent pairs. Note For those familiar with the pq program, PqCommutatorDefiningGenerators performs menu item 24 of the Advanced p-Quotient menu. 5.7-12 PqDoExponentChecks PqDoExponentChecks( i: [Bounds := list] )  function PqDoExponentChecks( : [Bounds := list] )  function for the ith or default interactive ANUPQ process, direct the pq program to do exponent checks for weights (inclusively) between the bounds of Bounds or for all weights if Bounds is not given. The value list of Bounds (assuming the interactive process is numbered i) should be a list of two integers low, high satisfying 1 ≤ low ≤ high ≤ PqPClass(i) (see PqPClass (5.5-4)). If no exponent law has been specified, no exponent checks are performed. Note: For those familiar with the pq program, PqDoExponentChecks performs menu item 10 of the Advanced p-Quotient menu. 5.7-13 PqEliminateRedundantGenerators PqEliminateRedundantGenerators( i )  function PqEliminateRedundantGenerators( )  function for the ith or default interactive ANUPQ process, direct the pq program to eliminate redundant generators of the current p-quotient. Note: For those familiar with the pq program, PqEliminateRedundantGenerators performs menu item 11 of the Advanced p-Quotient menu. 5.7-14 PqRevertToPreviousClass PqRevertToPreviousClass( i )  function PqRevertToPreviousClass( )  function for the ith or default interactive ANUPQ process, direct the pq program to abandon the current class and revert to the previous class. Note: For those familiar with the pq program, PqRevertToPreviousClass performs menu item 12 of the Advanced p-Quotient menu. 5.7-15 PqSetMaximalOccurrences PqSetMaximalOccurrences( i, noccur )  function PqSetMaximalOccurrences( noccur )  function for the ith or default interactive ANUPQ process, direct the pq program to set maximal occurrences of the weight 1 generators in the definitions of pcp generators of the group of the process. This can be used to avoid the definition of generators of which one knows for theoretical reasons that they would be eliminated later on. The argument noccur must be a list of non-negative integers of length the number of weight 1 generators (i.e. the rank of the class 1 p-quotient of the group of the process). An entry of 0 for a particular generator indicates that there is no limit on the number of occurrences for the generator. Note: For those familiar with the pq program, PqSetMaximalOccurrences performs menu item 13 of the Advanced p-Quotient menu. 5.7-16 PqSetMetabelian PqSetMetabelian( i )  function PqSetMetabelian( )  function for the ith or default interactive ANUPQ process, direct the pq program to enforce metabelian-ness. Note: For those familiar with the pq program, PqSetMetabelian performs menu item 14 of the Advanced p-Quotient menu. 5.7-17 PqDoConsistencyCheck PqDoConsistencyCheck( i, c, b, a )  function PqDoConsistencyCheck( c, b, a )  function PqJacobi( i, c, b, a )  function PqJacobi( c, b, a )  function for the ith or default interactive ANUPQ process, direct the pq program to do the consistency check for the pc generators with indices c, b, a which should be non-increasing positive integers, i.e. c ≥ b ≥ a. There are 3 types of consistency checks: \begin{array}{rclrl} (a^n)a &=& a(a^n) && {\rm (Type\ 1)} \\ (b^n)a &=& b^{(n-1)}(ba), b(a^n) = (ba)a^{(n-1)} && {\rm (Type\ 2)} \\ c(ba) &=& (cb)a && {\rm (Type\ 3)} \\ \end{array}  The reason some people talk about Jacobi relations instead of consistency checks becomes clear when one looks at the consistency check of type 3: \begin{array}{rcl} c(ba) &=& a c[c,a] b[b,a] = acb [c,a][c,a,b][b,a] = \dots \\ (cb)a &=& b c[c,b] a = a b[b,a] c[c,a] [c,b][c,b,a] \\ &=& abc [b,a] [b,a,c] [c,a] [c,b] [c,b,a] = \dots \\ \end{array}  Each collection would normally carry on further. But one can see already that no other commutators of weight 3 will occur. After all terms of weight one and weight two have been moved to the left we end up with: \begin{array}{rcl} & &abc [b,a] [c,a] [c,b] [c,a,b] \dots \\ &=&abc [b,a] [c,a] [c,b] [c,b,a] [b,a,c] \dots \\ \end{array}  Modulo terms of weight 4 this is equivalent to [c,a,b] [b,c,a] [a,b,c] = 1  which is the Jacobi identity. See also PqDoConsistencyChecks (PqDoConsistencyChecks (5.7-8)). Note: For those familiar with the pq program, PqDoConsistencyCheck and PqJacobi perform menu item 15 of the Advanced p-Quotient menu. 5.7-18 PqCompact PqCompact( i )  function PqCompact( )  function for the ith or default interactive ANUPQ process, direct the pq program to do a compaction of its work space. This function is safe to perform only at certain points in time. Note: For those familiar with the pq program, PqCompact performs menu item 16 of the Advanced p-Quotient menu. 5.7-19 PqEchelonise PqEchelonise( i )  function PqEchelonise( )  function for the ith or default interactive ANUPQ process, direct the pq program to echelonise the word most recently collected by PqCollect or PqCommutator against the relations of the current pc presentation, and return the number of the generator made redundant or fail if no generator was made redundant. A call to PqCollect (see PqCollect (5.7-1)) or PqCommutator (see PqCommutator (5.7-3)) needs to be performed prior to using this command. Note: For those familiar with the pq program, PqEchelonise performs menu item 17 of the Advanced p-Quotient menu. 5.7-20 PqSupplyAutomorphisms PqSupplyAutomorphisms( i, mlist )  function PqSupplyAutomorphisms( mlist )  function for the ith or default interactive ANUPQ process, supply the automorphism data provided by the list mlist of matrices with non-negative integer coefficients. Each matrix in mlist describes one automorphism in the following way.  The rows of each matrix correspond to the pc generators of weight one.  Each row is the exponent vector of the image of the corresponding weight one generator under the respective automorphism. Note: For those familiar with the pq program, PqSupplyAutomorphisms uses menu item 18 of the Advanced p-Quotient menu. 5.7-21 PqExtendAutomorphisms PqExtendAutomorphisms( i )  function PqExtendAutomorphisms( )  function for the ith or default interactive ANUPQ process, direct the pq program to extend automorphisms of the p-quotient of the previous class to the p-quotient of the present class. Note: For those familiar with the pq program, PqExtendAutomorphisms uses menu item 18 of the Advanced p-Quotient menu. 5.7-22 PqApplyAutomorphisms PqApplyAutomorphisms( i, qfac )  function PqApplyAutomorphisms( qfac )  function for the ith or default interactive ANUPQ process, direct the pq program to apply automorphisms; qfac is the queue factor e.g. 15. Note: For those familiar with the pq program, PqCloseRelations performs menu item 19 of the Advanced p-Quotient menu. 5.7-23 PqDisplayStructure PqDisplayStructure( i: [Bounds := list] )  function PqDisplayStructure( : [Bounds := list] )  function for the ith or default interactive ANUPQ process, direct the pq program to display the structure for the pcp generators numbered (inclusively) between the bounds of Bounds or for all generators if Bounds is not given. The value list of Bounds (assuming the interactive process is numbered i) should be a list of two integers low, high satisfying 1 ≤ low ≤ high ≤ PqNrPcGenerators(i) (see PqNrPcGenerators (5.5-1)). PqDisplayStructure also accepts the option OutputLevel (see 6.2). Explanation of output New generators are defined as commutators of previous generators and generators of class 1 or as p-th powers of generators that have themselves been defined as p-th powers. A generator is never defined as p-th power of a commutator. Therefore, there are two cases: all the numbers on the righthand side are either the same or they differ. Below, gi refers to the ith defining generator.  If the righthand side numbers are all the same, then the generator is a p-th power (of a p-th power of a p-th power, etc.). The number of repeated digits say how often a p-th power has to be taken. In the following example, the generator number 31 is the eleventh power of generator 17 which in turn is an eleventh power and so on: \begintt #I 31 is defined on 17^11 = 1 1 1 1 1 \endtt So generator 31 is obtained by taking the eleventh power of generator 1 five times.  If the numbers are not all the same, the generator is defined by a commutator. If the first two generator numbers differ, the generator is defined as a left-normed commutator of the weight one generators, e.g. \begintt #I 19 is defined on [11, 1] = 2 1 1 1 1 \endtt Here, generator 19 is defined as the commutator of generator 11 and generator 1 which is the same as the left-normed commutator [x2, x1, x1, x1, x1]. One can check this by tracing back the definition of generator 11 until one gets to a generator of class 1.  If the first two generator numbers are identical, then the left most component of the left-normed commutator is a p-th power, e.g. \begintt #I 25 is defined on [14, 1] = 1 1 2 1 1 \endtt In this example, generator 25 is defined as commutator of generator 14 and generator 1. The left-normed commutator is  [(x1^{11})^{11}, x2, x1, x1]  Again, this can be verified by tracing back the definitions. Note: For those familiar with the pq program, PqDisplayStructure performs menu item 20 of the Advanced p-Quotient menu. 5.7-24 PqDisplayAutomorphisms PqDisplayAutomorphisms( i: [Bounds := list] )  function PqDisplayAutomorphisms( : [Bounds := list] )  function for the ith or default interactive ANUPQ process, direct the pq program to display the automorphism actions on the pcp generators numbered (inclusively) between the bounds of Bounds or for all generators if Bounds is not given. The value list of Bounds (assuming the interactive process is numbered i) should be a list of two integers low, high satisfying 1 ≤ low ≤ high ≤ PqNrPcGenerators(i) (see PqNrPcGenerators (5.5-1)). PqDisplayStructure also accepts the option OutputLevel (see 6.2). Note: For those familiar with the pq program, PqDisplayAutomorphisms performs menu item 21 of the Advanced p-Quotient menu. 5.7-25 PqWritePcPresentation PqWritePcPresentation( i, filename )  function PqWritePcPresentation( filename )  function for the ith or default interactive ANUPQ process, direct the pq program to write a pc presentation of a previously-computed quotient of the group of that process, to the file with name filename. Here the group of a process is the one given as first argument when PqStart was called to initiate that process (for process i the group is stored as ANUPQData.io[i].group). If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which GAP was started. If a pc presentation has not been previously computed by the pq program, then pq is called to compute it first, effectively invoking PqPcPresentation (see PqPcPresentation (5.6-1)). Note: For those familiar with the pq program, PqPcWritePresentation performs menu item 25 of the Advanced p-Quotient menu. 5.8 Commands from the Standard Presentation menu 5.8-1 PqSPComputePcpAndPCover PqSPComputePcpAndPCover( i: options )  function PqSPComputePcpAndPCover( : options )  function for the ith or default interactive ANUPQ process, directs the pq program to compute for the group of that process a pc presentation up to the p-quotient of maximum class or the value of the option ClassBound and the p-cover of that quotient, and sets up tabular information required for computation of a standard presentation. Here the group of a process is the one given as first argument when PqStart was called to initiate that process (for process i the group is stored as ANUPQData.io[i].group). The possible options are Prime, ClassBound, Relators, Exponent, Metabelian and OutputLevel (see Chapter 'ANUPQ Options' for detailed descriptions of these options). The option Prime is normally determined via PrimePGroup, and so is not required unless the group doesn't know it's a p-group and HasPrimePGroup returns false. Note: For those familiar with the pq program, PqSPComputePcpAndPCover performs option 1 of the Standard Presentation menu. 5.8-2 PqSPStandardPresentation PqSPStandardPresentation( i[, mlist]: [options] )  function PqSPStandardPresentation( [mlist]: [options] )  function for the ith or default interactive ANUPQ process, inputs data given by options to compute a standard presentation for the group of that process. If argument mlist is given it is assumed to be the automorphism group data required. Otherwise it is assumed that a call to either Pq (see Pq (5.3-1)) or PqEpimorphism (see PqEpimorphism (5.3-2)) has generated a p-quotient and that GAP can compute its automorphism group from which the necessary automorphism group data can be derived. The group of the process is the one given as first argument when PqStart was called to initiate the process (for process i the group is stored as ANUPQData.io[i].group and the p-quotient if existent is stored as ANUPQData.io[i].pQuotient). If mlist is not given and a p-quotient of the group has not been previously computed a class 1 p-quotient is computed. PqSPStandardPresentation accepts three options, all optional:  ClassBound := n  PcgsAutomorphisms  StandardPresentationFile := filename If ClassBound is omitted it defaults to 63. Detailed descriptions of the above options may be found in Chapter 'ANUPQ Options'. Note: For those familiar with the pq program, PqSPPcPresentation performs menu item 2 of the Standard Presentation menu. 5.8-3 PqSPSavePresentation PqSPSavePresentation( i, filename )  function PqSPSavePresentation( filename )  function for the ith or default interactive ANUPQ process, directs the pq program to save the standard presentation previously computed for the group of that process to the file with name filename, where the group of a process is the one given as first argument when PqStart was called to initiate that process. If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which GAP was started. Note: For those familiar with the pq program, PqSPSavePresentation performs menu item 3 of the Standard Presentation menu. 5.8-4 PqSPCompareTwoFilePresentations PqSPCompareTwoFilePresentations( i, f1, f2 )  function PqSPCompareTwoFilePresentations( f1, f2 )  function for the ith or default interactive ANUPQ process, direct the pq program to compare the presentations in the files with names f1 and f2 and returns true if they are identical and false otherwise. For each of the strings f1 and f2, if the first character is not a / then it is assumed to be the path of a readable file relative to the directory in which GAP was started. Notes The presentations in files f1 and f2 must have been generated by the pq program but they do not need to be standard presentations. If If the presentations in files f1 and f2 have been generated by PqSPStandardPresentation (see PqSPStandardPresentation (5.8-2)) then a false response from PqSPCompareTwoFilePresentations says the groups defined by those presentations are not isomorphic. For those familiar with the pq program, PqSPCompareTwoFilePresentations performs menu item 6 of the Standard Presentation menu. 5.8-5 PqSPIsomorphism PqSPIsomorphism( i )  function PqSPIsomorphism( )  function for the ith or default interactive ANUPQ process, direct the pq program to compute the isomorphism mapping from the p-group of the process to its standard presentation. This function provides a description only; for a GAP object, use EpimorphismStandardPresentation (see EpimorphismStandardPresentation (5.3-5)). Note: For those familiar with the pq program, PqSPIsomorphism performs menu item 8 of the Standard Presentation menu. 5.9 Commands from the Main p-Group Generation menu Note that the p-group generation commands can only be applied once the pq program has produced a pc presentation of some quotient group of the group of the process. 5.9-1 PqPGSupplyAutomorphisms PqPGSupplyAutomorphisms( i[, mlist]: options )  function PqPGSupplyAutomorphisms( [mlist]: options )  function for the ith or default interactive ANUPQ process, supply the pq program with the automorphism group data needed for the current quotient of the group of that process (for process i the group is stored as ANUPQData.io[i].group). For a description of the format of mlist see PqSupplyAutomorphisms (5.7-20). The options possible are NumberOfSolubleAutomorphisms and RelativeOrders. (Detailed descriptions of these options may be found in Chapter 'ANUPQ Options'.) If mlist is omitted, the automorphism data is determined from the group of the process which must have been a p-group in pc presentation. Note: For those familiar with the pq program, PqPGSupplyAutomorphisms performs menu item 1 of the main p-Group Generation menu. 5.9-2 PqPGExtendAutomorphisms PqPGExtendAutomorphisms( i )  function PqPGExtendAutomorphisms( )  function for the ith or default interactive ANUPQ process, direct the pq program to compute the extensions of the automorphisms of the p-quotient of the previous class to the p-quotient of the current class. You may wish to set the InfoLevel of InfoANUPQ to 2 (or more) in order to see the output from the pq program (see InfoANUPQ (3.3-1)). Note: For those familiar with the pq program, PqPGExtendAutomorphisms performs menu item 2 of the main or advanced p-Group Generation menu. 5.9-3 PqPGConstructDescendants PqPGConstructDescendants( i: options )  function PqPGConstructDescendants( : options )  function for the ith or default interactive ANUPQ process, direct the pq program to construct descendants prescribed by options, and return the number of descendants constructed (compare function PqDescendants (4.4-1) which returns the list of descendants). The options possible are ClassBound, OrderBound, StepSize, PcgsAutomorphisms, RankInitialSegmentSubgroups, SpaceEfficient, CapableDescendants, AllDescendants, Exponent, Metabelian, BasicAlgorithm, CustomiseOutput. (Detailed descriptions of these options may be found in Chapter 'ANUPQ Options'.) PqPGConstructDescendants requires that the pq program has previously computed a pc presentation and a p-cover for a p-quotient of some class of the group of the process. Note: For those familiar with the pq program, PqPGConstructDescendants performs menu item 5 of the main p-Group Generation menu. 5.9-4 PqPGSetDescendantToPcp PqPGSetDescendantToPcp( i, cls, n )  function PqPGSetDescendantToPcp( cls, n )  function PqPGSetDescendantToPcp( i: [Filename := name] )  function PqPGSetDescendantToPcp( : [Filename := name] )  function PqPGRestoreDescendantFromFile( i, cls, n )  function PqPGRestoreDescendantFromFile( cls, n )  function PqPGRestoreDescendantFromFile( i: [Filename := name] )  function PqPGRestoreDescendantFromFile( : [Filename := name] )  function for the ith or default interactive ANUPQ process, direct the pq program to restore group n of class cls from a temporary file, where cls and n are positive integers, or the group stored in name. PqPGSetDescendantToPcp and PqPGRestoreDescendantFromFile are synonyms; they make sense only after a prior call to construct descendants by say PqPGConstructDescendants (see PqPGConstructDescendants (5.9-3)) or the interactive PqDescendants (see PqDescendants (5.3-6)). In the Filename option forms, the option defaults to the last filename in which a presentation was stored by the pq program. Notes Since the PqPGSetDescendantToPcp and PqPGRestoreDescendantFromFile are intended to be used in calculation of further descendants the pq program computes the p-cover of the restored descendant. Hence, PqCurrentGroup used immediately after one of these commands returns the p-cover of the restored descendant rather than the descendant itself. For those familiar with the pq program, PqPGSetDescendantToPcp and PqPGRestoreDescendantFromFile perform menu item 3 of the main or advanced p-Group Generation menu. 5.10 Commands from the Advanced p-Group Generation menu The functions below perform the component algorithms of PqPGConstructDescendants (see PqPGConstructDescendants (5.9-3)). You can get some idea of their usage by trying PqExample("Nott-APG-Rel-i");. You can get some idea of the breakdown of PqPGConstructDescendants into these functions by comparing the previous output with PqExample("Nott-PG-Rel-i");. These functions are intended for use only by experts; please contact the authors of the package if you genuinely have a need for them and need any amplified descriptions. 5.10-1 PqAPGDegree PqAPGDegree( i, step, rank: [Exponent := n] )  function PqAPGDegree( step, rank: [Exponent := n] )  function for the ith or default interactive ANUPQ process, direct the pq program to invoke menu item 6 of the Advanced p-Group Generation menu. Here the step-size step and the rank rank are positive integers and are the arguments required by the pq program. See 6.2 for the one recognised option Exponent. 5.10-2 PqAPGPermutations PqAPGPermutations( i: options )  function PqAPGPermutations( : options )  function for the ith or default interactive ANUPQ process, direct the pq program to perform menu item 7 of the Advanced p-Group Generation menu. Here the options options recognised are PcgsAutomorphisms, SpaceEfficient, PrintAutomorphisms and PrintPermutations (see Chapter 'ANUPQ Options' for details). 5.10-3 PqAPGOrbits PqAPGOrbits( i: options )  function PqAPGOrbits( : options )  function for the ith or default interactive ANUPQ process, direct the pq to perform menu item 8 of the Advanced p-Group Generation menu. Here the options options recognised are PcgsAutomorphisms, SpaceEfficient and CustomiseOutput (see Chapter 'ANUPQ Options' for details). For the CustomiseOutput option only the setting of the orbit is recognised (all other fields if set are ignored). 5.10-4 PqAPGOrbitRepresentatives PqAPGOrbitRepresentatives( i: options )  function PqAPGOrbitRepresentatives( : options )  function for the ith or default interactive ANUPQ process, direct the pq to perform item 9 of the Advanced p-Group Generation menu. The options options may be any selection of the following: PcgsAutomorphisms, SpaceEfficient, Exponent, Metabelian, CapableDescendants (or AllDescendants), CustomiseOutput (where only the group and autgroup fields are recognised) and Filename (see Chapter 'ANUPQ Options' for details). If Filename is omitted the reduced p-cover is written to the file "redPCover" in the temporary directory whose name is stored in ANUPQData.tmpdir. 5.10-5 PqAPGSingleStage PqAPGSingleStage( i: options )  function PqAPGSingleStage( : options )  function for the ith or default interactive ANUPQ process, direct the pq to perform option 5 of the Advanced p-Group Generation menu. The possible options are StepSize, PcgsAutomorphisms, RankInitialSegmentSubgroups, SpaceEfficient, CapableDescendants, AllDescendants, Exponent, Metabelian, BasicAlgorithm and CustomiseOutput. (Detailed descriptions of these options may be found in Chapter 'ANUPQ Options'.) 5.11 Primitive Interactive ANUPQ Process Read/Write Functions For those familiar with using the pq program as a standalone we provide primitive read/write tools to communicate directly with an interactive ANUPQ process, started via PqStart. For the most part, it is up to the user to translate the output strings from pq program into a form useful in GAP. 5.11-1 PqRead PqRead( i )  function PqRead( )  function read a complete line of ANUPQ output, from the ith or default interactive ANUPQ process, if there is output to be read and returns fail otherwise. When successful, the line is returned as a string complete with trailing newline, colon, or question-mark character. Please note that it is possible to be too quick (i.e. the return can be fail purely because the output from ANUPQ is not there yet), but if PqRead finds any output at all, it waits for a complete line. PqRead also writes the line read via Info at InfoANUPQ level 2. It doesn't try to distinguish banner and menu output from other output of the pq program. 5.11-2 PqReadAll PqReadAll( i )  function PqReadAll( )  function read and return as many complete lines of ANUPQ output, from the ith or default interactive ANUPQ process, as there are to be read, at the time of the call, as a list of strings with any trailing newlines removed and returns the empty list otherwise. PqReadAll also writes each line read via Info at InfoANUPQ level 2. It doesn't try to distinguish banner and menu output from other output of the pq program. Whenever PqReadAll finds only a partial line, it waits for the complete line, thus increasing the probability that it has captured all the output to be had from ANUPQ. 5.11-3 PqReadUntil PqReadUntil( i, IsMyLine )  function PqReadUntil( IsMyLine )  function PqReadUntil( i, IsMyLine, Modify )  function PqReadUntil( IsMyLine, Modify )  function read complete lines of ANUPQ output, from the ith or default interactive ANUPQ process, chomps them (i.e. removes any trailing newline character), emits them to Info at InfoANUPQ level 2 (without trying to distinguish banner and menu output from other output of the pq program), and applies the function Modify (where Modify is just the identity map/function for the first two forms) until a chomped line line for which IsMyLine( Modify(line) ) is true. PqReadUntil returns the list of Modify-ed chomped lines read. Notes: When provided by the user, Modify should be a function that accepts a single string argument. IsMyLine should be a function that is able to accept the output of Modify (or take a single string argument when Modify is not provided) and should return a boolean. If IsMyLine( Modify(line) ) is never true, PqReadUntil will wait indefinitely. 5.11-4 PqWrite PqWrite( i, string )  function PqWrite( string )  function write string to the ith or default interactive ANUPQ process; string must be in exactly the form the ANUPQ standalone expects. The command is echoed via Info at InfoANUPQ level 3 (with a ToPQ>  prompt); i.e. do SetInfoLevel(InfoANUPQ, 3); to see what is transmitted to the pq program. PqWrite returns true if successful in writing to the stream of the interactive ANUPQ process, and fail otherwise. Note: If PqWrite returns fail it means that the ANUPQ process has died. anupq-3.3.0/doc/ragged.css000644 000766 000024 00000000231 14355420744 015644 0ustar00mhornstaff000000 000000 /* times.css Frank Lübeck */ /* Change default CSS to use Times font. */ body { text-align: left; } anupq-3.3.0/doc/chap1.html000644 000766 000024 00000026164 14355420744 015600 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 1: Introduction
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

1 Introduction

1.1 Overview

The GAP 4 package ANUPQ provides an interface to the ANU pq C program written by Eamonn O'Brien, making the functionality of the C program available to GAP. Henceforth, we shall refer to the ANUPQ package when referring to the GAP interface, and to the ANU pq program or just pq when referring to that C program.

The pq program consists of implementations of the following algorithms:

  1. A p-quotient algorithm to compute pc-presentations for p-factor groups of finitely presented groups.

  2. A p-group generation algorithm to generate pc presentations of groups of prime power order.

  3. A standard presentation algorithm used to compute a canonical pc-presentation of a p-group.

  4. An algorithm which can be used to compute the automorphism group of a p-group.

    This part of the pq program is not accessible through the ANUPQ package. Instead, users are advised to consider the GAP 4 package AutPGrp by Bettina Eick and Eamonn O'Brien, which implements a better algorithm in GAP for the computation of automorphism groups of p-groups.

The current version of the ANUPQ package requires GAP 4.5, and version 1.5 of the AutPGrp package. All code that made the package compatible with earlier versions of GAP has been removed. If you must use an older GAP version and cannot upgrade, then you may try using an older ANUPQ version. However, you should not use versions of the ANUPQ package older than 2.2, since they are known to have bugs.

1.2 How to read this manual

It is not expected that readers of this manual will read it in a linear fashion from cover to cover; some sections contain material that is far too technical to be absorbed on a first reading.

Firstly, installers of the ANUPQ package will need to read Chapter Installing the ANUPQ Package, if they have not already gleaned these details from the README file.

Once the ANUPQ package is installed, users of the ANUPQ package will benefit most by first reading Chapter Mathematical Background and Terminology, which gives a brief description of the background and terminology used (this chapter also cites a number of references for further reading), and the introduction of Chapter Infrastructure (skip the remainder of the chapter on a first reading).

Then the user/reader should pursue Chapter Non-interactive ANUPQ functions in detail, delving into Chapter ANUPQ Options as necessary for the options of the functions that are described. The user will become best acquainted with the ANUPQ package by trying the examples. This chapter describes the non-interactive functions of the ANUPQ package, i.e. "one-shot" functions that invoke the pq program in such a way that once GAP has got what it needs, the pq is allowed to exit. It is expected that most of the time, users will only need these functions.

Advanced users will want to explore Chapter Interactive ANUPQ functions which describes all the interactive functions of the ANUPQ package; these are functions that extract information via a dialogue with a running pq process. Occasionally, a user needs the "next step"; the functions provided in this chapter make use of data from previous steps retained by the pq program, thus allowing the user to interact with the pq program like one can when one uses the pq program as a stand-alone (see guide.dvi in the standalone-doc directory).

After having read Chapters Non-interactive ANUPQ functions and Interactive ANUPQ functions, cross-references will have taken the reader into Chapter ANUPQ Options; by this stage, the reader need only read the introduction of Chapter ANUPQ Options.

After the reader has developed some facility with the ANUPQ package, she should explore the examples described in Appendix Examples.

If you run into trouble using the ANUPQ functions, some troubleshooting hints are given in Section Hints and Warnings regarding the use of Options. If the troubleshooting hints don't help, Section Authors and Acknowledgements below, gives contact details for the authors of the components of the ANUPQ package.

1.3 Authors and Acknowledgements

The C implementation of the ANU pq standalone was developed by Eamonn O'Brien.

An interactive interface using iostreams was developed with the assistance of Werner Nickel by Greg Gamble.

The GAP 4 version of this package was adapted from the GAP 3 version by Werner Nickel.

A new co-maintainer, Max Horn, joined the team in November, 2011.

The authors would like to thank Joachim Neubüser for his careful proof-reading and advice, and for formulating Chapter Mathematical Background and Terminology.

We would also like to thank Bettina Eick who by her testing and provision of examples helped us to eliminate a number of bugs and who provided a number of valuable suggestions for extensions of the package beyond the GAP 3 capabilities.

If you find a bug, the last section of ANUPQ's README describes the information we need and where to send us a bug report; please take the time to read this (i.e. help us to help you).

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/chap5_mj.html000644 000766 000024 00000532137 14355420744 016274 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Chapter 5: Interactive ANUPQ functions
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

5 Interactive ANUPQ functions

5 Interactive ANUPQ functions

Here we describe the interactive functions defined by the ANUPQ package, i.e. the functions that manipulate and initiate interactive ANUPQ processes. These are functions that extract information via a dialogue with a running pq process (process used in the UNIX sense). Occasionally, a user needs the "next step"; the functions provided in this chapter make use of data from previous steps retained by the pq program, thus allowing the user to interact with the pq program like one can when one uses the pq program as a stand-alone (see guide.dvi in the standalone-doc directory).

An interactive ANUPQ process is initiated by PqStart and terminated via PqQuit; these functions are described in ection Starting and Stopping Interactive ANUPQ Processes.

Each interactive ANUPQ function that manipulates an already started interactive ANUPQ process, has a form where the first argument is the integer i returned by the initiating PqStart command, and a second form with one argument fewer (where the integer i is discovered by a default mechanism, namely by determining the least integer i for which there is a currently active interactive ANUPQ process). We will thus commonly say that "for the ith (or default) interactive ANUPQ process" a certain function performs a given action. In each case, it is an error if i is not the index of an active interactive process, or there are no current active interactive processes.

Notes: The global method of passing options (via PushOptions), should not be used with any of the interactive functions. In fact, the OptionsStack should be empty at the time any of the interactive functions is called.

On quitting GAP, PqQuitAll(); is executed, which terminates all active interactive ANUPQ processes. If GAP is killed without quitting, before all interactive ANUPQ processes are terminated, zombie processes (still living child processes whose parents have died), may result. Since zombie processes do consume resources, in such an event, the responsible computer user should seek out and terminate those zombie processes (e.g. on Linux: ps xw | grep pq gives you information on the pq processes corresponding to any interactive ANUPQ processes started in a GAP session; you can then do kill N for each number N appearing in the first column of this output).

5.1 Starting and Stopping Interactive ANUPQ Processes

5.1-1 PqStart
‣ PqStart( G, workspace: options )( function )
‣ PqStart( G: options )( function )
‣ PqStart( workspace: options )( function )
‣ PqStart( : options )( function )

activate an iostream for an interactive ANUPQ process (i.e. PqStart starts up a pq process and opens a GAP iostream to "talk" to that process) and returns an integer i that can be used to identify that process. The argument G should be an fp group or pc group that the user intends to manipulate using interactive ANUPQ functions. If the function is called without specifying G, a group can be read in by using the function PqRestorePcPresentation (see PqRestorePcPresentation (5.6-3)). If PqStart is given an integer argument workspace, then the pq program is started up with a workspace (an integer array) of size workspace (i.e. \(4 \times \textit{workspace}\) bytes in a 32-bit environment); otherwise, the pq program sets a default workspace of \(10000000\).

The only options currently recognised by PqStart are Prime, Exponent and Relators (see Chapter ANUPQ Options for detailed descriptions of these options) and if provided they are essentially global for the interactive ANUPQ process, except that any interactive function interacting with the process and passing new values for these options will over-ride the global values.

5.1-2 PqQuit
‣ PqQuit( i )( function )
‣ PqQuit( )( function )

closes the stream of the ith or default interactive ANUPQ process and unbinds its ANUPQData.io record.

Note: It can happen that the pq process, and hence the GAP iostream assigned to communicate with it, can die, e.g. by the user typing a Ctrl-C while the pq process is engaged in a long calculation. IsPqProcessAlive (see IsPqProcessAlive (5.2-3)) is provided to check the status of the GAP iostream (and hence the status of the pq process it was communicating with).

5.1-3 PqQuitAll
‣ PqQuitAll( )( function )

is provided as a convenience, to terminate all active interactive ANUPQ processes with a single command. It is equivalent to executing PqQuit(i) for all active interactive ANUPQ processes i (see PqQuit (5.1-2)).

5.2 Interactive ANUPQ Process Utility Functions

5.2-1 PqProcessIndex
‣ PqProcessIndex( i )( function )
‣ PqProcessIndex( )( function )

With argument i, which must be a positive integer, PqProcessIndex returns i if it corresponds to an active interactive process, or raises an error. With no arguments it returns the default active interactive process or returns fail and emits a warning message to Info at InfoANUPQ or InfoWarning level 1.

Note: Essentially, an interactive ANUPQ process i is "active" if ANUPQData.io[i] is bound (i.e. we still have some data telling us about it). Also see PqStart (5.1-1).

5.2-2 PqProcessIndices
‣ PqProcessIndices( )( function )

returns the list of integer indices of all active interactive ANUPQ processes (see PqProcessIndex (5.2-1) for the meaning of "active").

5.2-3 IsPqProcessAlive
‣ IsPqProcessAlive( i )( function )
‣ IsPqProcessAlive( )( function )

return true if the GAP iostream of the ith (or default) interactive ANUPQ process started by PqStart is alive (i.e. can still be written to), or false, otherwise. (See the notes for PqStart (5.1-1) and PqQuit (5.1-2).)

If the user does not yet have a gap> prompt then usually the pq program is still away doing something and an ANUPQ interface function is still waiting for a reply. Typing a Ctrl-C (i.e. holding down the Ctrl key and typing c) will stop the waiting and send GAP into a break-loop, from which one has no option but to quit;. The typing of Ctrl-C, in such a circumstance, usually causes the stream of the interactive ANUPQ process to die; to check this we provide IsPqProcessAlive (see IsPqProcessAlive).

The GAP iostream of an interactive ANUPQ process will also die if the pq program has a segmentation fault. We do hope that this never happens to you, but if it does and the failure is reproducible, then it's a bug and we'd like to know about it. Please read the README that comes with the ANUPQ package to find out what to include in a bug report and who to email it to.

5.3 Interactive Versions of Non-interactive ANUPQ Functions

5.3-1 Pq
‣ Pq( i: options )( function )
‣ Pq( : options )( function )

return, for the fp or pc group (let us call it F), of the ith or default interactive ANUPQ process, the \(p\)-quotient of F specified by options, as a pc group; F must previously have been given (as first argument) to PqStart to start the interactive ANUPQ process (see PqStart (5.1-1)) or restored from file using the function PqRestorePcPresentation (see PqRestorePcPresentation (5.6-3)). Following the colon options is a selection of the options listed for the non-interactive Pq function (see Pq (4.1-1)), separated by commas like record components (see Section Reference: Function Call With Options in the GAP Reference Manual), except that the options SetupFile or PqWorkspace are ignored by the interactive Pq, and RedoPcp is an option only recognised by the interactive Pq i.e. the following options are recognised by the interactive Pq function:

  • Prime := p

  • ClassBound := n

  • Exponent := n

  • Relators := rels

  • Metabelian

  • Identities := funcs

  • GroupName := name

  • OutputLevel := n

  • RedoPcp

Detailed descriptions of the above options may be found in Chapter ANUPQ Options.

As a minimum the Pq function must have a value for the Prime option, though Prime need not be passed again in the case it has previously been provided, e.g. to PqStart (see PqStart (5.1-1)) when starting the interactive process.

The behaviour of the interactive Pq function depends on the current state of the pc presentation stored by the pq program:

  1. If no pc presentation has yet been computed (the case immediately after the PqStart call initiating the process) then the quotient group of the input group of the process of largest lower exponent-p class bounded by the value of the ClassBound option (see 6.2) is returned.

  2. If the current pc presentation of the process was determined by a previous call to Pq or PqEpimorphism, and the current call has a larger value ClassBound then the class is extended as much as is possible and the quotient group of the input group of the process of the new lower exponent-p class is returned.

  3. If the current pc presentation of the process was determined by a previous call to PqPCover then a consistent pc presentation of a quotient for the current class is determined before proceeding as in 2.

  4. If the RedoPcp option is supplied the current pc presentation is scrapped, all options must be re-supplied (in particular, Prime must be supplied) and then the Pq function proceeds as in 1.

See Section Attributes and a Property for fp and pc p-groups for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the group returned by Pq.

The following is one of the examples for the non-interactive Pq redone with the interactive version. Also, we set the option OutputLevel to 1 (see 6.2), in order to see the orders of the quotients of all the classes determined, and we set the InfoANUPQ level to 2 (see InfoANUPQ (3.3-1)), so that we catch the timing information.

gap> F := FreeGroup("a", "b");; a := F.1;; b := F.2;;
gap> G := F / [a^4, b^4];
<fp group on the generators [ a, b ]>
gap> PqStart(G);
1
gap> SetInfoLevel(InfoANUPQ, 2); #To see timing information
gap> Pq(: Prime := 2, ClassBound := 3, OutputLevel := 1 );
#I  Lower exponent-2 central series for [grp]
#I  Group: [grp] to lower exponent-2 central class 1 has order 2^2
#I  Group: [grp] to lower exponent-2 central class 2 has order 2^5
#I  Group: [grp] to lower exponent-2 central class 3 has order 2^8
#I  Computation of presentation took 0.00 seconds
<pc group of size 256 with 8 generators>

5.3-2 PqEpimorphism
‣ PqEpimorphism( i: options )( function )
‣ PqEpimorphism( : options )( function )

return, for the fp or pc group (let us call it F), of the ith or default interactive ANUPQ process, an epimorphism from F onto the \(p\)-quotient of F specified by options; F must previously have been given (as first argument) to PqStart to start the interactive ANUPQ process (see PqStart (5.1-1)). Since the underlying interactions with the pq program effected by the interactive PqEpimorphism are identical to those effected by the interactive Pq, everything said regarding the requirements and behaviour of the interactive Pq function (see Pq (5.3-1)) is also the case for the interactive PqEpimorphism.

Note: See Section Attributes and a Property for fp and pc p-groups for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the image group of the epimorphism returned by PqEpimorphism.

5.3-3 PqPCover
‣ PqPCover( i: options )( function )
‣ PqPCover( : options )( function )

return, for the fp or pc group of the ith or default interactive ANUPQ process, the \(p\)-covering group of the \(p\)-quotient Pq(i : options) or Pq(: options), modulo the following:

  1. If no pc presentation has yet been computed (the case immediately after the PqStart call initiating the process) and the group F of the process is already a \(p\)-group, in the sense that HasIsPGroup(F) and IsPGroup(F) is true, then

    Prime

    defaults to PrimePGroup(F), if not supplied and HasPrimePGroup(F) = true; and

    ClassBound

    defaults to PClassPGroup(F) if HasPClassPGroup(F) = true if not supplied, or to the usual default of 63, otherwise.

  2. If a pc presentation has been computed and none of options is RedoPcp or if no pc presentation has yet been computed but 1. does not apply then PqPCover(i : options); is equivalent to:

    Pq(i : options);
    PqPCover(i);
    
  3. If the RedoPcp option is supplied the current pc presentation is scrapped, and PqPCover proceeds as in 1. or 2. but without the RedoPcp option.

5.3-4 PqStandardPresentation
‣ PqStandardPresentation( [i]: options )( function )
‣ StandardPresentation( [i]: options )( function )

return, for the ith or default interactive ANUPQ process, the p-quotient of the group F of the process, specified by options, as an fp group which has a standard presentation. Here options is a selection of the options from the following list (see Chapter ANUPQ Options for detailed descriptions); this list is the same as for the non-interactive version of PqStandardPresentation except for the omission of options SetupFile and PqWorkspace (see PqStandardPresentation (4.2-1)).

  • Prime := p

  • pQuotient := Q

  • ClassBound := n

  • Exponent := n

  • Metabelian

  • GroupName := name

  • OutputLevel := n

  • StandardPresentationFile := filename

Unless F is a pc p-group, or the option Prime has been passed to a previous interactive function for the process to compute a p-quotient for F, the user must supply either the option Prime or the option pQuotient (if both Prime and pQuotient are supplied, the prime p is determined by applying PrimePGroup (see PrimePGroup (Reference: PrimePGroup) in the Reference Manual) to the value of pQuotient).

Taking one of the examples for the non-interactive version of StandardPresentation (see StandardPresentation (4.2-1)) that required two separate calls to the pq program, we now show how it can be done by setting up a dialogue with just the one pq process, using the interactive version of StandardPresentation:

gap> F4 := FreeGroup( "a", "b", "c", "d" );;
gap> a := F4.1;; b := F4.2;; c := F4.3;; d := F4.4;;
gap> G4 := F4 / [ b^4, b^2 / Comm(Comm (b, a), a), d^16,
>                 a^16 / (c * d), b^8 / (d * c^4) ];
<fp group on the generators [ a, b, c, d ]>
gap> SetInfoLevel(InfoANUPQ, 1); #Only essential Info please
gap> PqStart(G4); #Start a new interactive process for a new group
2
gap> K := Pq( 2 : Prime := 2, ClassBound := 1 ); #`pq' process no. is 2
<pc group of size 4 with 2 generators>
gap> StandardPresentation( 2 : pQuotient := K, ClassBound := 14 );
<fp group with 53 generators>

Notes

In contrast to the function Pq (see Pq (4.1-1)) which returns a pc group, PqStandardPresentation or StandardPresentation returns an fp group. This is because the output is mainly used for isomorphism testing for which an fp group is enough. However, the presentation is a polycyclic presentation and if you need to do any further computation with this group (e.g. to find the order) you can use the function PcGroupFpGroup (see PcGroupFpGroup (Reference: PcGroupFpGroup) in the GAP Reference Manual) to form a pc group.

If the user does not supply a p-quotient Q via the pQuotient option, and the prime p is either supplied, stored, or F is a pc p-group, then a p-quotient Q is computed. (The value of the prime p is stored if passed initially to PqStart or to a subsequent interactive process.) Note that a stored value for pQuotient (from a prior call to Pq) does not have precedence over a value for the prime p. If the user does supply a p-quotient Q via the pQuotient option, the package AutPGrp is called to compute the automorphism group of Q; an error will occur that asks the user to install the package AutPGrp if the automorphism group cannot be computed.

If any of the interactive functions PqStandardPresentation, StandardPresentation, EpimorphismPqStandardPresentation or EpimorphismStandardPresentation has been called previously for an interactive process, a subsequent call to any of these functions for the same process returns the previously computed value. Note that all these functions compute both an epimorphism and an fp group and store the results in the SPepi and SP fields of the data record associated with the process. See the example for the interactive EpimorphismStandardPresentation (EpimorphismStandardPresentation (5.3-5)).

The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for the group returned by PqStandardPresentation or StandardPresentation (see Section Attributes and a Property for fp and pc p-groups).

5.3-5 EpimorphismPqStandardPresentation
‣ EpimorphismPqStandardPresentation( [i]: options )( function )
‣ EpimorphismStandardPresentation( [i]: options )( method )

Each of the above functions accepts the same arguments and options as the interactive form of StandardPresentation (see StandardPresentation (5.3-4)) and returns an epimorphism from the fp or pc group F of the ith or default interactive ANUPQ process onto the finitely presented group given by a standard presentation, i.e. if S is the standard presentation computed for the \(p\)-quotient of F by StandardPresentation then EpimorphismStandardPresentation returns the epimorphism from F to the group with presentation S. The group F must have been given (as first argument) to PqStart to start the interactive ANUPQ process (see PqStart (5.1-1)).

Taking our earlier non-interactive example (see EpimorphismPqStandardPresentation (4.2-2)) and modifying it a little, we illustrate, as for the interactive StandardPresentation (see StandardPresentation (5.3-4)), how something that required two separate calls to the pq program can now be achieved with a dialogue with just one pq process. Also, observe that calls to one of the standard presentation functions (as mentioned in the notes of StandardPresentation (5.3-4)) computes and stores both an fp group with a standard presentation and an epimorphism; subsequent calls to a standard presentation function for the same process simply return the appropriate stored value.

gap> F := FreeGroup(6, "F");;
gap> x := F.1;; y := F.2;; z := F.3;; w := F.4;; a := F.5;; b := F.6;;
gap> R := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b,
>          Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ];
[ F1^3*F4^-1, F2^3*F4^-1*F5^2*F6^2, F4^3*F6^-1, F2^-1*F1^-1*F2*F1*F3^-1, 
  F3^-1*F1^-1*F3*F1, F3^-1*F2^-1*F3*F2*F5^-1, F3^3 ]
gap> Q := F / R;
<fp group on the generators [ F1, F2, F3, F4, F5, F6 ]>
gap> PqStart( Q );
3
gap> G := Pq( 3 : Prime := 3, ClassBound := 3 );
<pc group of size 729 with 6 generators>
gap> lev := InfoLevel(InfoANUPQ);; # Save current InfoANUPQ level
gap> SetInfoLevel(InfoANUPQ, 2); # To see computation times
gap> # It is not necessary to pass the `Prime' option to
gap> # `EpimorphismStandardPresentation' since it was previously
gap> # passed to `Pq':
gap> phi := EpimorphismStandardPresentation( 3 : ClassBound := 3 );
#I  Class 1 3-quotient and its 3-covering group computed in 0.00 seconds
#I  Order of GL subgroup is 48
#I  No. of soluble autos is 0
#I    dim U = 1  dim N = 3  dim M = 3
#I    nice stabilizer with perm rep
#I  Computing standard presentation for class 2 took 0.00 seconds
#I  Computing standard presentation for class 3 took 0.01 seconds
[ F1, F2, F3, F4, F5, F6 ] -> [ f1*f2^2*f3*f4^2*f5^2, f1*f2*f3*f5, f3^2, 
  f4*f6^2, f5, f6 ]
gap> # Image of phi should be isomorphic to G ...
gap> # let's check the order is correct:
gap> Size( Image(phi) );
729
gap> # `StandardPresentation' and `EpimorphismStandardPresentation'
gap> # behave like attributes, so no computation is done when
gap> # either is called again for the same process ...
gap> StandardPresentation( 3 : ClassBound := 3 );
<fp group of size 729 on the generators [ f1, f2, f3, f4, f5, f6 ]>
gap> # No timing data was Info-ed since no computation was done
gap> SetInfoLevel(InfoANUPQ, lev); # Restore previous InfoANUPQ level

A very similar (essential details are the same) example to the above may be executed live, by typing: PqExample( "EpimorphismStandardPresentation-i" );.

Note: The notes for PqStandardPresentation or StandardPresentation (see PqStandardPresentation (5.3-4)) apply also to EpimorphismPqStandardPresentation or EpimorphismStandardPresentation except that their return value is an epimorphism onto an fp group, i.e. one should interpret the phrase "returns an fp group" as "returns an epimorphism onto an fp group" etc.

5.3-6 PqDescendants
‣ PqDescendants( i: options )( function )
‣ PqDescendants( : options )( function )

return for the pc group G of the ith or default interactive ANUPQ process, which must be of prime power order with a confluent pc presentation (see IsConfluent (Reference: IsConfluent for pc groups) in the GAP Reference Manual), a list of descendants (pc groups) of G. The group G is usually given as first argument to PqStart when starting the interactive ANUPQ process (see PqStart (5.1-1)). Alternatively, one may initiate the process with an fp group, use Pq interactively (see Pq (5.3-1)) to create a pc group and use PqSetPQuotientToGroup (see PqSetPQuotientToGroup (5.3-7)), which involves no computation, to set the pc group returned by Pq as the group of the process. Note that repeating a call to PqDescendants for the same interactive ANUPQ process simply returns the list of descendants originally calculated; a warning is emitted at InfoANUPQ level 1 reminding you of this should you do this.

After the colon, options a selection of the options listed for the non-interactive PqDescendants function (see PqDescendants (4.4-1)), should be given, separated by commas like record components (see Section Reference: Function Call With Options in the GAP Reference Manual), except that the options SetupFile or PqWorkspace are ignored by the interactive PqDescendants, i.e. the following options are recognised by the interactive PqDescendants function:

  • ClassBound := n

  • Relators := rels

  • OrderBound := n

  • StepSize := n, StepSize := list

  • RankInitialSegmentSubgroups := n

  • SpaceEfficient

  • CapableDescendants

  • AllDescendants := false

  • Exponent := n

  • Metabelian

  • GroupName := name

  • SubList := sub

  • BasicAlgorithm

  • CustomiseOutput := rec

Notes: The function PqDescendants uses the automorphism group of G which it computes via the package AutPGrp if the automorphism group of G is not already present. If AutPGrp is not installed an error may be raised. If the automorphism group of G is insoluble the pq program will call GAP together with the AutPGrp package for certain orbit-stabilizer calculations.

The attributes and property NuclearRank, MultiplicatorRank and IsCapable are set for each group of the list returned by PqDescendants (see Section Attributes and a Property for fp and pc p-groups).

Let us now repeat the examples previously given for the non-interactive PqDescendants, but this time with the interactive version of PqDescendants:

gap> F := FreeGroup( "a", "b" );; a := F.1;; b := F.2;;
gap> G := PcGroupFpGroup( F / [ a^2, b^2, Comm(b, a) ] );
<pc group of size 4 with 2 generators>
gap> PqStart(G); #This will now be the 4th interactive process running
4
gap> des := PqDescendants( 4 : OrderBound := 6, ClassBound := 5 );;
gap> Length(des);
83
gap> List(des, Size);
[ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, 
  32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, 
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
  64, 64, 64, 64, 64, 64, 64 ]
gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 );
[ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 
  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
  4, 4, 4, 5, 5, 5, 5, 5 ]

In the second example we compute all capable descendants of order 27 of the elementary abelian group of order 9.

gap> F := FreeGroup( 2, "g" );;
gap> G := PcGroupFpGroup( F / [ F.1^3, F.2^3, Comm(F.1, F.2) ] );
<pc group of size 9 with 2 generators>
gap> PqStart(G); #This will now be the 5th interactive process running
5
gap> des := PqDescendants( 5 : OrderBound := 3, ClassBound := 2,
>                              CapableDescendants );
[ <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators> ]
gap> List(des, d -> Length( PCentralSeries( d, 3 ) ) - 1 );
[ 2, 2 ]
gap> # For comparison let us now compute all descendants
gap> # (using the non-interactive Pq function)
gap> PqDescendants( G : OrderBound := 3, ClassBound := 2);
[ <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators>, 
  <pc group of size 27 with 3 generators> ]

In the third example, we compute all capable descendants of the elementary abelian group of order \(5^2\) which have exponent-\(5\) class at most \(3\), exponent \(5\), and are metabelian.

gap> F := FreeGroup( 2, "g" );;
gap> G := PcGroupFpGroup( F / [ F.1^5, F.2^5, Comm(F.2, F.1) ] );
<pc group of size 25 with 2 generators>
gap> PqStart(G); #This will now be the 6th interactive process running
6
gap> des := PqDescendants( 6 : Metabelian, ClassBound := 3,
>                              Exponent := 5, CapableDescendants );
[ <pc group of size 125 with 3 generators>, 
  <pc group of size 625 with 4 generators>, 
  <pc group of size 3125 with 5 generators> ]
gap> List(des, d -> Length( PCentralSeries( d, 5 ) ) - 1 );
[ 2, 3, 3 ]
gap> List(des, d -> Length( DerivedSeries( d ) ) );
[ 3, 3, 3 ]
gap> List(des, d -> Maximum( List( d, Order ) ) );
[ 5, 5, 5 ]

5.3-7 PqSetPQuotientToGroup
‣ PqSetPQuotientToGroup( i )( function )
‣ PqSetPQuotientToGroup( )( function )

for the ith or default interactive ANUPQ process, set the \(p\)-quotient previously computed by the interactive Pq function (see Pq (5.3-1)) to be the group of the process. This function is supplied to enable the computation of descendants of a \(p\)-quotient that is already known to the pq program, via the interactive PqDescendants function (see PqDescendants (5.3-6)), thus avoiding the need to re-submit it and have the pq program recompute it.

Note: See the function PqPGSetDescendantToPcp (PqPGSetDescendantToPcp (5.9-4)) for a mechanism to make (the \(p\)-cover of) a particular descendants the current group of the process.

The following example of the usage of PqSetPQuotientToGroup, which is essentially equivalent to what is obtained by running PqExample("PqDescendants-1-i");, redoes the first example of PqDescendants (5.3-6) (which computes the descendants of the Klein four group).

gap> F := FreeGroup( "a", "b" );
<free group on the generators [ a, b ]>
gap> procId := PqStart( F : Prime := 2 );
7
gap> Pq( procId : ClassBound := 1 );
<pc group of size 4 with 2 generators>
gap> PqSetPQuotientToGroup( procId );
gap> des := PqDescendants( procId : OrderBound := 6, ClassBound := 5 );;
gap> Length(des);
83
gap> List(des, Size);
[ 8, 8, 8, 16, 16, 16, 32, 16, 16, 16, 16, 16, 32, 32, 64, 64, 32, 32, 32, 
  32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 64, 64, 64, 
  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
  64, 64, 64, 64, 64, 64, 64 ]
gap> List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 );
[ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 
  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
  4, 4, 4, 5, 5, 5, 5, 5 ]

5.4 Low-level Interactive ANUPQ functions based on menu items of the pq program

The pq program has 5 menus, the details of which the reader will not normally need to know, but if she wishes to know the details they may be found in the standalone manual: guide.dvi. Both guide.dvi and the pq program refer to the items of these 5 menus as "options", which do not correspond in any way to the options used by any of the GAP functions that interface with the pq program.

Warning: The commands provided in this section are intended to provide something like the interactive functionality one has when running the standalone, from within GAP. The pq standalone (in particular, its "advanced" menus) assumes some expertise of the user; doing the "wrong" thing can cause the program to crash. While a number of safeguards have been provided in the GAP interface to the pq program, these are not foolproof, and the user should exercise care and ensure pre-requisites of the various commands are met.

5.5 General commands

The following commands either use a menu item from whatever menu is "current" for the pq program, or have general application and are not associated with just one menu item of the pq program.

5.5-1 PqNrPcGenerators
‣ PqNrPcGenerators( i )( function )
‣ PqNrPcGenerators( )( function )

for the ith or default interactive ANUPQ process, return the number of pc generators of the lower exponent \(p\)-class quotient of the group currently determined by the process. This also applies if the pc presentation is not consistent.

5.5-2 PqFactoredOrder
‣ PqFactoredOrder( i )( function )
‣ PqFactoredOrder( )( function )

for the ith or default interactive ANUPQ process, return an integer pair [p, n] where p is a prime and n is the number of pc generators (see PqNrPcGenerators (5.5-1)) in the pc presentation of the quotient group currently determined by the process. If this presentation is consistent, then \(p^n\) is the order of the quotient group. Otherwise (if tails have been added but the necessary consistency checks, relation collections, exponent law checks and redundant generator eliminations have not yet been done), \(p^n\) is an upper bound for the order of the group.

5.5-3 PqOrder
‣ PqOrder( i )( function )
‣ PqOrder( )( function )

for the ith or default interactive ANUPQ process, return \(p^n\) where [p, n] is the pair as returned by PqFactoredOrder (see PqFactoredOrder (5.5-2)).

5.5-4 PqPClass
‣ PqPClass( i )( function )
‣ PqPClass( )( function )

for the ith or default interactive ANUPQ process, return the lower exponent \(p\)-class of the quotient group currently determined by the process.

5.5-5 PqWeight
‣ PqWeight( i, j )( function )
‣ PqWeight( j )( function )

for the ith or default interactive ANUPQ process, return the weight of the jth pc generator of the lower exponent \(p\)-class quotient of the group currently determined by the process, or fail if there is no such numbered pc generator.

5.5-6 PqCurrentGroup
‣ PqCurrentGroup( i )( function )
‣ PqCurrentGroup( )( function )

for the ith or default interactive ANUPQ process, return the group whose pc presentation is determined by the process as a GAP pc group (either a lower exponent \(p\)-class quotient of the start group or the \(p\)-cover of such a quotient).

Notes: See Section Attributes and a Property for fp and pc p-groups for the attributes and property NuclearRank, MultiplicatorRank and IsCapable which may be applied to the group returned by PqCurrentGroup.

5.5-7 PqDisplayPcPresentation
‣ PqDisplayPcPresentation( i: [OutputLevel := lev] )( function )
‣ PqDisplayPcPresentation( : [OutputLevel := lev] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to display the pc presentation of the lower exponent \(p\)-class quotient of the group currently determined by the process.

Except if the last command communicating with the pq program was a \(p\)-group generation command (for which there is only a verbose output level), to set the amount of information this command displays you may wish to call PqSetOutputLevel first (see PqSetOutputLevel (5.5-8)), or equivalently pass the option OutputLevel (see 6.2).

Note: For those familiar with the pq program, PqDisplayPcPresentation performs menu item 4 of the current menu of the pq program.

5.5-8 PqSetOutputLevel
‣ PqSetOutputLevel( i, lev )( function )
‣ PqSetOutputLevel( lev )( function )

for the ith or default interactive ANUPQ process, direct the pq program to set the output level of the pq program to lev.

Note: For those familiar with the pq program, PqSetOutputLevel performs menu item 5 of the main (or advanced) \(p\)-Quotient menu, or the Standard Presentation menu.

5.5-9 PqEvaluateIdentities
‣ PqEvaluateIdentities( i: [Identities := funcs] )( function )
‣ PqEvaluateIdentities( : [Identities := funcs] )( function )

for the ith or default interactive ANUPQ process, invoke the evaluation of identities defined by the Identities option, and eliminate any redundant pc generators formed. Since a previous value of Identities is saved in the data record of the process, it is unnecessary to pass the Identities if set previously.

Note: This function is mainly implemented at the GAP level. It does not correspond to a menu item of the pq program.

5.6 Commands from the Main \(p\)-Quotient menu

5.6-1 PqPcPresentation
‣ PqPcPresentation( i: options )( function )
‣ PqPcPresentation( : options )( function )

for the ith or default interactive ANUPQ process, direct the pq program to compute the pc presentation of the quotient (determined by options) of the group of the process, which for process i is stored as ANUPQData.io[i].group.

The possible options are the same as for the interactive Pq (see Pq (5.3-1)) function, except for RedoPcp (which, in any case, would be superfluous), namely: Prime, ClassBound, Exponent, Relators, GroupName, Metabelian, Identities and OutputLevel (see Chapter ANUPQ Options for a detailed description for these options). The option Prime is required unless already provided to PqStart.

Notes

The pc presentation is held by the pq program. In contrast to Pq (see Pq (5.3-1)), no GAP pc group is returned; see PqCurrentGroup (PqCurrentGroup (5.5-6)) if you need the corresponding GAP pc group.

PqPcPresentation(i: options); is roughly equivalent to the following sequence of low-level commands:

PqPcPresentation(i: opts); #class 1 call
for c in [2 .. class] do
    PqNextClass(i);
od;

where opts is options except with the ClassBound option set to 1, and class is either the maximum class of a p-quotient of the group of the process or the user-supplied value of the option ClassBound (whichever is smaller). If the Identities option has been set, both the first PqPcPresentation class 1 call and the PqNextClass calls invoke PqEvaluateIdentities(i); as their final step.

For those familiar with the pq program, PqPcPresentation performs menu item 1 of the main \(p\)-Quotient menu.

5.6-2 PqSavePcPresentation
‣ PqSavePcPresentation( i, filename )( function )
‣ PqSavePcPresentation( filename )( function )

for the ith or default interactive ANUPQ process, direct the pq program to save the pc presentation previously computed for the quotient of the group of that process to the file with name filename. If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which GAP was started. A saved file may be restored by PqRestorePcPresentation (see PqRestorePcPresentation (5.6-3)).

Note: For those familiar with the pq program, PqSavePcPresentation performs menu item 2 of the main \(p\)-Quotient menu.

5.6-3 PqRestorePcPresentation
‣ PqRestorePcPresentation( i, filename )( function )
‣ PqRestorePcPresentation( filename )( function )

for the ith or default interactive ANUPQ process, direct the pq program to restore the pc presentation previously saved to filename, by PqSavePcPresentation (see PqSavePcPresentation (5.6-2)). If the first character of the string filename is not /, filename is assumed to be the path of a readable file relative to the directory in which GAP was started.

Note: For those familiar with the pq program, PqRestorePcPresentation performs menu item 3 of the main \(p\)-Quotient menu.

5.6-4 PqNextClass
‣ PqNextClass( i: [QueueFactor] )( function )
‣ PqNextClass( : [QueueFactor] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to calculate the next class of ANUPQData.io[i].group.

PqNextClass accepts the option QueueFactor (see also 6.2) which should be a positive integer if automorphisms have been previously supplied. If the pq program requires a queue factor and none is supplied via the option QueueFactor a default of 15 is taken.

Notes

The single command: PqNextClass(i); is equivalent to executing

PqComputePCover(i);
PqCollectDefiningRelations(i);
PqDoExponentChecks(i);
PqEliminateRedundantGenerators(i);

If the Identities option is set the PqEliminateRedundantGenerators(i); step is essentially replaced by PqEvaluateIdentities(i); (which invokes its own elimination of redundant generators).

For those familiar with the pq program, PqNextClass performs menu item 6 of the main \(p\)-Quotient menu.

5.6-5 PqComputePCover
‣ PqComputePCover( i )( function )
‣ PqComputePCover( )( function )

for the ith or default interactive ANUPQ processi, directi, the pq program to compute the \(p\)-covering group of ANUPQData.io[i].group. In contrast to the function PqPCover (see PqPCover (4.1-3)), this function does not return a GAP pc group.

Notes

The single command: PqComputePCover(i); is equivalent to executing

PqSetupTablesForNextClass(i);
PqTails(i, 0);
PqDoConsistencyChecks(i, 0, 0);
PqEliminateRedundantGenerators(i);

For those familiar with the pq program, PqComputePCover performs menu item 7 of the main \(p\)-Quotient menu.

5.7 Commands from the Advanced \(p\)-Quotient menu

5.7-1 PqCollect
‣ PqCollect( i, word )( function )
‣ PqCollect( word )( function )

for the ith or default interactive ANUPQ process, instruct the pq program to do a collection on word, a word in the current pc generators (the form of word required is described below). PqCollect returns the resulting word of the collection as a list of generator number, exponent pairs (the same form as the second allowed input form of word; see below).

The argument word may be input in either of the following ways:

  1. word may be a string, where the ith pc generator is represented by xi, e.g. "x3*x2^2*x1". This way is quite versatile as parentheses and left-normed commutators -- using square brackets, in the same way as PqGAPRelators (see PqGAPRelators (3.4-2)) -- are permitted; word is checked for correct syntax via PqParseWord (see PqParseWord (3.4-3)).

  2. Otherwise, word must be a list of generator number, exponent pairs of integers, i.e.  each pair represents a "syllable" so that [ [3, 1], [2, 2], [1, 1] ] represents the same word as that of the example given for the first allowed form of word.

Note: For those familiar with the pq program, PqCollect performs menu item 1 of the Advanced \(p\)-Quotient menu.

5.7-2 PqSolveEquation
‣ PqSolveEquation( i, a, b )( function )
‣ PqSolveEquation( a, b )( function )

for the ith or default interactive ANUPQ process, direct the pq program to solve \(\textit{a} * \textit{x} = \textit{b}\) for x, where a and b are words in the pc generators. For the representation of these words see the description of the function PqCollect (PqCollect (5.7-1)).

Note: For those familiar with the pq program, PqSolveEquation performs menu item 2 of the Advanced \(p\)-Quotient menu.

5.7-3 PqCommutator
‣ PqCommutator( i, words, pow )( function )
‣ PqCommutator( words, pow )( function )

for the ith or default interactive ANUPQ process, instruct the pq program to compute the left normed commutator of the list words of words in the current pc generators raised to the integer power pow, and return the resulting word as a list of generator number, exponent pairs. The form required for each word of words is the same as that required for the word argument of PqCollect (see PqCollect (5.7-1)). The form of the output word is also the same as for PqCollect.

Note: For those familiar with the pq program, PqCommutator performs menu item 3 of the Advanced \(p\)-Quotient menu.

5.7-4 PqSetupTablesForNextClass
‣ PqSetupTablesForNextClass( i )( function )
‣ PqSetupTablesForNextClass( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to set up tables for the next class. As as side-effect, after PqSetupTablesForNextClass(i) the value returned by PqPClass(i) will be one more than it was previously.

Note: For those familiar with the pq program, PqSetupTablesForNextClass performs menu item 6 of the Advanced \(p\)-Quotient menu.

5.7-5 PqTails
‣ PqTails( i, weight )( function )
‣ PqTails( weight )( function )

for the ith or default interactive ANUPQ process, direct the pq program to compute and add tails of weight weight if weight is in the integer range [2 .. PqPClass(i)] (assuming i is the number of the process, even in the default case) or for all weights if weight = 0.

If weight is non-zero, then tails that introduce new generators for only weight weight are computed and added, and in this case and if weight < PqPClass(i), it is assumed that the tails that introduce new generators for each weight from PqPClass(i) down to weight weight + 1 have already been added. You may wish to call PqSetMetabelian (see PqSetMetabelian (5.7-16)) prior to calling PqTails.

Notes

For its use in the context of finding the next class see PqNextClass (5.6-4); in particular, a call to PqSetupTablesForNextClass (see PqSetupTablesForNextClass (5.7-4)) needs to have been made prior to calling PqTails.

The single command: PqTails(i, weight); is equivalent to

PqComputeTails(i, weight);
PqAddTails(i, weight);

For those familiar with the pq program, PqTails uses menu item 7 of the Advanced \(p\)-Quotient menu.

5.7-6 PqComputeTails
‣ PqComputeTails( i, weight )( function )
‣ PqComputeTails( weight )( function )

for the ith or default interactive ANUPQ process, direct the pq program to compute tails of weight weight if weight is in the integer range [2 .. PqPClass(i)] (assuming i is the number of the process, even in the default case) or for all weights if weight = 0. See PqTails (PqTails (5.7-5)) for more details.

Note: For those familiar with the pq program, PqComputeTails uses menu item 7 of the Advanced \(p\)-Quotient menu.

5.7-7 PqAddTails
‣ PqAddTails( i, weight )( function )
‣ PqAddTails( weight )( function )

for the ith or default interactive ANUPQ process, direct the pq program to add the tails of weight weight, previously computed by PqComputeTails (see PqComputeTails (5.7-6)), if weight is in the integer range [2 .. PqPClass(i)] (assuming i is the number of the process, even in the default case) or for all weights if weight = 0. See PqTails (PqTails (5.7-5)) for more details.

Note: For those familiar with the pq program, PqAddTails uses menu item 7 of the Advanced \(p\)-Quotient menu.

5.7-8 PqDoConsistencyChecks
‣ PqDoConsistencyChecks( i, weight, type )( function )
‣ PqDoConsistencyChecks( weight, type )( function )

for the ith or default interactive ANUPQ process, do consistency checks for weight weight if weight is in the integer range [3 .. PqPClass(i)] (assuming i is the number of the process) or for all weights if weight = 0, and for type type if type is in the range [1, 2, 3] (see below) or for all types if type = 0. (For its use in the context of finding the next class see PqNextClass (5.6-4).)

The type of a consistency check is defined as follows. PqDoConsistencyChecks(i, weight, type) for weight in [3 .. PqPClass(i)] and the given value of type invokes the equivalent of the following PqDoConsistencyCheck calls (see PqDoConsistencyCheck (5.7-17)):

type = 1:

PqDoConsistencyCheck(i, a, a, a) checks 2 * PqWeight(i, a) + 1 = weight, for pc generators of index a.

type = 2:

PqDoConsistencyCheck(i, b, b, a) checks for pc generators of indices b, a satisfyingx both b > a and PqWeight(i, b) + PqWeight(i, a) + 1 = weight.

type = 3:

PqDoConsistencyCheck(i, c, b, a) checks for pc generators of indices c, b, a satisfying c > b > a and the sum of the weights of these generators equals weight.

Notes

PqWeight(i, j) returns the weight of the jth pc generator, for process i (see PqWeight (5.5-5)).

It is assumed that tails for the given weight (or weights) have already been added (see PqTails (5.7-5)).

For those familiar with the pq program, PqDoConsistencyChecks performs menu item 8 of the Advanced \(p\)-Quotient menu.

5.7-9 PqCollectDefiningRelations
‣ PqCollectDefiningRelations( i )( function )
‣ PqCollectDefiningRelations( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to collect the images of the defining relations of the original fp group of the process, with respect to the current pc presentation, in the context of finding the next class (see PqNextClass (5.6-4)). If the tails operation is not complete then the relations may be evaluated incorrectly.

Note: For those familiar with the pq program, PqCollectDefiningRelations performs menu item 9 of the Advanced \(p\)-Quotient menu.

5.7-10 PqCollectWordInDefiningGenerators
‣ PqCollectWordInDefiningGenerators( i, word )( function )
‣ PqCollectWordInDefiningGenerators( word )( function )

for the ith or default interactive ANUPQ process, take a user-defined word word in the defining generators of the original presentation of the fp or pc group of the process. Each generator is mapped into the current pc presentation, and the resulting word is collected with respect to the current pc presentation. The result of the collection is returned as a list of generator number, exponent pairs.

The word argument may be input in either of the two ways described for PqCollect (see PqCollect (5.7-1)).

Note: For those familiar with the pq program, PqCollectDefiningGenerators performs menu item 23 of the Advanced \(p\)-Quotient menu.

5.7-11 PqCommutatorDefiningGenerators
‣ PqCommutatorDefiningGenerators( i, words, pow )( function )
‣ PqCommutatorDefiningGenerators( words, pow )( function )

for the ith or default interactive ANUPQ process, take a list words of user-defined words in the defining generators of the original presentation of the fp or pc group of the process, and an integer power pow. Each generator is mapped into the current pc presentation. The list words is interpreted as a left-normed commutator which is then raised to pow and collected with respect to the current pc presentation. The result of the collection is returned as a list of generator number, exponent pairs.

Note For those familiar with the pq program, PqCommutatorDefiningGenerators performs menu item 24 of the Advanced \(p\)-Quotient menu.

5.7-12 PqDoExponentChecks
‣ PqDoExponentChecks( i: [Bounds := list] )( function )
‣ PqDoExponentChecks( : [Bounds := list] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to do exponent checks for weights (inclusively) between the bounds of Bounds or for all weights if Bounds is not given. The value list of Bounds (assuming the interactive process is numbered i) should be a list of two integers low, high satisfying \(1 \le \textit{low} \le \textit{high} \le \) PqPClass(i) (see PqPClass (5.5-4)). If no exponent law has been specified, no exponent checks are performed.

Note: For those familiar with the pq program, PqDoExponentChecks performs menu item 10 of the Advanced \(p\)-Quotient menu.

5.7-13 PqEliminateRedundantGenerators
‣ PqEliminateRedundantGenerators( i )( function )
‣ PqEliminateRedundantGenerators( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to eliminate redundant generators of the current \(p\)-quotient.

Note: For those familiar with the pq program, PqEliminateRedundantGenerators performs menu item 11 of the Advanced \(p\)-Quotient menu.

5.7-14 PqRevertToPreviousClass
‣ PqRevertToPreviousClass( i )( function )
‣ PqRevertToPreviousClass( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to abandon the current class and revert to the previous class.

Note: For those familiar with the pq program, PqRevertToPreviousClass performs menu item 12 of the Advanced \(p\)-Quotient menu.

5.7-15 PqSetMaximalOccurrences
‣ PqSetMaximalOccurrences( i, noccur )( function )
‣ PqSetMaximalOccurrences( noccur )( function )

for the ith or default interactive ANUPQ process, direct the pq program to set maximal occurrences of the weight 1 generators in the definitions of pcp generators of the group of the process. This can be used to avoid the definition of generators of which one knows for theoretical reasons that they would be eliminated later on.

The argument noccur must be a list of non-negative integers of length the number of weight 1 generators (i.e. the rank of the class 1 \(p\)-quotient of the group of the process). An entry of 0 for a particular generator indicates that there is no limit on the number of occurrences for the generator.

Note: For those familiar with the pq program, PqSetMaximalOccurrences performs menu item 13 of the Advanced \(p\)-Quotient menu.

5.7-16 PqSetMetabelian
‣ PqSetMetabelian( i )( function )
‣ PqSetMetabelian( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to enforce metabelian-ness.

Note: For those familiar with the pq program, PqSetMetabelian performs menu item 14 of the Advanced \(p\)-Quotient menu.

5.7-17 PqDoConsistencyCheck
‣ PqDoConsistencyCheck( i, c, b, a )( function )
‣ PqDoConsistencyCheck( c, b, a )( function )
‣ PqJacobi( i, c, b, a )( function )
‣ PqJacobi( c, b, a )( function )

for the ith or default interactive ANUPQ process, direct the pq program to do the consistency check for the pc generators with indices c, b, a which should be non-increasing positive integers, i.e. \(\textit{c} \ge \textit{b} \ge \textit{a}\).

There are 3 types of consistency checks:

\[ \begin{array}{rclrl} (a^n)a &=& a(a^n) && {\rm (Type\ 1)} \\ (b^n)a &=& b^{(n-1)}(ba), b(a^n) = (ba)a^{(n-1)} && {\rm (Type\ 2)} \\ c(ba) &=& (cb)a && {\rm (Type\ 3)} \\ \end{array} \]

The reason some people talk about Jacobi relations instead of consistency checks becomes clear when one looks at the consistency check of type 3:

\[ \begin{array}{rcl} c(ba) &=& a c[c,a] b[b,a] = acb [c,a][c,a,b][b,a] = \dots \\ (cb)a &=& b c[c,b] a = a b[b,a] c[c,a] [c,b][c,b,a] \\ &=& abc [b,a] [b,a,c] [c,a] [c,b] [c,b,a] = \dots \\ \end{array} \]

Each collection would normally carry on further. But one can see already that no other commutators of weight 3 will occur. After all terms of weight one and weight two have been moved to the left we end up with:

\[ \begin{array}{rcl} & &abc [b,a] [c,a] [c,b] [c,a,b] \dots \\ &=&abc [b,a] [c,a] [c,b] [c,b,a] [b,a,c] \dots \\ \end{array} \]

Modulo terms of weight 4 this is equivalent to

\[ [c,a,b] [b,c,a] [a,b,c] = 1 \]

which is the Jacobi identity.

See also PqDoConsistencyChecks (PqDoConsistencyChecks (5.7-8)).

Note: For those familiar with the pq program, PqDoConsistencyCheck and PqJacobi perform menu item 15 of the Advanced \(p\)-Quotient menu.

5.7-18 PqCompact
‣ PqCompact( i )( function )
‣ PqCompact( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to do a compaction of its work space. This function is safe to perform only at certain points in time.

Note: For those familiar with the pq program, PqCompact performs menu item 16 of the Advanced \(p\)-Quotient menu.

5.7-19 PqEchelonise
‣ PqEchelonise( i )( function )
‣ PqEchelonise( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to echelonise the word most recently collected by PqCollect or PqCommutator against the relations of the current pc presentation, and return the number of the generator made redundant or fail if no generator was made redundant. A call to PqCollect (see PqCollect (5.7-1)) or PqCommutator (see PqCommutator (5.7-3)) needs to be performed prior to using this command.

Note: For those familiar with the pq program, PqEchelonise performs menu item 17 of the Advanced \(p\)-Quotient menu.

5.7-20 PqSupplyAutomorphisms
‣ PqSupplyAutomorphisms( i, mlist )( function )
‣ PqSupplyAutomorphisms( mlist )( function )

for the ith or default interactive ANUPQ process, supply the automorphism data provided by the list mlist of matrices with non-negative integer coefficients. Each matrix in mlist describes one automorphism in the following way.

  • The rows of each matrix correspond to the pc generators of weight one.

  • Each row is the exponent vector of the image of the corresponding weight one generator under the respective automorphism.

Note: For those familiar with the pq program, PqSupplyAutomorphisms uses menu item 18 of the Advanced \(p\)-Quotient menu.

5.7-21 PqExtendAutomorphisms
‣ PqExtendAutomorphisms( i )( function )
‣ PqExtendAutomorphisms( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to extend automorphisms of the \(p\)-quotient of the previous class to the \(p\)-quotient of the present class.

Note: For those familiar with the pq program, PqExtendAutomorphisms uses menu item 18 of the Advanced \(p\)-Quotient menu.

5.7-22 PqApplyAutomorphisms
‣ PqApplyAutomorphisms( i, qfac )( function )
‣ PqApplyAutomorphisms( qfac )( function )

for the ith or default interactive ANUPQ process, direct the pq program to apply automorphisms; qfac is the queue factor e.g. 15.

Note: For those familiar with the pq program, PqCloseRelations performs menu item 19 of the Advanced \(p\)-Quotient menu.

5.7-23 PqDisplayStructure
‣ PqDisplayStructure( i: [Bounds := list] )( function )
‣ PqDisplayStructure( : [Bounds := list] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to display the structure for the pcp generators numbered (inclusively) between the bounds of Bounds or for all generators if Bounds is not given. The value list of Bounds (assuming the interactive process is numbered i) should be a list of two integers low, high satisfying \(1 \le \textit{low} \le \textit{high} \le \) PqNrPcGenerators(i) (see PqNrPcGenerators (5.5-1)). PqDisplayStructure also accepts the option OutputLevel (see 6.2).

Explanation of output

New generators are defined as commutators of previous generators and generators of class 1 or as \(p\)-th powers of generators that have themselves been defined as \(p\)-th powers. A generator is never defined as \(p\)-th power of a commutator.

Therefore, there are two cases: all the numbers on the righthand side are either the same or they differ. Below, gi refers to the ith defining generator.

  • If the righthand side numbers are all the same, then the generator is a \(p\)-th power (of a \(p\)-th power of a \(p\)-th power, etc.). The number of repeated digits say how often a \(p\)-th power has to be taken.

    In the following example, the generator number 31 is the eleventh power of generator 17 which in turn is an eleventh power and so on:

    \begintt #I 31 is defined on 17^11 = 1 1 1 1 1 \endtt So generator 31 is obtained by taking the eleventh power of generator 1 five times.

  • If the numbers are not all the same, the generator is defined by a commutator. If the first two generator numbers differ, the generator is defined as a left-normed commutator of the weight one generators, e.g.

    \begintt #I 19 is defined on [11, 1] = 2 1 1 1 1 \endtt Here, generator 19 is defined as the commutator of generator 11 and generator 1 which is the same as the left-normed commutator [x2, x1, x1, x1, x1]. One can check this by tracing back the definition of generator 11 until one gets to a generator of class 1.

  • If the first two generator numbers are identical, then the left most component of the left-normed commutator is a \(p\)-th power, e.g.

    \begintt #I 25 is defined on [14, 1] = 1 1 2 1 1 \endtt

    In this example, generator 25 is defined as commutator of generator 14 and generator 1. The left-normed commutator is

    \[ [(x1^{11})^{11}, x2, x1, x1] \]

    Again, this can be verified by tracing back the definitions.

Note: For those familiar with the pq program, PqDisplayStructure performs menu item 20 of the Advanced \(p\)-Quotient menu.

5.7-24 PqDisplayAutomorphisms
‣ PqDisplayAutomorphisms( i: [Bounds := list] )( function )
‣ PqDisplayAutomorphisms( : [Bounds := list] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to display the automorphism actions on the pcp generators numbered (inclusively) between the bounds of Bounds or for all generators if Bounds is not given. The value list of Bounds (assuming the interactive process is numbered i) should be a list of two integers low, high satisfying \(1 \le \textit{low} \le \textit{high} \le \) PqNrPcGenerators(i) (see PqNrPcGenerators (5.5-1)). PqDisplayStructure also accepts the option OutputLevel (see 6.2).

Note: For those familiar with the pq program, PqDisplayAutomorphisms performs menu item 21 of the Advanced \(p\)-Quotient menu.

5.7-25 PqWritePcPresentation
‣ PqWritePcPresentation( i, filename )( function )
‣ PqWritePcPresentation( filename )( function )

for the ith or default interactive ANUPQ process, direct the pq program to write a pc presentation of a previously-computed quotient of the group of that process, to the file with name filename. Here the group of a process is the one given as first argument when PqStart was called to initiate that process (for process i the group is stored as ANUPQData.io[i].group). If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which GAP was started. If a pc presentation has not been previously computed by the pq program, then pq is called to compute it first, effectively invoking PqPcPresentation (see PqPcPresentation (5.6-1)).

Note: For those familiar with the pq program, PqPcWritePresentation performs menu item 25 of the Advanced \(p\)-Quotient menu.

5.8 Commands from the Standard Presentation menu

5.8-1 PqSPComputePcpAndPCover
‣ PqSPComputePcpAndPCover( i: options )( function )
‣ PqSPComputePcpAndPCover( : options )( function )

for the ith or default interactive ANUPQ process, directs the pq program to compute for the group of that process a pc presentation up to the \(p\)-quotient of maximum class or the value of the option ClassBound and the \(p\)-cover of that quotient, and sets up tabular information required for computation of a standard presentation. Here the group of a process is the one given as first argument when PqStart was called to initiate that process (for process i the group is stored as ANUPQData.io[i].group).

The possible options are Prime, ClassBound, Relators, Exponent, Metabelian and OutputLevel (see Chapter ANUPQ Options for detailed descriptions of these options). The option Prime is normally determined via PrimePGroup, and so is not required unless the group doesn't know it's a \(p\)-group and HasPrimePGroup returns false.

Note: For those familiar with the pq program, PqSPComputePcpAndPCover performs option 1 of the Standard Presentation menu.

5.8-2 PqSPStandardPresentation
‣ PqSPStandardPresentation( i[, mlist]: [options] )( function )
‣ PqSPStandardPresentation( [mlist]: [options] )( function )

for the ith or default interactive ANUPQ process, inputs data given by options to compute a standard presentation for the group of that process. If argument mlist is given it is assumed to be the automorphism group data required. Otherwise it is assumed that a call to either Pq (see Pq (5.3-1)) or PqEpimorphism (see PqEpimorphism (5.3-2)) has generated a \(p\)-quotient and that GAP can compute its automorphism group from which the necessary automorphism group data can be derived. The group of the process is the one given as first argument when PqStart was called to initiate the process (for process i the group is stored as ANUPQData.io[i].group and the \(p\)-quotient if existent is stored as ANUPQData.io[i].pQuotient). If mlist is not given and a \(p\)-quotient of the group has not been previously computed a class 1 \(p\)-quotient is computed.

PqSPStandardPresentation accepts three options, all optional:

  • ClassBound := n

  • PcgsAutomorphisms

  • StandardPresentationFile := filename

If ClassBound is omitted it defaults to 63.

Detailed descriptions of the above options may be found in Chapter ANUPQ Options.

Note: For those familiar with the pq program, PqSPPcPresentation performs menu item 2 of the Standard Presentation menu.

5.8-3 PqSPSavePresentation
‣ PqSPSavePresentation( i, filename )( function )
‣ PqSPSavePresentation( filename )( function )

for the ith or default interactive ANUPQ process, directs the pq program to save the standard presentation previously computed for the group of that process to the file with name filename, where the group of a process is the one given as first argument when PqStart was called to initiate that process. If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which GAP was started.

Note: For those familiar with the pq program, PqSPSavePresentation performs menu item 3 of the Standard Presentation menu.

5.8-4 PqSPCompareTwoFilePresentations
‣ PqSPCompareTwoFilePresentations( i, f1, f2 )( function )
‣ PqSPCompareTwoFilePresentations( f1, f2 )( function )

for the ith or default interactive ANUPQ process, direct the pq program to compare the presentations in the files with names f1 and f2 and returns true if they are identical and false otherwise. For each of the strings f1 and f2, if the first character is not a / then it is assumed to be the path of a readable file relative to the directory in which GAP was started.

Notes

The presentations in files f1 and f2 must have been generated by the pq program but they do not need to be standard presentations. If If the presentations in files f1 and f2 have been generated by PqSPStandardPresentation (see PqSPStandardPresentation (5.8-2)) then a false response from PqSPCompareTwoFilePresentations says the groups defined by those presentations are not isomorphic.

For those familiar with the pq program, PqSPCompareTwoFilePresentations performs menu item 6 of the Standard Presentation menu.

5.8-5 PqSPIsomorphism
‣ PqSPIsomorphism( i )( function )
‣ PqSPIsomorphism( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to compute the isomorphism mapping from the \(p\)-group of the process to its standard presentation. This function provides a description only; for a GAP object, use EpimorphismStandardPresentation (see EpimorphismStandardPresentation (5.3-5)).

Note: For those familiar with the pq program, PqSPIsomorphism performs menu item 8 of the Standard Presentation menu.

5.9 Commands from the Main \(p\)-Group Generation menu

Note that the \(p\)-group generation commands can only be applied once the pq program has produced a pc presentation of some quotient group of the "group of the process".

5.9-1 PqPGSupplyAutomorphisms
‣ PqPGSupplyAutomorphisms( i[, mlist]: options )( function )
‣ PqPGSupplyAutomorphisms( [mlist]: options )( function )

for the ith or default interactive ANUPQ process, supply the pq program with the automorphism group data needed for the current quotient of the group of that process (for process i the group is stored as ANUPQData.io[i].group). For a description of the format of mlist see PqSupplyAutomorphisms (5.7-20). The options possible are NumberOfSolubleAutomorphisms and RelativeOrders. (Detailed descriptions of these options may be found in Chapter ANUPQ Options.)

If mlist is omitted, the automorphism data is determined from the group of the process which must have been a \(p\)-group in pc presentation.

Note: For those familiar with the pq program, PqPGSupplyAutomorphisms performs menu item 1 of the main \(p\)-Group Generation menu.

5.9-2 PqPGExtendAutomorphisms
‣ PqPGExtendAutomorphisms( i )( function )
‣ PqPGExtendAutomorphisms( )( function )

for the ith or default interactive ANUPQ process, direct the pq program to compute the extensions of the automorphisms of the \(p\)-quotient of the previous class to the \(p\)-quotient of the current class. You may wish to set the InfoLevel of InfoANUPQ to 2 (or more) in order to see the output from the pq program (see InfoANUPQ (3.3-1)).

Note: For those familiar with the pq program, PqPGExtendAutomorphisms performs menu item 2 of the main or advanced \(p\)-Group Generation menu.

5.9-3 PqPGConstructDescendants
‣ PqPGConstructDescendants( i: options )( function )
‣ PqPGConstructDescendants( : options )( function )

for the ith or default interactive ANUPQ process, direct the pq program to construct descendants prescribed by options, and return the number of descendants constructed (compare function PqDescendants (4.4-1) which returns the list of descendants). The options possible are ClassBound, OrderBound, StepSize, PcgsAutomorphisms, RankInitialSegmentSubgroups, SpaceEfficient, CapableDescendants, AllDescendants, Exponent, Metabelian, BasicAlgorithm, CustomiseOutput. (Detailed descriptions of these options may be found in Chapter ANUPQ Options.)

PqPGConstructDescendants requires that the pq program has previously computed a pc presentation and a \(p\)-cover for a \(p\)-quotient of some class of the group of the process.

Note: For those familiar with the pq program, PqPGConstructDescendants performs menu item 5 of the main \(p\)-Group Generation menu.

5.9-4 PqPGSetDescendantToPcp
‣ PqPGSetDescendantToPcp( i, cls, n )( function )
‣ PqPGSetDescendantToPcp( cls, n )( function )
‣ PqPGSetDescendantToPcp( i: [Filename := name] )( function )
‣ PqPGSetDescendantToPcp( : [Filename := name] )( function )
‣ PqPGRestoreDescendantFromFile( i, cls, n )( function )
‣ PqPGRestoreDescendantFromFile( cls, n )( function )
‣ PqPGRestoreDescendantFromFile( i: [Filename := name] )( function )
‣ PqPGRestoreDescendantFromFile( : [Filename := name] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to restore group n of class cls from a temporary file, where cls and n are positive integers, or the group stored in name. PqPGSetDescendantToPcp and PqPGRestoreDescendantFromFile are synonyms; they make sense only after a prior call to construct descendants by say PqPGConstructDescendants (see PqPGConstructDescendants (5.9-3)) or the interactive PqDescendants (see PqDescendants (5.3-6)). In the Filename option forms, the option defaults to the last filename in which a presentation was stored by the pq program.

Notes

Since the PqPGSetDescendantToPcp and PqPGRestoreDescendantFromFile are intended to be used in calculation of further descendants the pq program computes the \(p\)-cover of the restored descendant. Hence, PqCurrentGroup used immediately after one of these commands returns the \(p\)-cover of the restored descendant rather than the descendant itself.

For those familiar with the pq program, PqPGSetDescendantToPcp and PqPGRestoreDescendantFromFile perform menu item 3 of the main or advanced \(p\)-Group Generation menu.

5.10 Commands from the Advanced \(p\)-Group Generation menu

The functions below perform the component algorithms of PqPGConstructDescendants (see PqPGConstructDescendants (5.9-3)). You can get some idea of their usage by trying PqExample("Nott-APG-Rel-i");. You can get some idea of the breakdown of PqPGConstructDescendants into these functions by comparing the previous output with PqExample("Nott-PG-Rel-i");.

These functions are intended for use only by "experts"; please contact the authors of the package if you genuinely have a need for them and need any amplified descriptions.

5.10-1 PqAPGDegree
‣ PqAPGDegree( i, step, rank: [Exponent := n] )( function )
‣ PqAPGDegree( step, rank: [Exponent := n] )( function )

for the ith or default interactive ANUPQ process, direct the pq program to invoke menu item 6 of the Advanced \(p\)-Group Generation menu. Here the step-size step and the rank rank are positive integers and are the arguments required by the pq program. See 6.2 for the one recognised option Exponent.

5.10-2 PqAPGPermutations
‣ PqAPGPermutations( i: options )( function )
‣ PqAPGPermutations( : options )( function )

for the ith or default interactive ANUPQ process, direct the pq program to perform menu item 7 of the Advanced \(p\)-Group Generation menu. Here the options options recognised are PcgsAutomorphisms, SpaceEfficient, PrintAutomorphisms and PrintPermutations (see Chapter ANUPQ Options for details).

5.10-3 PqAPGOrbits
‣ PqAPGOrbits( i: options )( function )
‣ PqAPGOrbits( : options )( function )

for the ith or default interactive ANUPQ process, direct the pq to perform menu item 8 of the Advanced \(p\)-Group Generation menu.

Here the options options recognised are PcgsAutomorphisms, SpaceEfficient and CustomiseOutput (see Chapter ANUPQ Options for details). For the CustomiseOutput option only the setting of the orbit is recognised (all other fields if set are ignored).

5.10-4 PqAPGOrbitRepresentatives
‣ PqAPGOrbitRepresentatives( i: options )( function )
‣ PqAPGOrbitRepresentatives( : options )( function )

for the ith or default interactive ANUPQ process, direct the pq to perform item 9 of the Advanced \(p\)-Group Generation menu.

The options options may be any selection of the following: PcgsAutomorphisms, SpaceEfficient, Exponent, Metabelian, CapableDescendants (or AllDescendants), CustomiseOutput (where only the group and autgroup fields are recognised) and Filename (see Chapter ANUPQ Options for details). If Filename is omitted the reduced \(p\)-cover is written to the file "redPCover" in the temporary directory whose name is stored in ANUPQData.tmpdir.

5.10-5 PqAPGSingleStage
‣ PqAPGSingleStage( i: options )( function )
‣ PqAPGSingleStage( : options )( function )

for the ith or default interactive ANUPQ process, direct the pq to perform option 5 of the Advanced \(p\)-Group Generation menu.

The possible options are StepSize, PcgsAutomorphisms, RankInitialSegmentSubgroups, SpaceEfficient, CapableDescendants, AllDescendants, Exponent, Metabelian, BasicAlgorithm and CustomiseOutput. (Detailed descriptions of these options may be found in Chapter ANUPQ Options.)

5.11 Primitive Interactive ANUPQ Process Read/Write Functions

For those familiar with using the pq program as a standalone we provide primitive read/write tools to communicate directly with an interactive ANUPQ process, started via PqStart. For the most part, it is up to the user to translate the output strings from pq program into a form useful in GAP.

5.11-1 PqRead
‣ PqRead( i )( function )
‣ PqRead( )( function )

read a complete line of ANUPQ output, from the ith or default interactive ANUPQ process, if there is output to be read and returns fail otherwise. When successful, the line is returned as a string complete with trailing newline, colon, or question-mark character. Please note that it is possible to be "too quick" (i.e. the return can be fail purely because the output from ANUPQ is not there yet), but if PqRead finds any output at all, it waits for a complete line. PqRead also writes the line read via Info at InfoANUPQ level 2. It doesn't try to distinguish banner and menu output from other output of the pq program.

5.11-2 PqReadAll
‣ PqReadAll( i )( function )
‣ PqReadAll( )( function )

read and return as many complete lines of ANUPQ output, from the ith or default interactive ANUPQ process, as there are to be read, at the time of the call, as a list of strings with any trailing newlines removed and returns the empty list otherwise. PqReadAll also writes each line read via Info at InfoANUPQ level 2. It doesn't try to distinguish banner and menu output from other output of the pq program. Whenever PqReadAll finds only a partial line, it waits for the complete line, thus increasing the probability that it has captured all the output to be had from ANUPQ.

5.11-3 PqReadUntil
‣ PqReadUntil( i, IsMyLine )( function )
‣ PqReadUntil( IsMyLine )( function )
‣ PqReadUntil( i, IsMyLine, Modify )( function )
‣ PqReadUntil( IsMyLine, Modify )( function )

read complete lines of ANUPQ output, from the ith or default interactive ANUPQ process, "chomps" them (i.e. removes any trailing newline character), emits them to Info at InfoANUPQ level 2 (without trying to distinguish banner and menu output from other output of the pq program), and applies the function Modify (where Modify is just the identity map/function for the first two forms) until a "chomped" line line for which IsMyLine( Modify(line) ) is true. PqReadUntil returns the list of Modify-ed "chomped" lines read.

Notes: When provided by the user, Modify should be a function that accepts a single string argument.

IsMyLine should be a function that is able to accept the output of Modify (or take a single string argument when Modify is not provided) and should return a boolean.

If IsMyLine( Modify(line) ) is never true, PqReadUntil will wait indefinitely.

5.11-4 PqWrite
‣ PqWrite( i, string )( function )
‣ PqWrite( string )( function )

write string to the ith or default interactive ANUPQ process; string must be in exactly the form the ANUPQ standalone expects. The command is echoed via Info at InfoANUPQ level 3 (with a "ToPQ> " prompt); i.e. do SetInfoLevel(InfoANUPQ, 3); to see what is transmitted to the pq program. PqWrite returns true if successful in writing to the stream of the interactive ANUPQ process, and fail otherwise.

Note: If PqWrite returns fail it means that the ANUPQ process has died.

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/toggless.js000644 000766 000024 00000004205 14355420744 016073 0ustar00mhornstaff000000 000000 /* toggless.js Frank Lübeck */ /* this file contains two functions: mergeSideTOCHooks: this changes div.ContSect elements to the class ContSectClosed and includes a hook to toggle between ContSectClosed and ContSectOpen. openclosetoc: this function does the toggling, the rest is done by CSS */ closedTOCMarker = "▶ "; openTOCMarker = "▼ "; noTOCMarker = " "; /* merge hooks into side toc for opening/closing subsections with openclosetoc */ function mergeSideTOCHooks() { var hlist = document.getElementsByTagName("div"); for (var i = 0; i < hlist.length; i++) { if (hlist[i].className == "ContSect") { var chlds = hlist[i].childNodes; var el = document.createElement("span"); var oncl = document.createAttribute("class"); oncl.nodeValue = "toctoggle"; el.setAttributeNode(oncl); var cont; if (chlds.length > 2) { var oncl = document.createAttribute("onclick"); oncl.nodeValue = "openclosetoc(event)"; el.setAttributeNode(oncl); cont = document.createTextNode(closedTOCMarker); } else { cont = document.createTextNode(noTOCMarker); } el.appendChild(cont); hlist[i].firstChild.insertBefore(el, hlist[i].firstChild.firstChild); hlist[i].className = "ContSectClosed"; } } } function openclosetoc (event) { /* first two steps to make it work in most browsers */ var evt=window.event || event; if (!evt.target) evt.target=evt.srcElement; var markClosed = document.createTextNode(closedTOCMarker); var markOpen = document.createTextNode(openTOCMarker); var par = evt.target.parentNode.parentNode; if (par.className == "ContSectOpen") { par.className = "ContSectClosed"; evt.target.replaceChild(markClosed, evt.target.firstChild); } else if (par.className == "ContSectClosed") { par.className = "ContSectOpen"; evt.target.replaceChild(markOpen, evt.target.firstChild); } } /* adjust jscontent which is called onload */ jscontentfuncs.push(mergeSideTOCHooks); anupq-3.3.0/doc/chapA.txt000644 000766 000024 00000130211 14355420737 015462 0ustar00mhornstaff000000 000000 A Examples There are a large number of examples provided with the ANUPQ package. These may be executed or displayed via the function PqExample (see PqExample (3.4-4)). Each example resides in a file of the same name in the directory examples. Most of the examples are translations to GAP of examples provided for the pq standalone by Eamonn O'Brien; the standalone examples are found in directories standalone/examples (p-quotient and p-group generation examples) and standalone/isom (standard presentation examples). The first line of each example indicates its origin. All the examples seen in earlier chapters of this manual are also available as examples, in a slightly modified form (the example which one can run in order to see something very close to the text example live is always indicated near -- usually immediately after -- the text example). The format of the (PqExample) examples is such that they can be read by the standard Read function of GAP, but certain features and comments are interpreted by the function PqExample to do somewhat more than Read does. In particular, any function without a -i, -ni or .g suffix has both a non-interactive and interactive form; in these cases, the default form is the non-interactive form, and giving PqStart as second argument generates the interactive form. Running PqExample without an argument or with a non-existent example Infos the available examples and some hints on usage:  Example  gap> PqExample(); #I PqExample Index (Table of Contents) #I ----------------------------------- #I This table of possible examples is displayed when calling `PqExample' #I with no arguments, or with the argument: "index" (meant in the sense #I of ``list''), or with a non-existent example name. #I  #I Examples that have a name ending in `-ni' are non-interactive only. #I Examples that have a name ending in `-i' are interactive only. #I Examples with names ending in `.g' also have only one form. Other #I examples have both a non-interactive and an interactive form; call #I `PqExample' with 2nd argument `PqStart' to get the interactive form #I of the example. The substring `PG' in an example name indicates a #I p-Group Generation example, `SP' indicates a Standard Presentation #I example, `Rel' indicates it uses the `Relators' option, and `Id' #I indicates it uses the `Identities' option. #I  #I The following ANUPQ examples are available: #I  #I p-Quotient examples: #I general: #I "Pq" "Pq-ni" "PqEpimorphism"  #I "PqPCover" "PqSupplementInnerAutomorphisms" #I 2-groups: #I "2gp-Rel" "2gp-Rel-i" "2gp-a-Rel-i" #I "B2-4" "B2-4-Id" "B2-8-i" #I "B4-4-i" "B4-4-a-i" "B5-4.g" #I 3-groups: #I "3gp-Rel-i" "3gp-a-Rel" "3gp-a-Rel-i" #I "3gp-a-x-Rel-i" "3gp-maxoccur-Rel-i" #I 5-groups: #I "5gp-Rel-i" "5gp-a-Rel-i" "5gp-b-Rel-i" #I "5gp-c-Rel-i" "5gp-metabelian-Rel-i" "5gp-maxoccur-Rel-i" #I "F2-5-i" "B2-5-i" "R2-5-i" #I "R2-5-x-i" "B5-5-Engel3-Id" #I 7-groups: #I "7gp-Rel-i" #I 11-groups: #I "11gp-i" "11gp-Rel-i" "11gp-a-Rel-i" #I "11gp-3-Engel-Id" "11gp-3-Engel-Id-i" #I  #I p-Group Generation examples: #I general: #I "PqDescendants-1" "PqDescendants-2" "PqDescendants-3" #I "PqDescendants-1-i" #I 2-groups: #I "2gp-PG-i" "2gp-PG-2-i" "2gp-PG-3-i" #I "2gp-PG-4-i" "2gp-PG-e4-i" #I "PqDescendantsTreeCoclassOne-16-i" #I 3-groups: #I "3gp-PG-i" "3gp-PG-4-i" "3gp-PG-x-i" #I "3gp-PG-x-1-i" "PqDescendants-treetraverse-i" #I "PqDescendantsTreeCoclassOne-9-i" #I 5-groups: #I "5gp-PG-i" "Nott-PG-Rel-i" "Nott-APG-Rel-i" #I "PqDescendantsTreeCoclassOne-25-i" #I 7,11-groups: #I "7gp-PG-i" "11gp-PG-i" #I  #I Standard Presentation examples: #I general: #I "StandardPresentation" "StandardPresentation-i" #I "EpimorphismStandardPresentation" #I "EpimorphismStandardPresentation-i" "IsIsomorphicPGroup-ni" #I 2-groups: #I "2gp-SP-Rel-i" "2gp-SP-1-Rel-i" "2gp-SP-2-Rel-i" #I "2gp-SP-3-Rel-i" "2gp-SP-4-Rel-i" "2gp-SP-d-Rel-i" #I "gp-256-SP-Rel-i" "B2-4-SP-i" "G2-SP-Rel-i" #I 3-groups: #I "3gp-SP-Rel-i" "3gp-SP-1-Rel-i" "3gp-SP-2-Rel-i" #I "3gp-SP-3-Rel-i" "3gp-SP-4-Rel-i" "G3-SP-Rel-i" #I 5-groups: #I "5gp-SP-Rel-i" "5gp-SP-a-Rel-i" "5gp-SP-b-Rel-i" #I "5gp-SP-big-Rel-i" "5gp-SP-d-Rel-i" "G5-SP-Rel-i" #I "G5-SP-a-Rel-i" "Nott-SP-Rel-i" #I 7-groups: #I "7gp-SP-Rel-i" "7gp-SP-a-Rel-i" "7gp-SP-b-Rel-i" #I 11-groups: #I "11gp-SP-a-i" "11gp-SP-a-Rel-i" "11gp-SP-a-Rel-1-i" #I "11gp-SP-b-i" "11gp-SP-b-Rel-i" "11gp-SP-c-Rel-i" #I  #I Notes #I ----- #I 1. The example (first) argument of `PqExample' is a string; each #I example above is in double quotes to remind you to include them. #I 2. Some examples accept options. To find out whether a particular #I example accepts options, display it first (by including `Display' #I as last argument) which will also indicate how `PqExample' #I interprets the options, e.g. `PqExample("11gp-SP-a-i", Display);'. #I 3. Try `SetInfoLevel(InfoANUPQ, );' for some in [2 .. 4] #I before calling PqExample, to see what's going on behind the scenes. #I   If on your terminal you are unable to scroll back, an alternative to typing PqExample(); to see the displayed examples is to use on-line help, i.e.  you may type:  Example  gap> ?anupq:examples  which will display this appendix in a GAP session. If you are not fussed about the order in which the examples are organised, AllPqExamples(); lists the available examples relatively compactly (see AllPqExamples (3.4-5)). In the remainder of this appendix we will discuss particular aspects related to the Relators (see 6.2) and Identities (see 6.2) options, and the construction of the Burnside group B(5, 4). A.1 The Relators Option The Relators option was included because computations involving words containing commutators that are pre-expanded by GAP before being passed to the pq program may run considerably more slowly, than the same computations being run with GAP pre-expansions avoided. The following examples demonstrate a case where the performance hit due to pre-expansion of commutators by GAP is a factor of order 100 (in order to see timing information from the pq program, we set the InfoANUPQ level to 2). Firstly, we run the example that allows pre-expansion of commutators (the function PqLeftNormComm is provided by the ANUPQ package; see PqLeftNormComm (3.4-1)). Note that since the two commutators of this example are very long (taking more than an page to print), we have edited the output at this point.  Example  gap> SetInfoLevel(InfoANUPQ, 2); #to see timing information gap> PqExample("11gp-i"); #I #Example: "11gp-i" . . . based on: examples/11gp #I F, a, b, c, R, procId are local to `PqExample' gap> F := FreeGroup("a", "b", "c"); a := F.1; b := F.2; c := F.3;  a b c gap> R := [PqLeftNormComm([b, a, a, b, c])^11,  >  PqLeftNormComm([a, b, b, a, b, c])^11, (a * b)^11];; gap> procId := PqStart(F/R : Prime := 11); 1 gap> PqPcPresentation(procId : ClassBound := 7,  >  OutputLevel := 1); #I Lower exponent-11 central series for [grp] #I Group: [grp] to lower exponent-11 central class 1 has order 11^3 #I Group: [grp] to lower exponent-11 central class 2 has order 11^8 #I Group: [grp] to lower exponent-11 central class 3 has order 11^19 #I Group: [grp] to lower exponent-11 central class 4 has order 11^42 #I Group: [grp] to lower exponent-11 central class 5 has order 11^98 #I Group: [grp] to lower exponent-11 central class 6 has order 11^228 #I Group: [grp] to lower exponent-11 central class 7 has order 11^563 #I Computation of presentation took 27.04 seconds gap> PqSavePcPresentation(procId, ANUPQData.outfile); #I Variables used in `PqExample' are saved in `ANUPQData.example.vars'.  Now we do the same calculation using the Relators option. In this way, the commutators are passed directly as strings to the pq program, so that GAP does not see them and pre-expand them.  Example  gap> PqExample("11gp-Rel-i"); #I #Example: "11gp-Rel-i" . . . based on: examples/11gp #I #(equivalent to "11gp-i" example but uses `Relators' option) #I F, rels, procId are local to `PqExample' gap> F := FreeGroup("a", "b", "c");  gap> rels := ["[b, a, a, b, c]^11", "[a, b, b, a, b, c]^11", "(a * b)^11"]; [ "[b, a, a, b, c]^11", "[a, b, b, a, b, c]^11", "(a * b)^11" ] gap> procId := PqStart(F : Prime := 11, Relators := rels); 2 gap> PqPcPresentation(procId : ClassBound := 7,  >  OutputLevel := 1); #I Relators parsed ok. #I Lower exponent-11 central series for [grp] #I Group: [grp] to lower exponent-11 central class 1 has order 11^3 #I Group: [grp] to lower exponent-11 central class 2 has order 11^8 #I Group: [grp] to lower exponent-11 central class 3 has order 11^19 #I Group: [grp] to lower exponent-11 central class 4 has order 11^42 #I Group: [grp] to lower exponent-11 central class 5 has order 11^98 #I Group: [grp] to lower exponent-11 central class 6 has order 11^228 #I Group: [grp] to lower exponent-11 central class 7 has order 11^563 #I Computation of presentation took 0.27 seconds gap> PqSavePcPresentation(procId, ANUPQData.outfile); #I Variables used in `PqExample' are saved in `ANUPQData.example.vars'.  A.2 The Identities Option and PqEvaluateIdentities Function Please pay heed to the warnings given for the Identities option (see 6.2); it is written mainly at the GAP level and is not particularly optimised. The Identities option allows one to compute p-quotients that satisfy an identity. A trivial example better done using the Exponent option, but which nevertheless demonstrates the usage of the Identities option, is as follows:  Example  gap> SetInfoLevel(InfoANUPQ, 1); gap> PqExample("B2-4-Id"); #I #Example: "B2-4-Id" . . . alternative way to generate B(2, 4) #I #Generates B(2, 4) by using the `Identities' option #I #... this is not as efficient as using `Exponent' but #I #demonstrates the usage of the `Identities' option. #I F, f, procId are local to `PqExample' gap> F := FreeGroup("a", "b");  gap> # All words w in the pc generators of B(2, 4) satisfy f(w) = 1  gap> f := w -> w^4; function( w ) ... end gap> Pq( F : Prime := 2, Identities := [ f ] ); #I Class 1 with 2 generators. #I Class 2 with 5 generators. #I Class 3 with 7 generators. #I Class 4 with 10 generators. #I Class 5 with 12 generators. #I Class 5 with 12 generators.  #I Variables used in `PqExample' are saved in `ANUPQData.example.vars'. gap> time;  1400  Note that the time statement gives the time in milliseconds spent by GAP in executing the PqExample("B2-4-Id"); command (i.e. everything up to the Info-ing of the variables used), but over 90% of that time is spent in the final Pq statement. The time spent by the pq program, which is negligible anyway (you can check this by running the example while the InfoANUPQ level is set to 2), is not counted by time. Since the identity used in the above construction of B(2, 4) is just an exponent law, the right way to compute it is via the Exponent option (see 6.2), which is implemented at the C level and is highly optimised. Consequently, the Exponent option is significantly faster, generally by several orders of magnitude:  Example  gap> SetInfoLevel(InfoANUPQ, 2); # to see time spent by the `pq' program gap> PqExample("B2-4"); #I #Example: "B2-4" . . . the ``right'' way to generate B(2, 4) #I #Generates B(2, 4) by using the `Exponent' option #I F, procId are local to `PqExample' gap> F := FreeGroup("a", "b");  gap> Pq( F : Prime := 2, Exponent := 4 ); #I Computation of presentation took 0.00 seconds  #I Variables used in `PqExample' are saved in `ANUPQData.example.vars'. gap> time; # time spent by GAP in executing `PqExample("B2-4");'  50  The following example uses the Identities option to compute a 3-Engel group for the prime 11. As is the case for the example "B2-4-Id", the example has both a non-interactive and an interactive form; below, we demonstrate the interactive form.  Example  gap> SetInfoLevel(InfoANUPQ, 1); # reset InfoANUPQ to default level gap> PqExample("11gp-3-Engel-Id", PqStart); #I #Example: "11gp-3-Engel-Id" . . . 3-Engel group for prime 11 #I #Non-trivial example of using the `Identities' option #I F, a, b, G, f, procId, Q are local to `PqExample' gap> F := FreeGroup("a", "b"); a := F.1; b := F.2;  a b gap> G := F/[ a^11, b^11 ];  gap> # All word pairs u, v in the pc generators of the 11-quotient Q of G  gap> # must satisfy the Engel identity: [u, v, v, v] = 1. gap> f := function(u, v) return PqLeftNormComm( [u, v, v, v] ); end; function( u, v ) ... end gap> procId := PqStart( G ); 3 gap> Q := Pq( procId : Prime := 11, Identities := [ f ] ); #I Class 1 with 2 generators. #I Class 2 with 3 generators. #I Class 3 with 5 generators. #I Class 3 with 5 generators.  gap> # We do a ``sample'' check that pairs of elements of Q do satisfy gap> # the given identity: gap> f( Random(Q), Random(Q) );  of ... gap> f( Q.1, Q.2 );  of ... #I Variables used in `PqExample' are saved in `ANUPQData.example.vars'.  The (interactive) call to Pq above is essentially equivalent to a call to PqPcPresentation with the same arguments and options followed by a call to PqCurrentGroup. Moreover, the call to PqPcPresentation (as described in PqPcPresentation (5.6-1)) is equivalent to a class 1 call to PqPcPresentation followed by the requisite number of calls to PqNextClass, and with the Identities option set, both PqPcPresentation and PqNextClass quietly perform the equivalent of a PqEvaluateIdentities call. In the following example we break down the Pq call into its low-level equivalents, and set and unset the Identities option to show where PqEvaluateIdentities fits into this scheme.  Example  gap> PqExample("11gp-3-Engel-Id-i"); #I #Example: "11gp-3-Engel-Id-i" . . . 3-Engel grp for prime 11 #I #Variation of "11gp-3-Engel-Id" broken down into its lower-level component #I #command parts. #I F, a, b, G, f, procId, Q are local to `PqExample' gap> F := FreeGroup("a", "b"); a := F.1; b := F.2;  a b gap> G := F/[ a^11, b^11 ];  gap> # All word pairs u, v in the pc generators of the 11-quotient Q of G  gap> # must satisfy the Engel identity: [u, v, v, v] = 1. gap> f := function(u, v) return PqLeftNormComm( [u, v, v, v] ); end; function( u, v ) ... end gap> procId := PqStart( G : Prime := 11 ); 4 gap> PqPcPresentation( procId : ClassBound := 1); gap> PqEvaluateIdentities( procId : Identities := [f] ); #I Class 1 with 2 generators. gap> for c in [2 .. 4] do >  PqNextClass( procId : Identities := [] ); #reset `Identities' option >  PqEvaluateIdentities( procId : Identities := [f] ); >  od; #I Class 2 with 3 generators. #I Class 3 with 5 generators. #I Class 3 with 5 generators. gap> Q := PqCurrentGroup( procId );  gap> # We do a ``sample'' check that pairs of elements of Q do satisfy gap> # the given identity: gap> f( Random(Q), Random(Q) );  of ... gap> f( Q.1, Q.2 );  of ... #I Variables used in `PqExample' are saved in `ANUPQData.example.vars'.  A.3 A Large Example An example demonstrating how a large computation can be organised with the ANUPQ package is the computation of the Burnside group B(5, 4), the largest group of exponent 4 generated by 5 elements. It has order 2^2728 and lower exponent-p central class 13. The example "B5-4.g" computes B(5, 4); it is based on a pq standalone input file written by M. F. Newman. To be able to do examples like this was part of the motivation to provide access to the low-level functions of the standalone program from within GAP. Please note that the construction uses the knowledge gained by Newman and O'Brien in their initial construction of B(5, 4), in particular, insight into the commutator structure of the group and the knowledge of the p-central class and the order of B(5, 4). Therefore, the construction cannot be used to prove that B(5, 4) has the order and class mentioned above. It is merely a reconstruction of the group. More information is contained in the header of the file examples/B5-4.g.  Example  procId := PqStart( FreeGroup(5) : Exponent := 4, Prime := 2 ); Pq( procId : ClassBound := 2 ); PqSupplyAutomorphisms( procId,  [  [ [ 1, 1, 0, 0, 0], # first automorphism  [ 0, 1, 0, 0, 0],  [ 0, 0, 1, 0, 0],  [ 0, 0, 0, 1, 0],  [ 0, 0, 0, 0, 1] ],   [ [ 0, 0, 0, 0, 1], # second automorphism  [ 1, 0, 0, 0, 0],  [ 0, 1, 0, 0, 0],  [ 0, 0, 1, 0, 0],  [ 0, 0, 0, 1, 0] ]  ] );;  Relations :=  [ [], ## class 1  [], ## class 2  [], ## class 3  [], ## class 4  [], ## class 5  [], ## class 6  ## class 7   [ [ "x2","x1","x1","x3","x4","x4","x4" ] ],  ## class 8  [ [ "x2","x1","x1","x3","x4","x5","x5","x5" ] ],  ## class 9  [ [ "x2","x1","x1","x3","x4","x4","x5","x5","x5" ],  [ "x2","x1","x1","x2","x3","x4","x5","x5","x5" ],  [ "x2","x1","x1","x3","x3","x4","x5","x5","x5" ] ],  ## class 10  [ [ "x2","x1","x1","x2","x3","x3","x4","x5","x5","x5" ],  [ "x2","x1","x1","x3","x3","x4","x4","x5","x5","x5" ] ],  ## class 11  [ [ "x2","x1","x1","x2","x3","x3","x4","x4","x5","x5","x5" ],  [ "x2","x1","x1","x2","x3","x1","x3","x4","x2","x4","x3" ] ],  ## class 12  [ [ "x2","x1","x1","x2","x3","x1","x3","x4","x2","x5","x5","x5" ],  [ "x2","x1","x1","x3","x2","x4","x3","x5","x4","x5","x5","x5" ] ],  ## class 13  [ [ "x2","x1","x1","x2","x3","x1","x3","x4","x2","x4","x5","x5","x5"   ] ] ];  for class in [ 3 .. 13 ] do  Print( "Computing class ", class, "\n" );  PqSetupTablesForNextClass( procId );   for w in [ class, class-1 .. 7 ] do   PqAddTails( procId, w );   PqDisplayPcPresentation( procId );   if Relations[ w ] <> [] then  # recalculate automorphisms  PqExtendAutomorphisms( procId );   for r in Relations[ w ] do  Print( "Collecting ", r, "\n" );  PqCommutator( procId, r, 1 );  PqEchelonise( procId );  PqApplyAutomorphisms( procId, 15 ); #queue factor = 15  od;   PqEliminateRedundantGenerators( procId );  fi;   PqComputeTails( procId, w );  od;  PqDisplayPcPresentation( procId );   smallclass := Minimum( class, 6 );  for w in [ smallclass, smallclass-1 .. 2 ] do  PqTails( procId, w );  od;  # recalculate automorphisms  PqExtendAutomorphisms( procId );  PqCollect( procId, "x5^4" );  PqEchelonise( procId );  PqApplyAutomorphisms( procId, 15 ); #queue factor = 15  PqEliminateRedundantGenerators( procId );  PqDisplayPcPresentation( procId ); od;  A.4 Developing descendants trees In the following example we will explore the 3-groups of rank 2 and 3-coclass 1 up to 3-class 5. This will be done using the p-group generation machinery of the package. We start with the elementary abelian 3-group of rank 2. From within GAP, run the example "PqDescendants-treetraverse-i" via PqExample (see PqExample (3.4-4)).  Example  gap> G := ElementaryAbelianGroup( 9 );  gap> procId := PqStart( G ); 5 gap> # gap> # Below, we use the option StepSize in order to construct descendants gap> # of coclass 1. This is equivalent to setting the StepSize to 1 in gap> # each descendant calculation. gap> # gap> # The elementary abelian group of order 9 has 3 descendants of gap> # 3-class 2 and 3-coclass 1, as the result of the next command gap> # shows.  gap> # gap> PqDescendants( procId : StepSize := 1 ); [ ,   ,   ] gap> # gap> # Now we will compute the descendants of coclass 1 for each of the gap> # groups above. Then we will compute the descendants of coclass 1 gap> # of each descendant and so on. Note that the pq program keeps gap> # one file for each class at a time. For example, the descendants gap> # calculation for the second group of class 2 overwrites the gap> # descendant file obtained from the first group of class 2. gap> # Hence, we have to traverse the descendants tree in depth first gap> # order. gap> # gap> PqPGSetDescendantToPcp( procId, 2, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 2 gap> PqPGSetDescendantToPcp( procId, 3, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 2 gap> PqPGSetDescendantToPcp( procId, 4, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 2 gap> # gap> # At this point we stop traversing the ``left most'' branch of the gap> # descendants tree and move upwards. gap> # gap> PqPGSetDescendantToPcp( procId, 4, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> PqPGSetDescendantToPcp( procId, 3, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> #  gap> # The computations above indicate that the descendants subtree under gap> # the first descendant of the elementary abelian group of order 9 gap> # will have only one path of infinite length. gap> # gap> PqPGSetDescendantToPcp( procId, 2, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 4 gap> # gap> # We get four descendants here, three of which will turn out to be gap> # incapable, i.e., they have no descendants and are terminal nodes gap> # in the descendants tree. gap> # gap> PqPGSetDescendantToPcp( procId, 2, 3 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> # gap> # The third descendant of class three is incapable. Let us return gap> # to the second descendant of class 2. gap> # gap> PqPGSetDescendantToPcp( procId, 2, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 4 gap> PqPGSetDescendantToPcp( procId, 3, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> PqPGSetDescendantToPcp( procId, 3, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> # gap> # We skip the third descendant for the moment ...  gap> # gap> PqPGSetDescendantToPcp( procId, 3, 4 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> # gap> # ... and look at it now. gap> # gap> PqPGSetDescendantToPcp( procId, 3, 3 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 6 gap> # gap> # In this branch of the descendant tree we get 6 descendants of class gap> # three. Of those 5 will turn out to be incapable and one will have gap> # 7 descendants. gap> # gap> PqPGSetDescendantToPcp( procId, 4, 1 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0 gap> PqPGSetDescendantToPcp( procId, 4, 2 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); 7 gap> PqPGSetDescendantToPcp( procId, 4, 3 ); gap> PqPGExtendAutomorphisms( procId ); gap> PqPGConstructDescendants( procId : StepSize := 1 ); #I group restored from file is incapable 0  To automate the above procedure to some extent we provide: A.4-1 PqDescendantsTreeCoclassOne PqDescendantsTreeCoclassOne( i )  function PqDescendantsTreeCoclassOne( )  function for the ith or default interactive ANUPQ process, generate a descendant tree for the group of the process (which must be a pc p-group) consisting of descendants of p-coclass 1 and extending to the class determined by the option TreeDepth (or 6 if the option is omitted). In an XGAP session, a graphical representation of the descendants tree appears in a separate window. Subsequent calls to PqDescendantsTreeCoclassOne for the same process may be used to extend the descendant tree from the last descendant computed that itself has more than one descendant. PqDescendantsTreeCoclassOne also accepts the options CapableDescendants (or AllDescendants) and any options accepted by the interactive PqDescendants function (see PqDescendants (5.3-6)). Notes 1 PqDescendantsTreeCoclassOne first calls PqDescendants. If PqDescendants has already been called for the process, the previous value computed is used and a warning is Info-ed at InfoANUPQ level 1. 2 As each descendant is processed its unique label defined by the pq program and number of descendants is Info-ed at InfoANUPQ level 1. 3 PqDescendantsTreeCoclassOne is an experimental function that is included to demonstrate the sort of things that are possible with the p-group generation machinery. Ignoring the extra functionality provided in an XGAP session, PqDescendantsTreeCoclassOne, with one argument that is the index of an interactive ANUPQ process, is approximately equivalent to:  PqDescendantsTreeCoclassOne := function( procId )  local des, i;   des := PqDescendants( procId : StepSize := 1 );  RecurseDescendants( procId, 2, Length(des) ); end;  where RecurseDescendants is (approximately) defined as follows:  RecurseDescendants := function( procId, class, n )  local i, nr;   if class > ValueOption("TreeDepth") then return; fi;   for i in [1..n] do  PqPGSetDescendantToPcp( procId, class, i );  PqPGExtendAutomorphisms( procId );  nr := PqPGConstructDescendants( procId : StepSize := 1 );  Print( "Number of descendants of group ", i,  " at class ", class, ": ", nr, "\n" );  RecurseDescendants( procId, class+1, nr );  od;  return; end;  The following examples (executed via PqExample; see PqExample (3.4-4)), demonstrate the use of PqDescendantsTreeCoclassOne: "PqDescendantsTreeCoclassOne-9-i" approximately does example "PqDescendants-treetraverse-i" again using PqDescendantsTreeCoclassOne; "PqDescendantsTreeCoclassOne-16-i" uses the option CapableDescendants; and "PqDescendantsTreeCoclassOne-25-i" calculates all descendants by omitting the CapableDescendants option. The numbers 9, 16 and 25 respectively, indicate the order of the elementary abelian group to which PqDescendantsTreeCoclassOne is applied for these examples. anupq-3.3.0/doc/chap7.txt000644 000766 000024 00000027204 14355420737 015457 0ustar00mhornstaff000000 000000 7 Installing the ANUPQ Package The ANU pq program is written in C and the package can be installed under UNIX and in environments similar to UNIX. In particular it is known to work on Linux and Mac OS X, and also on Windows equipped with cygwin. The current version of the ANUPQ package requires GAP 4.9, and version 1.2 of the AutPGrp package. However, we recommend using at least GAP 4.6 and AutPGrp 1.5. To install the ANUPQ package, move the file anupq-XXX.tar.gz for some version number XXX into the pkg directory in which you plan to install ANUPQ. Usually, this will be the directory pkg in the hierarchy of your version of GAP; it is however also possible to keep an additional pkg directory in your private directories. The only essential difference with installing ANUPQ in a pkg directory different to the GAP home directory is that one must start GAP with the -l switch (see Section Reference: Command Line Options), e.g. if your private pkg directory is a subdirectory of mygap in your home directory you might type:  gap -l ";myhomedir/mygap"  where myhomedir is the path to your home directory, which may be replaced by a tilde. The empty path before the semicolon is filled in by the default path of the GAP home directory. Then, in your chosen pkg directory, unpack anupq-XXX.tar.gz by  tar xf anupq-.tar.gz  Change to the newly created anupq directory. Now you need to call configure. If you installed ANUPQ into the main pkg directory, call  ./configure  If you installed ANUPQ in another directory than the usual 'pkg' subdirectory, instead call  ./configure --with-gaproot=  where path is the path to the GAP home directory. (You can also call  ./configure --help  for further options.) What this does is look for a file sysinfo.gap in the root directory of GAP in order to determine an architecture name for the subdirectory of bin in which to put the compiled pq binary. This only makes sense if GAP was compiled for the same architecture that pq will be. If you have a shared file system mounted across different architectures, then you should run configure and make for ANUPQ for each architecture immediately after compiling GAP on the same architecture. If you had to install the package in your own directory but wish to use the system GAP then you will need to find out what path is. To do this, start up GAP and find out what GAP's root path is from finding the value of the variable GAPInfo.RootPaths, e.g.  Example  gap> GAPInfo.RootPaths; [ "/usr/local/lib/gap4r4/" ]  would tell you to use /usr/local/lib/gap4r4 for path. The configure command will fetch the architecture type for which GAP has been compiled last and create a Makefile. You can now simply call  make  to compile the binary and to install it in the appropriate place. The path of GAP (see Note below) used by the pq binary (the value GAP is set to in the make command) may be over-ridden by setting the environment variable ANUPQ_GAP_EXEC. These values are only of interest when the pq program is run as a standalone; however, the testPq script assumes you have set one of these correctly (see Section 'Testing your ANUPQ installation'). When the pq program is started from GAP communication occurs via an iostream, so that the pq binary does not actually need to know a valid path for GAP is this case. Note. By path of GAP we mean the path of the command used to invoke GAP (which should be a script, e.g. the gap.sh script generated in the bin directory for the version of GAP when GAP was compiled). The usual strategy is to copy the gap.sh script to a standard location, e.g. /usr/local/bin/gap. It is a mistake to copy the GAP executable gap (in a directory with name of form bin/compile-platform) to the standard location, since direct invocation of the executable results in GAP starting without being able to find its own library (a fatal error). 7.1 Testing your ANUPQ installation Now it is time to test the installation. After doing configure and make you will have a testPq script. The script assumes that, if the environment variable ANUPQ_GAP_EXEC is set, it is a correct path for GAP, or otherwise that the make call that compiled the pq program set GAP to a correct path for GAP (see Section 'Running the pq program as a standalone' for more details). To run the tests, just type:  ./testPq  Some of the tests the script runs take a while. Please be patient. The script checks that you not only have a correct GAP (at least version 4.4) installation that includes the AutPGrp package, but that the ANUPQ package and its pq binary interact correctly. You should see something like the following output:  Example  Made dir: /tmp/testPq Testing installation of ANUPQ Package (version 3.1)   The first two tests check that the pq C program compiled ok. Testing the pq binary ... OK. Testing the pq binary's stack size ... OK. The pq C program compiled ok! We test it's the right one below.   The next tests check that you have the right version of GAP for the ANUPQ package and that GAP is finding the right versions of the ANUPQ and AutPGrp packages.   Checking GAP ...  pq binary made with GAP set to: /usr/local/bin/gap  Starting GAP to determine version and package availability ...  GAP version (4.6.5) ... OK.  GAP found ANUPQ package (version 3.1) ... good.  GAP found pq binary (version 1.9) ... good.  GAP found AutPGrp package (version 1.5) ... good.  GAP is OK.   Checking the link between the pq binary and GAP ... OK. Testing the standard presentation part of the pq binary ... OK. Doing p-group generation (final GAP/ANUPQ) test ... OK. Tests complete. Removed dir: /tmp/testPq Enjoy using your functional ANUPQ package!  7.2 Running the pq program as a standalone When the pq program is run as a standalone it sometimes needs to call GAP to compute stabilisers of subgroups; in doing so, it first checks the value of the environment variable ANUPQ_GAP_EXEC, and uses that, if set, or otherwise the value of GAP it was compiled with, as the path for GAP. If you ran testPq (see Section 'Testing your ANUPQ installation') and you got both GAP is OK and the link between the pq binary and GAP is OK, you should be fine. Otherwise heed the recommendations of the error messages you get and run the testPq until all tests are passed. It is especially important that the GAP, whose path you gave, should know where to find the ANUPQ and AutPGrp packages. To ensure this the path should be to a shell script that invokes GAP. If you needed to install the needed packages in your own directory (because, say, you are not a system administrator) then you should create your own shell script that runs GAP with a correct setting of the -l option and set the path used by the pq binary to the path of that script. To create the script that runs GAP it is easiest to copy the system one and edit it, e.g. start by executing the following UNIX commands (skip the second step if you already have a bin directory; you@unix> is your UNIX prompt):  you@unix> cd you@unix> mkdir bin you@unix> cd bin you@unix> which gap /usr/local/bin/gap you@unix> cp /usr/local/bin/gap mygap you@unix> chmod +x mygap  At the second-last step use the path of GAP returned by which gap. Now hopefully you will have a copy of the script that runs the system GAP in mygap. Now use your favourite editor to edit the -l part of the last line of mygap which should initially look something like:  exec $GAP_DIR/bin/$GAP_PRG -m $GAP_MEM -o 970m -l $GAP_DIR $*  so that it becomes (the tilde is a UNIX abbreviation for your home directory):  exec $GAP_DIR/bin/$GAP_PRG -m $GAP_MEM -o 970m -l "$GAP_DIR;~/gapstuff" $*  assuming that your personal GAP pkg directory is a subdirectory of gapstuff in your home directory. Finally, to let the pq program know where GAP is and also know where your pkg directory is that contains ANUPQ, set the environment variable ANUPQ_GAP_EXEC to the complete (i.e. absolute) path of your mygap script (do not use the tilde abbreviation). anupq-3.3.0/doc/chap6.txt000644 000766 000024 00000072610 14355420737 015457 0ustar00mhornstaff000000 000000 6 ANUPQ Options 6.1 Overview In this chapter we describe in detail all the options used by functions of the ANUPQ package. Note that by options we mean GAP options that are passed to functions after the arguments and separated from the arguments by a colon as described in Chapter Reference: Function Calls in the Reference Manual. The user is strongly advised to read Section 'Hints and Warnings regarding the use of Options'. 6.1-1 AllANUPQoptions AllANUPQoptions( )  function lists all the GAP options defined for functions of the ANUPQ package:  Example  gap> AllANUPQoptions(); [ "AllDescendants", "BasicAlgorithm", "Bounds", "CapableDescendants",   "ClassBound", "CustomiseOutput", "Exponent", "Filename", "GroupName",   "Identities", "Metabelian", "NumberOfSolubleAutomorphisms", "OrderBound",   "OutputLevel", "PcgsAutomorphisms", "PqWorkspace", "Prime",   "PrintAutomorphisms", "PrintPermutations", "QueueFactor",   "RankInitialSegmentSubgroups", "RedoPcp", "RelativeOrders", "Relators",   "SetupFile", "SpaceEfficient", "StandardPresentationFile", "StepSize",   "SubList", "TreeDepth", "pQuotient" ]  The following global variable gives a partial breakdown of where the above options are used. 6.1-2 ANUPQoptions ANUPQoptions  global variable is a record of lists of names of admissible ANUPQ options, such that each field is either the name of a key ANUPQ function or other (for a miscellaneous list of functions) and the corresponding value is the list of option names that are admissible for the function (or miscellaneous list of functions). Also, from within a GAP session, you may use GAP's help browser (see Chapter Reference: The Help System in the GAP Reference Manual); to find out about any particular ANUPQ option, simply type: ?option option, where option is one of the options listed above without any quotes, e.g.  Example  gap> ?option Prime  will display the sections in this manual that describe the Prime option. In fact the first 4 are for the functions that have Prime as an option and the last actually describes the option. So follow up by choosing  Example  gap> ?5  This is also the pattern for other options (the last section of the list always describes the option; the other sections are the functions with which the option may be used). In the section following we describe in detail all ANUPQ options. To continue onto the next section on-line using GAP's help browser, type:  Example  gap> ?>  6.2 Detailed descriptions of ANUPQ Options Prime := p  Specifies that the p-quotient for the prime p should be computed. ClassBound := n  Specifies that the p-quotient to be computed has lower exponent-p class at most n. If this option is omitted a default of 63 (which is the maximum possible for the pq program) is taken, except for PqDescendants (see PqDescendants (4.4-1)) and in a special case of PqPCover (see PqPCover (4.1-3)). Let F be the argument (or start group of the process in the interactive case) for the function; then for PqDescendants the default is PClassPGroup(F) + 1, and for the special case of PqPCover the default is PClassPGroup(F). pQuotient := Q  This option is only available for the standard presentation functions. It specifies that a p-quotient of the group argument of the function or group of the process is the pc p-group Q, where Q is of class less than the provided (or default) value of ClassBound. If pQuotient is provided, then the option Prime if also provided, is ignored; the prime p is discovered by computing PrimePGroup(Q). Exponent := n  Specifies that the p-quotient to be computed has exponent n. For an interactive process, Exponent defaults to a previously supplied value for the process. Otherwise (and non-interactively), the default is 0, which means that no exponent law is enforced. Relators := rels  Specifies that the relators sent to the pq program should be rels instead of the relators of the argument group F (or start group in the interactive case) of the calling function; rels should be a list of strings in the string representations of the generators of F, and F must be an fp group (even if the calling function accepts a pc group). This option provides a way of giving relators to the pq program, without having them pre-expanded by GAP, which can sometimes effect a performance loss of the order of 100 (see Section 'The Relators Option'). Notes 1 The pq program does not use / to indicate multiplication by an inverse and uses square brackets to represent (left normed) commutators. Also, even though the pq program accepts relations, all elements of rels must be in relator form, i.e. a relation of form w1 = w2 must be written as w1*(w2)^-1 and then put in a pair of double-quotes to make it a string. See the example below. 2 To ensure there are no syntax errors in rels, each relator is parsed for validity via PqParseWord (see PqParseWord (3.4-3)). If they are ok, a message to say so is Info-ed at InfoANUPQ level 2. Metabelian  Specifies that the largest metabelian p-quotient subject to any other conditions specified by other options be constructed. By default this restriction is not enforced. GroupName := name  Specifies that the pq program should refer to the group by the name name (a string). If GroupName is not set and the group has been assigned a name via SetName (see Reference: Name) it is set as the name the pq program should use. Otherwise, the generic name "[grp]" is set as a default. Identities := funcs  Specifies that the pc presentation should satisfy the laws defined by each function in the list funcs. This option may be called by Pq, PqEpimorphism, or PqPCover (see Pq (4.1-1)). Each function in the list funcs must return a word in its arguments (there may be any number of arguments). Let identity be one such function in funcs. Then as each lower exponent p-class quotient is formed, instances identity(w1, dots, wn) are added as relators to the pc presentation, where w1, dots, wn are words in the pc generators of the quotient. At each class the class and number of pc generators is Info-ed at InfoANUPQ level 1, the number of instances is Info-ed at InfoANUPQ level 2, and the instances that are evaluated are Info-ed at InfoANUPQ level 3. As usual timing information is Info-ed at InfoANUPQ level 2; and details of the processing of each instance from the pq program (which is often quite voluminous) is Info-ed at InfoANUPQ level 3. Try the examples "B2-4-Id" and "11gp-3-Engel-Id" which demonstrate the usage of the Identities option; these are run using PqExample (see PqExample (3.4-4)). Take note of Note 1. below in relation to the example "B2-4-Id"; the companion example "B2-4" generates the same group using the Exponent option. These examples are discussed at length in Section 'The Identities Option and PqEvaluateIdentities Function'. Notes 1 Setting the InfoANUPQ level to 3 or more when setting the Identities option may slow down the computation considerably, by overloading GAP with io operations. 2 The Identities option is implemented at the GAP level. An identity that is just an exponent law should be specified using the Exponent option (see option Exponent), which is implemented at the C level and is highly optimised and so is much more efficient. 3 The number of instances of each identity tends to grow combinatorially with the class. So care should be exercised in using the Identities option, by including other restrictions, e.g. by using the ClassBound option (see option ClassBound). OutputLevel := n  Specifies the level of verbosity of the information output by the ANU pq program when computing a pc presentation; n must be an integer in the range 0 to 3. OutputLevel := 0 displays at most one line of output and is the default; OutputLevel := 1 displays (usually) slightly more output and OutputLevels of 2 and 3 are two levels of verbose output. To see these messages from the pq program, the InfoANUPQ level must be set to at least 1 (see InfoANUPQ (3.3-1)). See Section 'Hints and Warnings regarding the use of Options' for an example of how OutputLevel can be used as a troubleshooting tool. RedoPcp  Specifies that the current pc presentation (for an interactive process) stored by the pq program be scrapped and clears the current values stored for the options Prime, ClassBound, Exponent and Metabelian and also clears the pQuotient, pQepi and pCover fields of the data record of the process. SetupFile := filename  Non-interactively, this option directs that pq should not be called and that an input file with name filename (a string), containing the commands necessary for the ANU pq standalone, be constructed. The commands written to filename are also Info-ed behind a ToPQ>  prompt at InfoANUPQ level 4 (see InfoANUPQ (3.3-1)). Except in the case following, the calling function returns true. If the calling function is the non-interactive version of one of Pq, PqPCover or PqEpimorphism and the group provided as argument is trivial given with an empty set of generators, then no setup file is written and fail is returned (the pq program cannot do anything useful with such a group). Interactively, SetupFile is ignored. Note: Since commands emitted to the pq program may depend on knowing what the current state is, to form a setup file some close enough guesses may sometimes be necessary; when this occurs a warning is Info-ed at InfoANUPQ or InfoWarning level 1. To determine whether the close enough guesses give an accurate setup file, it is necessary to run the command without the SetupFile option, after either setting the InfoANUPQ level to at least 4 (the setup file script can then be compared with the ToPQ>  commands that are Info-ed) or setting a pq command log file by using ToPQLog (see ToPQLog (3.4-7)). PqWorkspace := workspace  Non-interactively, this option sets the memory used by the pq program. It sets the maximum number of integer-sized elements to allocate in its main storage array. By default, the pq program sets this figure to 10000000. Interactively, PqWorkspace is ignored; the memory used in this case may be set by giving PqStart a second argument (see PqStart (5.1-1)). PcgsAutomorphisms  PcgsAutomorphisms := false  Let G be the group associated with the calling function (or associated interactive process). Passing the option PcgsAutomorphisms without a value (or equivalently setting it to true), specifies that a polycyclic generating sequence for the automorphism group (which must be soluble) of G, be computed and passed to the pq program. This increases the efficiency of the computation; it also prevents the pq from calling GAP for orbit-stabilizer calculations. By default, PcgsAutomorphisms is set to the value returned by IsSolvable( AutomorphismGroup( G ) ), and uses the package AutPGrp to compute AutomorphismGroup( G ) if it is installed. This flag is set to true or false in the background according to the above criterion by the function PqDescendants (see PqDescendants (4.4-1) and PqDescendants (5.3-6)). Note: If PcgsAutomorphisms is used when the automorphism group of G is insoluble, an error message occurs. OrderBound := n  Specifies that only descendants of size at most p^n, where n is a non-negative integer, be generated. Note that you cannot set both OrderBound and StepSize. StepSize := n  StepSize := list  For a positive integer n, StepSize specifies that only those immediate descendants which are a factor p^n bigger than their parent group be generated. For a list list of positive integers such that the sum of the length of list and the exponent-p class of G is equal to the class bound defined by the option ClassBound, StepSize specifies that the integers of list are the step sizes for each additional class. RankInitialSegmentSubgroups := n  Sets the rank of the initial segment subgroup chosen to be n. By default, this has value 0. SpaceEfficient  Specifies that the pq program performs certain calculations of p-group generation more slowly but with greater space efficiency. This flag is frequently necessary for groups of large Frattini quotient rank. The space saving occurs because only one permutation is stored at any one time. This option is only available if the PcgsAutomorphisms flag is set to true (see option PcgsAutomorphisms). For an interactive process, SpaceEfficient defaults to a previously supplied value for the process. Otherwise (and non-interactively), SpaceEfficient is by default false. CapableDescendants  By default, all (i.e. capable and terminal) descendants are computed. If this flag is set, only capable descendants are computed. Setting this option is equivalent to setting AllDescendants := false (see option AllDescendants), except if both CapableDescendants and AllDescendants are passed, AllDescendants is essentially ignored. AllDescendants := false  By default, all descendants are constructed. If this flag is set to false, only capable descendants are computed. Passing AllDescendants without a value (which is equivalent to setting it to true) is superfluous. This option is provided only for backward compatibility with the GAP 3 version of the ANUPQ package, where by default AllDescendants was set to false (rather than true). It is preferable to use CapableDescendants (see option CapableDescendants). TreeDepth := class  Specifies that the descendants tree developed by PqDescendantsTreeCoclassOne (see PqDescendantsTreeCoclassOne (A.4-1)) should be extended to class class, where class is a positive integer. SubList := sub  Suppose that L is the list of descendants generated, then for a list sub of integers this option causes PqDescendants to return Sublist( L, sub ). If an integer n is supplied, PqDescendants returns L[n]. NumberOfSolubleAutomorphisms := n  Specifies that the number of soluble automorphisms of the automorphism group supplied by PqPGSupplyAutomorphisms (see PqPGSupplyAutomorphisms (5.9-1)) in a p-group generation calculation is n. By default, n is taken to be 0; n must be a non-negative integer. If n ≥ 0 then a value for the option RelativeOrders (see 6.2) must also be supplied. RelativeOrders := list  Specifies the relative orders of each soluble automorphism of the automorphism group supplied by PqPGSupplyAutomorphisms (see PqPGSupplyAutomorphisms (5.9-1)) in a p-group generation calculation. The list list must consist of n positive integers, where n is the value of the option NumberOfSolubleAutomorphisms (see 6.2). By default list is empty. BasicAlgorithm  Specifies that an algorithm that the pq program calls its default algorithm be used for p-group generation. By default this algorithm is not used. If this option is supplied the settings of options RankInitialSegmentSubgroups, AllDescendants, Exponent and Metabelian are ignored. CustomiseOutput := rec  Specifies that fine tuning of the output is desired. The record rec should have any subset (or all) of the the following fields: perm := list where list is a list of booleans which determine whether the permutation group output for the automorphism group should contain: the degree, the extended automorphisms, the automorphism matrices, and the permutations, respectively. orbit := list where list is a list of booleans which determine whether the orbit output of the action of the automorphism group should contain: a summary, and a complete listing of orbits, respectively. (It's possible to have both a summary and a complete listing.) group := list where list is a list of booleans which determine whether the group output should contain: the standard matrix of each allowable subgroup, the presentation of reduced p-covering groups, the presentation of immediate descendants, the nuclear rank of descendants, and the p-multiplicator rank of descendants, respectively. autgroup := list where list is a list of booleans which determine whether the automorphism group output should contain: the commutator matrix, the automorphism group description of descendants, and the automorphism group order of descendants, respectively. trace := val where val is a boolean which if true specifies algorithm trace data is desired. By default, one does not get algorithm trace data. Not providing a field (or mis-spelling it!), specifies that the default output is desired. As a convenience, 1 is also accepted as true, and any value that is neither 1 nor true is taken as false. Also for each list above, an unbound list entry is taken as false. Thus, for example   Example  CustomiseOutput := rec(group := [,,1], autgroup := [,1])  specifies for the group output that only the presentation of immediate descendants is desired, for the automorphism group output only the automorphism group description of descendants should be printed, that there should be no algorithm trace data, and that the default output should be provided for the permutation group and orbit output. StandardPresentationFile := filename  Specifies that the file to which the standard presentation is written has name filename. If the first character of the string filename is not /, filename is assumed to be the path of a writable file relative to the directory in which GAP was started. If this option is omitted it is written to the file with the name generated by the command Filename( ANUPQData.tmpdir, "SPres" );, i.e. the file with name "SPres" in the temporary directory in which the pq program executes. QueueFactor := n  Specifies a queue factor of n, where n must be a positive integer. This option may be used with PqNextClass (see PqNextClass (5.6-4)). The queue factor is used when the pq program uses automorphisms to close a set of elements of the p-multiplicator under their action. The algorithm used is a spinning algorithm: it starts with a set of vectors in echelonized form (elements of the p-multiplicator) and closes the span of these vectors under the action of the automorphisms. For this each automorphism is applied to each vector and it is checked if the result is contained in the span computed so far. If not, the span becomes bigger and the vector is put into a queue and the automorphisms are applied to this vector at a later stage. The process terminates when the automorphisms have been applied to all vectors and no new vectors have been produced. For each new vector it is decided, if its processing should be delayed. If the vector contains too many non-zero entries, it is put into a second queue. The elements in this queue are processed only when there are no elements in the first queue left. The queue factor is a percentage figure. A vector is put into the second queue if the percentage of its non-zero entries exceeds the queue factor. Bounds := list  Specifies a lower and upper bound on the indices of a list, where list is a pair of positive non-decreasing integers. See PqDisplayStructure (5.7-23) and PqDisplayAutomorphisms (5.7-24) where this option may be used. PrintAutomorphisms := list  Specifies that automorphism matrices be printed. PrintPermutations := list  Specifies that permutations of the subgroups be printed. Filename := string  Specifies that an output or input file to be written to or read from by the pq program should have the name string. anupq-3.3.0/doc/manual.mst000644 000766 000024 00000000464 14355420571 015711 0ustar00mhornstaff000000 000000 preamble "" postamble "\n" group_skip "\n" headings_flag 1 heading_prefix "\\letter " numhead_positive "{}" symhead_positive "{}" item_0 "\n " item_1 "\n \\sub " item_01 "\n \\sub " item_x1 ", " item_2 "\n \\subsub " item_12 "\n \\subsub " item_x2 ", " page_compositor "--" line_max 1000 anupq-3.3.0/doc/chapInd_mj.html000644 000766 000024 00000077403 14355420744 016642 0ustar00mhornstaff000000 000000 GAP (ANUPQ) - Index
Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

Index

AllANUPQoptions 6.1-1
allowable subgroup 2.1-4
AllPqExamples 3.4-5
ANUPQ 1.1
ANUPQ_GAP_EXEC, environment variable 7. 7.1 7.2
ANUPQData 3.2-1
ANUPQDirectoryTemporary 3.2-2
ANUPQoptions 6.1-2
ANUPQWarnOfOtherOptions 3.6-1
automorphisms, of \(p\)-groups 4.2 5.3-3
\(B(5,4)\) A.3
banner 3.1
bug reports 1.3
capable 2.1-4
class 2.1-2
collection 2.1-1
compaction 2.3
confluent 2.1-1
confluent rewriting system 2.1-1
consistency conditions 2.1-1
consistent 2.1-1
definition, of generator 2.2-1
descendant 2.1-4
echelonised matrix 2.3
Engel identity 2.1-5
EpimorphismPqStandardPresentation 4.2-2
    interactive 5.3-5
EpimorphismStandardPresentation 4.2-2
    interactive 5.3-5
exponent check 2.2-3
exponent law 2.1-5
exponent-p central series 2.1-2
extended automorphism 2.1-4
GrepPqExamples 3.4-6
identical relation 2.1-5
immediate descendant 2.1-4
InfoANUPQ 3.3-1
interruption 5.2-3
IsCapable 3.5-1
IsIsomorphicPGroup 4.3-1
isomorphism testing 2.3
IsPqIsomorphicPGroup 4.3-1
IsPqProcessAlive 5.2-3
    for default process 5.2-3
label of standard matrix 2.3
labelled pcp 2.2-1
law 2.1-5
menu item, of pq program 3.6
metabelian law 2.1-5
multiplicator rank 2.1-3
MultiplicatorRank 3.5-1
NuclearRank 3.5-1
nucleus 2.1-4 2.1-4
option, of pq program is a menu item 3.6
option AllDescendants 4.4-1 5.3-6 6.2
option BasicAlgorithm 4.4-1 5.3-6 6.2
option Bounds 6.2
option CapableDescendants 4.4-1 5.3-6 6.2
option ClassBound 4.1-1 4.2-1 4.4-1 5.3-1 5.3-4 5.3-6 5.8-2 6.2
option CustomiseOutput 4.4-1 5.3-6 6.2
option Exponent 4.1-1 4.2-1 4.4-1 5.3-1 5.3-4 5.3-6 6.2
option Filename 6.2
option GroupName 4.1-1 4.2-1 4.4-1 5.3-1 5.3-4 5.3-6 6.2
option Identities 4.1-1 5.3-1 6.2
    example of usage 4.1-1
option Metabelian 4.1-1 4.2-1 4.4-1 5.3-1 5.3-4 5.3-6 6.2
option NumberOfSolubleAutomorphisms 6.2
option OrderBound 4.4-1 5.3-6 6.2
option OutputLevel 4.1-1 4.2-1 5.3-1 5.3-4 6.2
option PcgsAutomorphisms 5.8-2 6.2
option pQuotient 4.2-1 5.3-4 6.2
option PqWorkspace 4.1-1 4.2-1 4.4-1 6.2
option Prime 4.1-1 4.2-1 5.3-1 5.3-4 6.2
option PrintAutomorphisms 6.2
option PrintPermutations 6.2
option QueueFactor 5.6-4 6.2
option RankInitialSegmentSubgroups 4.4-1 5.3-6 6.2
option RedoPcp 5.3-1 6.2
option RelativeOrders 6.2
option Relators 4.1-1 4.4-1 5.3-1 5.3-6 6.2
    example of usage 4.1-1
option SetupFile 4.1-1 4.2-1 4.4-1 6.2
option SpaceEfficient 4.4-1 5.3-6 6.2
option StandardPresentationFile 4.2-1 5.3-4 5.8-2 6.2
option StepSize 4.4-1 5.3-6 6.2
option SubList 4.4-1 5.3-6 6.2
option TreeDepth 6.2
orbits 2.3
p-class 2.1-2
p-cover 2.1-3
p-covering group 2.1-3
p-group generation 2.3
p-multiplicator 2.1-3
p-multiplicator rank 2.1-3
pc generators 2.1-1
pc presentation 2.1-1
pcp 2.1-1
permutations 2.1-4
power-commutator presentation 2.1-1
Pq 4.1-1
    interactive 5.3-1
    interactive, for default process 5.3-1
PqAddTails 5.7-7
    for default process 5.7-7
PqAPGDegree 5.10-1
    for default process 5.10-1
PqAPGOrbitRepresentatives 5.10-4
    for default process 5.10-4
PqAPGOrbits 5.10-3
    for default process 5.10-3
PqAPGPermutations 5.10-2
    for default process 5.10-2
PqAPGSingleStage 5.10-5
    for default process 5.10-5
PqApplyAutomorphisms 5.7-22
    for default process 5.7-22
PqCollect 5.7-1
    for default process 5.7-1
PqCollectDefiningRelations 5.7-9
    for default process 5.7-9
PqCollectWordInDefiningGenerators 5.7-10
    for default process 5.7-10
PqCommutator 5.7-3
    for default process 5.7-3
PqCommutatorDefiningGenerators 5.7-11
    for default process 5.7-11
PqCompact 5.7-18
    for default process 5.7-18
PqComputePCover 5.6-5
    for default process 5.6-5
PqComputeTails 5.7-6
    for default process 5.7-6
PqCurrentGroup 5.5-6
    for default process 5.5-6
PqDescendants 4.4-1
    interactive 5.3-6
    interactive, for default process 5.3-6
PqDescendantsTreeCoclassOne A.4-1
    for default process A.4-1
PqDisplayAutomorphisms 5.7-24
    for default process 5.7-24
PqDisplayPcPresentation 5.5-7
    for default process 5.5-7
PqDisplayStructure 5.7-23
    for default process 5.7-23
PqDoConsistencyCheck 5.7-17
    for default process 5.7-17
PqDoConsistencyChecks 5.7-8
    for default process 5.7-8
PqDoExponentChecks 5.7-12
    for default process 5.7-12
PqEchelonise 5.7-19
    for default process 5.7-19
PqEliminateRedundantGenerators 5.7-13
    for default process 5.7-13
PqEpimorphism 4.1-2
    interactive 5.3-2
    interactive, for default process 5.3-2
PqEvaluateIdentities 5.5-9
    for default process 5.5-9
PqExample 3.4-4
    no arguments 3.4-4
    with filename 3.4-4
PqExtendAutomorphisms 5.7-21
    for default process 5.7-21
PqFactoredOrder 5.5-2
    for default process 5.5-2
PqGAPRelators 3.4-2
PqJacobi 5.7-17
    for default process 5.7-17
PqLeftNormComm 3.4-1
PqList 4.4-3
PqNextClass 5.6-4
    for default process 5.6-4
PqNrPcGenerators 5.5-1
    for default process 5.5-1
PqOrder 5.5-3
    for default process 5.5-3
PqParseWord 3.4-3
PqPClass 5.5-4
    for default process 5.5-4
PqPCover 4.1-3
    interactive 5.3-3
    interactive, for default process 5.3-3
PqPcPresentation 5.6-1
    for default process 5.6-1
PqPGConstructDescendants 5.9-3
    for default process 5.9-3
PqPGExtendAutomorphisms 5.9-2
    for default process 5.9-2
PqPGRestoreDescendantFromFile 5.9-4
    for default process 5.9-4
    with class 5.9-4
    with class, for default process 5.9-4
PqPGSetDescendantToPcp 5.9-4
    for default process 5.9-4
    with class 5.9-4
    with class, for default process 5.9-4
PqPGSupplyAutomorphisms 5.9-1
    for default process 5.9-1
PqProcessIndex 5.2-1
    for default process 5.2-1
PqProcessIndices 5.2-2
PqQuit 5.1-2
    for default process 5.1-2
PqQuitAll 5.1-3
PqRead 5.11-1
    for default process 5.11-1
PqReadAll 5.11-2
    for default process 5.11-2
PqReadUntil 5.11-3
    for default process 5.11-3
    with modify map 5.11-3
    with modify map, for default process 5.11-3
PqRestorePcPresentation 5.6-3
    for default process 5.6-3
PqRevertToPreviousClass 5.7-14
    for default process 5.7-14
PqSavePcPresentation 5.6-2
    for default process 5.6-2
PqSetMaximalOccurrences 5.7-15
    for default process 5.7-15
PqSetMetabelian 5.7-16
    for default process 5.7-16
PqSetOutputLevel 5.5-8
    for default process 5.5-8
PqSetPQuotientToGroup 5.3-7
    for default process 5.3-7
PqSetupTablesForNextClass 5.7-4
    for default process 5.7-4
PqSolveEquation 5.7-2
    for default process 5.7-2
PqSPCompareTwoFilePresentations 5.8-4
    for default process 5.8-4
PqSPComputePcpAndPCover 5.8-1
    for default process 5.8-1
PqSPIsomorphism 5.8-5
    for default process 5.8-5
PqSPSavePresentation 5.8-3
    for default process 5.8-3
PqSPStandardPresentation 5.8-2
    for default process 5.8-2
PqStandardPresentation 4.2-1
    interactive 5.3-4
PqStart 5.1-1
    with group 5.1-1
    with group and workspace size 5.1-1
    with workspace size 5.1-1
PqSupplementInnerAutomorphisms 4.4-2
PqSupplyAutomorphisms 5.7-20
    for default process 5.7-20
PqTails 5.7-5
    for default process 5.7-5
PqWeight 5.5-5
    for default process 5.5-5
PqWrite 5.11-4
    for default process 5.11-4
PqWritePcPresentation 5.7-25
    for default process 5.7-25
SavePqList 4.4-4
standard presentation 2.3
StandardPresentation 4.2-1
    interactive 5.3-4
tails 2.2-1
terminal 2.1-4
ToPQLog 3.4-7
troubleshooting tips 3.6
weight function 2.1-2
weighted pcp 2.1-2

Goto Chapter: Top 1 2 3 4 5 6 7 A Bib Ind

generated by GAPDoc2HTML

anupq-3.3.0/doc/chooser.html000644 000766 000024 00000007456 14355420744 016251 0ustar00mhornstaff000000 000000 GAPDoc Style Chooser

Setting preferences for GAPDoc manuals

Unfold subsections in menus only by mouse clicks: no (default)     yes

Show GAP examples as in sessions with ColorPrompt(true): yes (default)     no

Display side of table of contents within chapters: right (default)     left

Main document font: Helvetica/sans serif (default)     Times/serif

Paragraph formatting: left-right justified (default)     ragged right

Apply settings to last page.

anupq-3.3.0/m4/find_gap.m4000644 000766 000024 00000005573 14355420571 015501 0ustar00mhornstaff000000 000000 # Find the location of GAP # Sets GAPROOT, GAPARCH and GAP_CPPFLAGS appropriately # Can be configured using --with-gaproot=... ####################################################################### AC_DEFUN([FIND_GAP], [ AC_LANG_PUSH([C]) # Make sure CDPATH is portably set to a sensible value CDPATH=${ZSH_VERSION+.}: GAP_CPPFLAGS="" ###################################### # Find the GAP root directory by # checking for the sysinfo.gap file AC_MSG_CHECKING([for GAP root directory]) GAPROOT="../.." # Allow the user to specify the location of GAP AC_ARG_WITH(gaproot, [AS_HELP_STRING([--with-gaproot=], [specify root of GAP installation])], [GAPROOT="$withval"]) # Convert the path to absolute GAPROOT=`cd $GAPROOT > /dev/null 2>&1 && pwd` if test -e ${GAPROOT}/sysinfo.gap; then AC_MSG_RESULT([${GAPROOT}]) else AC_MSG_RESULT([Not found]) echo "" echo "********************************************************************" echo " ERROR" echo "" echo " Cannot find your GAP installation. Please specify the location of" echo " GAP's root directory using --with-gaproot=" echo "" echo " The GAP root directory (as far as this package is concerned) is" echo " the one containing the file sysinfo.gap" echo "********************************************************************" echo "" AC_MSG_ERROR([Unable to find GAP root directory]) fi ##################################### # Now find the architecture AC_MSG_CHECKING([for GAP architecture]) GAPARCH="Unknown" . $GAPROOT/sysinfo.gap if test "x$GAParch" != "x"; then GAPARCH=$GAParch fi AC_MSG_RESULT($GAPARCH) if test "x$GAPARCH" = "xUnknown" ; then echo "" echo "********************************************************************" echo " ERROR" echo "" echo " Found a GAP installation at $GAPROOT but could not find" echo " information about GAP's architecture in the file" echo " ${GAPROOT}/sysinfo.gap ." echo " This file should be present: please check your GAP installation." echo "********************************************************************" echo "" AC_MSG_ERROR([Unable to find plausible GAParch information.]) fi # require GAP >= 4.9 if test "x$GAP_CPPFLAGS" = x; then echo "" echo "********************************************************************" echo " ERROR" echo "" echo " This version of GAP is too old and not supported by this package." echo "********************************************************************" echo "" AC_MSG_ERROR([No GAP_CPPFLAGS is given]) fi # compatibility with GAP 4.9 (not needed in GAP >= 4.10) GAP_CPPFLAGS="$GAP_CPPFLAGS -I${GAP_LIB_DIR}/src" AC_SUBST(GAPARCH) AC_SUBST(GAPROOT) AC_SUBST(GAP_CPPFLAGS) AC_SUBST(GAP_CFLAGS) AC_SUBST(GAP_LDFLAGS) AC_LANG_POP([C]) ]) anupq-3.3.0/lib/anupqid.gi000644 000766 000024 00000024117 14355420571 015673 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqid.gi ANUPQ package Werner Nickel #W Greg Gamble ## ## This file installs functions to do with evaluating identities. ## #Y Copyright (C) 2001 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #F PqEvalSingleRelation( , , ) ## InstallGlobalFunction( PqEvalSingleRelation, function( proc, r, instances ) local w, datarec; # Print( instances, "\n" ); datarec := ANUPQDataRecord(proc); datarec.nwords := datarec.nwords + 1; w := CallFuncList( r, instances ); if w <> w^0 then # Print( w ); # Print( "\n" ); # PqSetOutputLevel( proc, 3 ); PqCollect( proc, String(w) ); PqEchelonise( proc ); # PqSetOutputLevel( proc, 0 ); fi; end ); ############################################################################# ## #F PqEnumerateWords( , , ) ## ## The parameters of PqEnumerateWords() have the following meaning: ## ## a relation involving identical generators. ## the list of instances to be built up corresponding the ## identical generators. ## the index of the current word in ## the next generator in the current word ## the weight that can be spent on the next generators. ## InstallGlobalFunction( PqEnumerateWords, function( proc, data, r ) local n, g, wt, u, save_wt, save_u, save_g; n := data.currentinst; g := data.currentgen; wt := data.weightleft; u := data.instances[ n ]; save_wt := wt; save_u := u; save_g := g; if wt = 0 then PqEvalSingleRelation( proc, r, data.instances ); Info( InfoANUPQ, 3, "Instance: ", data.instances[ n ] ); return; fi; if g > Length( data.pcgens ) then return; fi; while g <= data.nrpcgens and data.pcweights[g] <= wt do while data.pcweights[g] <= wt do u := u * data.pcgens[g]; wt := wt - data.pcweights[g]; data.instances[ n ] := u; data.weightleft := wt; data.currentgen := g+1; PqEnumerateWords( proc, data, r ); if n < Length(data.instances) then data.currentinst := n+1; data.currentgen := 1; PqEnumerateWords( proc, data, r ); data.currentinst := n; fi; od; u := save_u; wt := save_wt; g := g+1; od; data.instances[ n ] := save_u; data.weightleft := save_wt; data.currentgen := save_g; end ); ############################################################################# ## #F PqEvaluateIdentity( , , ) ## InstallGlobalFunction( PqEvaluateIdentity, function( proc, r, arity ) local n, class, gens, data, c; n := PqNrPcGenerators( proc ); class := PqWeight( proc, n ); if class > 1 then while n > 0 and PqWeight( proc, n ) = class do n := n-1; od; fi; if n = 0 then return; fi; gens := GeneratorsOfGroup( FreeGroup( n, "x" ) ); data := rec( instances := List( [1..arity], i->gens[1]^0 ), currentinst := 1, currentgen := 1, weightleft := 0, pcgens := gens, nrpcgens := n, pcweights := List( [1..n], i->PqWeight( proc, i ) ) ); for c in [1..class] do # Print( "words of class ", c, "\n" ); data.weightleft := c; PqEnumerateWords( proc, data, r ); od; end ); ############################################################################# ## #F PqWithIdentity( ,

, , ) ## ## constructs a

-quotient of the fp or pc group of class at most ## that satisfies $(, \dots, ) = 1$ for all words ## $, \dots, $ in the pc generators of . The following examples ## demonstrate its usage. ## ## \beginexample ### gap> F := FreeGroup(2); ## ## gap> f := w -> w^4; ## function( w ) ... end ## gap> PqWithIdentity( F, 2, 20, f ); ## #I Evaluated 5 instances. ## #I Class 2 with 5 generators. ## #I Evaluated 18 instances. ## #I Class 3 with 7 generators. ## #I Evaluated 44 instances. ## #I Class 4 with 10 generators. ## #I Evaluated 95 instances. ## #I Class 5 with 12 generators. ## #I Evaluated 192 instances. ## #I Class 6 with 12 generators. ## ## gap> ## gap> G := F/[ F.1^11, F.2^11 ]; ## ## gap> f := function(u, v) return PqLeftNormComm( [u, v, v, v] ); end; ## function( u, v ) ... end ## gap> H := PqWithIdentity( G, 11, 20, f ); ## #I Evaluated 14 instances. ## #I Class 2 with 3 generators. ## #I Evaluated 44 instances. ## #I Class 3 with 5 generators. ## #I Evaluated 122 instances. ## #I Class 4 with 5 generators. ## ## gap> f( Random(H), Random(H) ); ## of ... ## gap> f( H.1, H.2 ); ## of ... ## \endexample ## ## Compare the above examples with those generated by: ## `PqExample("B2-4-Id");' and `PqExample("11gp-3-Engel-Id");' which do the ## same as above using the function `Pq' with the `Identities' option. ## ## `PqWithIdentity' and the functions it calls, with minor modifications, ## constitute the prototype provided by Werner Nickel, for constructing a ## quotient that satisfies an identity. The prototype functions have been ## merged into the single function `PQ_EVALUATE_IDENTITY' which is called by ## `PQ_EVALUATE_IDENTITIES' which in turn is called by ## `PQ_FINISH_NEXT_CLASS' which is called by `PQ_NEXT_CLASS' and ## `PQ_EPI_OR_PCOVER', if the `Identities' option has been set. ## `PQ_EPI_OR_PCOVER' is the function called by `Pq', `PqEpimorphism' or ## `PqPCover'. ## InstallGlobalFunction( PqWithIdentity, function( G, p, Cl, identity ) local proc, datarec, prev_n, class, grp, arity; arity := NumberArgumentsFunction( identity ); proc := PqStart( G : Prime := p ); datarec := ANUPQData.io[ proc ]; datarec.nwords := 0; prev_n := 0; Pq( proc : ClassBound := 1 ); class := 1; PqEvaluateIdentity( proc, identity, arity ); PqEliminateRedundantGenerators( proc ); if PqNrPcGenerators( proc ) = 0 then return TrivialGroup( IsPcGroup ); fi; while class < Cl and prev_n <> PqNrPcGenerators( proc ) do prev_n := PqNrPcGenerators( proc ); PqSetupTablesForNextClass( proc ); PqTails( proc, 0 ); PqDoConsistencyChecks( proc, 0, 0 ); PqCollectDefiningRelations( proc ); PqDoExponentChecks( proc ); datarec.nwords := 0; PqEvaluateIdentity( proc, identity, arity ); Info(InfoANUPQ, 2, "Evaluated ", datarec.nwords, " instances." ); PqEliminateRedundantGenerators( proc ); class := class + 1; Info(InfoANUPQ, 1, "Class ", class, " with ", PqNrPcGenerators(proc), " generators." ); od; grp := PqCurrentGroup( proc ); PqQuit( proc ); return grp; end ); ############################################################################# ## #F PQ_EVALUATE_IDENTITY( , ) ## InstallGlobalFunction( PQ_EVALUATE_IDENTITY, function( proc, identity ) local EnumerateWords, data, datarec, nwords, arity, c; EnumerateWords := function() local i, g, wt, u, w, save_wt, save_u, save_g; i := data.currentinst; g := data.currentgen; wt := data.weightleft; u := data.instances[ i ]; save_wt := wt; save_u := u; save_g := g; if wt = 0 then #evaluate a single relation nwords := nwords + 1; w := CallFuncList( identity, data.instances ); if w <> w^0 then # Print( w ); # Print( "\n" ); # PqSetOutputLevel( proc, 3 ); PqCollect( proc, String(w) ); PqEchelonise( proc ); # PqSetOutputLevel( proc, 0 ); fi; Info( InfoANUPQ, 3, "Instance: ", data.instances[ i ] ); return; fi; while g <= data.nrpcgens and data.pcweights[g] <= wt do while data.pcweights[g] <= wt do u := u * data.pcgens[g]; wt := wt - data.pcweights[g]; data.instances[ i ] := u; data.weightleft := wt; data.currentgen := g+1; EnumerateWords(); if i < Length(data.instances) then data.currentinst := i+1; data.currentgen := 1; EnumerateWords(); data.currentinst := i; fi; od; u := save_u; wt := save_wt; g := g+1; od; data.instances[ i ] := save_u; data.weightleft := save_wt; data.currentgen := save_g; end; data := rec( nrpcgens := PqNrPcGenerators( proc ) ); if data.nrpcgens = 0 then return; fi; datarec := ANUPQDataRecord( proc ); if datarec.class > 1 then data.nrpcgens := datarec.ngens[ Length(datarec.ngens) - 1 ]; fi; nwords := 0; arity := NumberArgumentsFunction(identity); data.pcgens := GeneratorsOfGroup( FreeGroup( data.nrpcgens, "x" ) ); data.instances := List( [1 .. arity], i -> data.pcgens[1]^0 ); data.currentinst := 1; data.currentgen := 1; data.pcweights := List( [1 .. data.nrpcgens], i -> PqWeight( proc, i ) ); for c in [1 .. datarec.class] do # Print( "words of class ", c, "\n" ); data.weightleft := c; EnumerateWords(); od; Info(InfoANUPQ, 2, "Evaluated ", nwords, " instances." ); end ); #E anupqid.gi . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupqhead.gd000644 000766 000024 00000001573 14355420571 016174 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqhead.gd ANUPQ package Werner Nickel #W Greg Gamble ## ## `Head' file for the GAP interface to the ANU pq binary by Eamonn O'Brien. ## #Y Copyright (C) 2006 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #V ANUPQData . . record used by various functions of the ANUPQ package ## DeclareGlobalVariable( "ANUPQData", "A record containing various data associated with the ANUPQ package." ); ############################################################################# ## #I InfoClass ## DeclareInfoClass( "InfoANUPQ" ); #E anupqhead.gd . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupga.gi000644 000766 000024 00000044526 14355420571 015513 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #A anupga.gi ANUPQ package Frank Celler #A & Eamonn O'Brien #A & Benedikt Rothe ## ## Install file for p-group generation of automorphism group functions and ## variables. ## #Y Copyright 1992-1994, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany #Y Copyright 1992-1994, School of Mathematical Sciences, ANU, Australia ## ############################################################################# ## #F ANUPQerror( ) . . . . . . . . . . . . . report illegal parameter ## InstallGlobalFunction( ANUPQerror, function( param ) Error( "Valid Options:\n", " \"ClassBound\", \n", " \"OrderBound\", \n", " \"StepSize\", \n", " \"PcgsAutomorphisms\"\n", " \"RankInitialSegmentSubgroups\", \n", " \"SpaceEfficient\"\n", " \"AllDescendants\"\n", " \"Exponent\", \n", " \"Metabelian\"\n", " \"SubList\"\n", " \"SetupFile\", \n", "Illegal Parameter: \"", param, "\"" ); end ); ############################################################################# ## #F ANUPQextractArgs( ) . . . . . . . . . . . . . . parse argument list ## InstallGlobalFunction( ANUPQextractArgs, function( args ) local CR, i, act, G, match; # allow to give only a prefix match := function( g, w ) return 1 < Length(g) and Length(g) <= Length(w) and w{[1..Length(g)]} = g; end; # extract arguments G := args[1]; CR := rec( group := G ); i := 2; while i <= Length(args) do act := args[i]; # "ClassBound", if match( act, "ClassBound" ) then i := i + 1; CR.ClassBound := args[i]; if CR.ClassBound <= PClassPGroup(G) then Error( "\"ClassBound\" must be at least ", PClassPGroup(G)+1 ); fi; # "OrderBound", elif match( act, "OrderBound" ) then i := i + 1; CR.OrderBound := args[i]; # "StepSize", elif match( act, "StepSize" ) then i := i + 1; CR.StepSize := args[i]; # "PcgsAutomorphisms" elif match( act, "PcgsAutomorphisms" ) then CR.PcgsAutomorphisms := true; # "RankInitialSegmentSubgroups", elif match( act, "RankInitialSegmentSubgroups" ) then i := i + 1; CR.RankInitialSegmentSubgroups := args[i]; # "SpaceEfficient" elif match( act, "SpaceEfficient" ) then CR.SpaceEfficient := true; # "AllDescendants" elif match( act, "AllDescendants" ) then CR.AllDescendants := true; # "Exponent", elif match( act, "Exponent" ) then i := i + 1; CR.Exponent := args[i]; # "Metabelian" elif match( act, "Metabelian" ) then CR.Metabelian := true; # "Verbose" elif match( act, "Verbose" ) then CR.Verbose := true; # "SubList" elif match( act, "SubList" ) then i := i + 1; CR.SubList := args[i]; # temporary directory elif match( act, "TmpDir" ) then i := i + 1; CR.TmpDir := args[i]; # "SetupFile", elif match( act, "SetupFile" ) then i := i + 1; CR.SetupFile := args[i]; # signal an error else ANUPQerror( act ); fi; i := i + 1; od; return CR; end ); ############################################################################# ## #F ANUPQauto( , , ) . . . . . . . . construct automorphism ## InstallGlobalFunction( ANUPQauto, function( G, gens, images ) local f; f := GroupHomomorphismByImagesNC( G, G, gens, images ); SetIsBijective( f, true ); SetKernelOfMultiplicativeGeneralMapping( f, TrivialSubgroup(G) ); return f; end ); ############################################################################# ## #F ANUPQautoList( , , ) . . . . . . . construct a list of autos ## InstallGlobalFunction( ANUPQautoList, function( G, gens, automs ) local D, g, igs, auts, i; # construct direct product elements D := []; for g in [ 1 .. Length(gens) ] do Add( D, DirectProductElement( automs{[1..Length(automs)]}[g] ) ); od; # and compute the abstract igs simultaneously igs := InducedPcgsByGeneratorsWithImages( Pcgs(G), gens, D ); gens := igs[1]; D := igs[2]; # construct the automorphisms auts := []; for i in [ 1 .. Length(automs) ] do Add( auts, ANUPQauto( G, gens, D{[1..Length(gens)]}[i] ) ); od; # and then the automorphisms return auts; end ); ############################################################################# ## #F ANUPQSetAutomorphismGroup( , , , ) ## InstallGlobalFunction( ANUPQSetAutomorphismGroup, function( G, gens, centralAutos, otherAutos, relativeOrders, isSoluble ) SetANUPQAutomorphisms( G, rec( gens := gens, centralAutos := centralAutos, otherAutos := otherAutos, relativeOrders := relativeOrders, isSoluble := isSoluble ) ); return; end ); ############################################################################# ## #F PqSupplementInnerAutomorphisms( ) ## ## returns a record analogous to what is returned by the ## `AutomorphismGroupPGroup' function of the {\AutPGrp} package, except that ## only the fields `agAutos', `agOrder' and `glAutos' are set. The ## automorphisms generate a subgroup of the automorphism group of the pc ## group that supplements the inner automorphism group of in the ## whole automorphism group of . The group of automorphisms returned may ## be a proper subgroup of the full automorphism group. The descendant ## must have been computed by the function `PqDescendants' ## (see~"PqDescendants"). ## ##!! Muss angepasst werden auf die jetzt besser verstandenen Anforderungen ##!! an Automorphismen, naemlich der Unterscheideung zwischen solchen, die ##!! auf der Frattinigruppe treu operieren und solche, die dies nicht tuen. InstallGlobalFunction( "PqSupplementInnerAutomorphisms", function( G ) local gens, automs, A, centralAutos, otherAutos; #Print( "Attention: the function PqSupplementInnerAutomorphisms()", # " is outdated and dangerous\n" ); if not HasANUPQAutomorphisms( G ) then return Error( "group does not carry automorphism information" ); fi; automs := ANUPQAutomorphisms( G ); gens := automs.gens; centralAutos := ANUPQautoList( G, gens, automs.centralAutos ); otherAutos := ANUPQautoList( G, gens, automs.otherAutos ); return rec( agAutos := centralAutos, agOrder := automs.relativeOrders, glAutos := otherAutos ); end ); ############################################################################# ## #F ANUPQprintExps( , ) . . . . . . . . . . . print exponent list ## InstallGlobalFunction( ANUPQprintExps, function( pqi, lst ) local first, l, j; l := Length(lst); first := true; for j in [1 .. l] do if lst[j] <> 0 then if not first then AppendTo( pqi, "*" ); fi; first := false; AppendTo( pqi, "g", j, "^", lst[j] ); fi; od; end ); ############################################################################# ## #F PqList( [: SubList := ]) . . . . . get a list of descendants ## InstallGlobalFunction( PqList, function( file ) local result, lst, groups, autos, sublist, func; PQ_OTHER_OPTS_CHK("PqList", false); # check arguments if not IsString(file) then Error( "usage: PqList( [: SubList := ])\n" ); fi; result := PQ_READ_AS_FUNC_WITH_VARS(file, ["ANUPQmagic", "ANUPQautos", "ANUPQgroups"]); # try to read if result = fail or not IsBound( result.ANUPQmagic ) then return false; fi; # will hold the groups lst := []; if IsBound( result.ANUPQgroups ) then groups := result.ANUPQgroups; if IsBound( result.ANUPQautos ) then autos := result.ANUPQautos; fi; sublist := VALUE_PQ_OPTION("SubList", [ 1 .. Length( groups ) ]); if not IsList(sublist) then sublist := [ sublist ]; fi; for func in sublist do groups[func](lst); if IsBound( autos) and IsBound( autos[func] ) then autos[func]( lst[Length(lst)] ); fi; od; fi; # return the groups return lst; end ); ############################################################################# ## #F PqLetterInt( ) . . . . . . . . . . . . . . . ## InstallGlobalFunction( PqLetterInt, function ( n ) local letters, str, x, d; letters := [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" ] ; if n < 1 then Error( "number must be positive" ); elif n <= Length( letters ) then return letters[n]; fi; str := ""; n := n - 1; d := 1; repeat x := n mod Length( letters ) + d; str := Concatenation( letters[x], str ); n := QuoInt( n, Length( letters ) ); if n < 26 then d := 0; fi; until n < 1; return str; end ); ############################################################################# ## #F PQ_DESCENDANTS( ) . . . . . . . . . construct descendants of group ## InstallGlobalFunction( PQ_DESCENDANTS, function( args ) local datarec, p, class, G, ndescendants; datarec := ANUPQ_ARG_CHK("PqDescendants", args); if datarec.calltype = "interactive" and IsBound(datarec.descendants) then Info(InfoANUPQ, 1, "`PqDescendants' should not be called more than once for the"); Info(InfoANUPQ, 1, "same process ... returning previously computed descendants."); return datarec.descendants; elif datarec.calltype = "GAP3compatible" then # ANUPQ_ARG_CHK calls PQ_DESCENDANTS itself in this case # (so datarec.descendants has already been computed) return datarec.descendants; fi; PQ_AUT_GROUP(datarec.group); # make sure we have the aut. grp. # if is not capable and we want to compute something, return if HasIsCapable(datarec.group) and not IsCapable(datarec.group) and VALUE_PQ_OPTION("SetupFile") = fail then datarec.descendants := []; return datarec.descendants; fi; PushOptions(rec(nonuser := true)); p := PrimePGroup(datarec.group); class := PClassPGroup(datarec.group); if not( IsBound(datarec.pQuotient) and p = PrimePGroup(datarec.pQuotient) and class = datarec.class or IsBound(datarec.pCover) and p = PrimePGroup(datarec.pCover) and IsBound(datarec.pcoverclass) and class = datarec.pcoverclass - 1 ) then PQ_PC_PRESENTATION( datarec, "pQ" : Prime := p, ClassBound := class ); fi; if not( IsBound(datarec.pCover) and p = PrimePGroup(datarec.pCover) and class = datarec.pcoverclass - 1 ) then PQ_P_COVER( datarec ); fi; PQ_PG_SUPPLY_AUTS( datarec, "pG" ); ndescendants := PQ_PG_CONSTRUCT_DESCENDANTS( datarec ); PopOptions(); if datarec.calltype = "non-interactive" then PQ_COMPLETE_NONINTERACTIVE_FUNC_CALL(datarec); if IsBound( datarec.setupfile ) then return true; fi; fi; if ndescendants = 0 then datarec.descendants := []; return datarec.descendants; fi; datarec.descendants := PqList( Filename( ANUPQData.tmpdir, "GAP_library" ) : recursive ); for G in datarec.descendants do if not HasIsCapable(G) then SetIsCapable( G, false ); fi; SetIsPGroup( G, true ); SetPrimePGroup( G, p ); od; return datarec.descendants; end ); ############################################################################# ## #F PqDescendants( ... ) . . . . . . . . . construct descendants of #F PqDescendants( ) #F PqDescendants() ## InstallGlobalFunction( PqDescendants, function( arg ) return PQ_DESCENDANTS(arg); end ); ############################################################################# ## #F PqSetPQuotientToGroup( ) . . . set p-quotient as the group of process #F PqSetPQuotientToGroup() ## InstallGlobalFunction( PqSetPQuotientToGroup, function( arg ) local datarec; ANUPQ_IOINDEX_ARG_CHK(arg); datarec := ANUPQData.io[ ANUPQ_IOINDEX(arg) ]; if not IsBound(datarec.pQuotient) then Error( "p-quotient has not yet been calculated!\n" ); fi; datarec.group := datarec.pQuotient; end ); ############################################################################# ## #F SavePqList( , ) . . . . . . . . . save a list of descendants ## InstallGlobalFunction( SavePqList, function( file, list ) local appendExp, l, G, pcgs, p, i, w, str, word, j, automorphisms, r; # function to add exponent vector appendExp := function( str, word ) local first, s, oldLen, i, w; first := true; s := str; oldLen := 0; for i in [ 1 .. Length (word) ] do if word[i] <> 0 then w := Concatenation( "G.", String (i) ); if word[i] <> 1 then w := Concatenation( w, "^", String(word[i]) ); fi; if not first then w := Concatenation( "*", w ); fi; if Length(s)+Length(w)-oldLen >= 77 then s := Concatenation( s, "\n" ); oldLen := Length(s); fi; s := Concatenation( s, w ); first := false; fi; od; if first then s := Concatenation( s, "G.1^0" ); fi; return s; end; # print head of file PrintTo( file, "ANUPQgroups := [];\n" ); AppendTo( file, "Unbind(ANUPQautos);\n\n" ); # run through all groups in for l in [ 1 .. Length(list) ] do G := list[l]; pcgs := PcgsPCentralSeriesPGroup( G ); p := PrimePGroup( G ); AppendTo( file, "## group number: ", l, "\n" ); AppendTo( file, "ANUPQgroups[", l, "] := function( L )\n" ); AppendTo( file, "local G, A, B;\n" ); AppendTo( file, "G := FreeGroup( IsSyllableWordsFamily,\n" ); AppendTo( file, " ", Length(pcgs), ", \"G\" );\n" ); AppendTo( file, "G := G / [\n" ); # at first the power relators for i in [ 1 .. Length(pcgs) ] do if 1 < i then AppendTo( file, ",\n" ); fi; w := pcgs[i]^p; str := Concatenation( "G.", String(i), "^", String(p) ); if w <> One(G) then word := ExponentsOfPcElement( pcgs, w ); str := Concatenation( str, "/(" ); str := appendExp( str,word ); str := Concatenation( str, ")" ); fi; AppendTo( file, str ); od; # and now the commutator relators for i in [ 1 .. Length(pcgs)-1 ] do for j in [ i+1 .. Length(pcgs) ] do w := Comm( pcgs[j], pcgs[i] ); if w <> One(G) then word := ExponentsOfPcElement( pcgs, w ); str := Concatenation( ",\nComm( G.", String(j), ", G.", String(i), " )/(" ); str := appendExp( str, word ); AppendTo( file, str, ")" ); fi; od; od; AppendTo( file, "];\n" ); # convert group into an ag group, save presentation AppendTo( file, "G := PcGroupFpGroupNC(G);\n" ); # add automorphisms if HasAutomorphismGroup(G) then AppendTo( file, "A := [];\nB := [" ); for r in [ 1 .. RankPGroup(G) ] do AppendTo( file, "G.", r ); if r <> RankPGroup(G) then AppendTo( file, ", " ); else AppendTo( file, "];\n" ); fi; od; automorphisms := GeneratorsOfGroup( AutomorphismGroup( G ) ); for j in [ 1 .. Length(automorphisms) ] do AppendTo( file, "A[", j, "] := ["); for r in [ 1 .. RankPGroup(G) ] do word := Image( automorphisms[j], pcgs[r] ); word := ExponentsOfPcElement( pcgs, word ); AppendTo( file, appendExp( "", word ) ); if r <> RankPGroup(G) then AppendTo (file, ", \n"); fi; od; AppendTo( file, "]; \n"); od; AppendTo( file, "ANUPQSetAutomorphismGroup( G, B, A, " ); if HasIsSolvableGroup( AutomorphismGroup(G) ) then AppendTo( file, IsSolvableGroup( G ), " );\n" ); else AppendTo( file, false, " );\n" ); fi; fi; if HasNuclearRank( G ) then AppendTo( file, "SetNuclearRank( G, ", NuclearRank(G), " );\n" ); fi; if HasIsCapable( G ) then AppendTo( file, "SetIsCapable( G, ", IsCapable(G), " );\n" ); fi; if HasANUPQIdentity( G ) then AppendTo( file, "SetANUPQIdentity( G, ", ANUPQIdentity(G), " );\n" ); fi; AppendTo( file, "Add( L, G );\n" ); AppendTo( file, "end;\n\n\n" ); od; # write a magic string to the files AppendTo( file, "ANUPQmagic := \"groups saved to file\";\n" ); end ); #E anupga.gi . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupqopt.gi000644 000766 000024 00000065735 14355420571 016114 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqopt.gi ANUPQ package Werner Nickel #W Greg Gamble ## ## Install file for functions to do with option manipulation. ## #Y Copyright (C) 2001 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #V PQ_FUNCTION . . . . . . . . . internal functions called by user functions ## ## A record whose fields are (function) names and whose values are the ## internal functions called by the functions with those names. ## InstallValue( PQ_FUNCTION, rec( Pq := PQ_EPI_OR_PCOVER, PqDescendants := PQ_DESCENDANTS, StandardPresentation := PQ_EPIMORPHISM_STANDARD_PRESENTATION, PqDescendantsTreeCoclassOne := PqDescendantsTreeCoclassOne ) ); ############################################################################# ## #V ANUPQoptions . . . . . . . . . . . . . . . . . . . . admissible options ## ## is a record of lists of names of admissible {\ANUPQ} options, such that ## each field is either the name of a (``key'') {\ANUPQ} function and the ## corresponding value is the list of option names that are admissible for ## the function. ## InstallValue( ANUPQoptions, rec( # options for `Pq' and `PqEpimorphism' Pq := [ "Prime", "ClassBound", "Exponent", "Metabelian", "OutputLevel", "Relators", "Identities", "GroupName", "SetupFile", "PqWorkspace", "RedoPcp" ], # options for `PqDescendants' PqDescendants := [ "ClassBound", "OrderBound", "Relators", "GroupName", "StepSize", "PcgsAutomorphisms", "RankInitialSegmentSubgroups", "SpaceEfficient", "CapableDescendants", "AllDescendants", "Exponent", "Metabelian", "SubList", "BasicAlgorithm", "CustomiseOutput", "SetupFile", "PqWorkspace" ], # options for `[Epimorphism][Pq]StandardPresentation' StandardPresentation := [ "Prime", "pQuotient", "ClassBound", "Relators", "GroupName", "PcgsAutomorphisms", "Exponent", "Metabelian", "OutputLevel", "StandardPresentationFile", "SetupFile", "PqWorkspace" ], # options for `PqDescendantsTreeCoclassOne' PqDescendantsTreeCoclassOne := [ "ClassBound", "OrderBound", "Relators", "GroupName", "StepSize", "PcgsAutomorphisms", "RankInitialSegmentSubgroups", "SpaceEfficient", "CapableDescendants", "AllDescendants", "Exponent", "Metabelian", "SubList", "BasicAlgorithm", "CustomiseOutput", "TreeDepth", "SetupFile", "PqWorkspace" ], PqList := [ "SubList" ], PqPcPresentation := [ "Prime", "ClassBound", "Exponent", "Metabelian", "OutputLevel", "Relators", "Identities", "GroupName" ], PqNextClass := [ "QueueFactor" ], PqEvaluateIdentities := [ "Identities" ], PqDoExponentChecks := [ "Bounds" ], PqDisplayStructure := [ "Bounds" ], PqDisplayAutomorphisms := [ "Bounds" ], PqSPComputePcpAndPCover := [ "Prime", "ClassBound", "Exponent", "Metabelian", "OutputLevel", "Relators", "GroupName" ], PqSPSavePresentation := [ "ClassBound", "PcgsAutomorphisms", "StandardPresentationFile" ], PqPGSetDescendantToPcp := [ "Filename" ], PqPGSupplyAutomorphisms := [ "NumberOfSolubleAutomorphisms", "RelativeOrders" ], PqPGConstructDescendants := [ "ClassBound", "OrderBound", "StepSize", "PcgsAutomorphisms", "RankInitialSegmentSubgroups", "SpaceEfficient", "CapableDescendants", "AllDescendants", "Exponent", "Metabelian", "BasicAlgorithm", "CustomiseOutput" ], PqAPGDegree := [ "Exponent" ], PqAPGPermutations := [ "PcgsAutomorphisms", "SpaceEfficient", "PrintAutomorphisms", "PrintPermutations" ], PqAPGOrbits := [ "PcgsAutomorphisms", "SpaceEfficient", "CustomiseOutput" ], PqAPGOrbitRepresentatives := [ "PcgsAutomorphisms", "SpaceEfficient", "CapableDescendants", "AllDescendants", "Exponent", "Metabelian", "CustomiseOutput", "Filename" ], PqAPGSingleStage := [ "StepSize", "PcgsAutomorphisms", "RankInitialSegmentSubgroups", "SpaceEfficient", "CapableDescendants", "AllDescendants", "Exponent", "Metabelian", "BasicAlgorithm", "CustomiseOutput" ] ) ); ############################################################################# ## #F AllANUPQoptions() . . . . . . . . lists all options of the ANUPQ package ## ## lists all the {\GAP} options defined for functions of the {\ANUPQ} ## package. ## InstallGlobalFunction( AllANUPQoptions, function() return Set( Concatenation( List( RecNames(ANUPQoptions), fld -> ANUPQoptions.(fld) ) ) ); end ); ############################################################################# ## #V ANUPQGlobalOptions . . . . . options that can be set globally by PqStart ## ## A list of the options that `PqStart' can set and thereby make available ## to any function interacting with the {\ANUPQ} process initiated by ## `PqStart'. ## InstallValue( ANUPQGlobalOptions, [ "Prime", "Exponent", "Relators" ] ); ############################################################################# ## #V ANUPQoptionChecks . . . . . . . . . . . the checks for admissible options ## ## A record whose fields are the names of admissible ANUPQ options and whose ## values are one-argument functions that return `true' when given a value ## that is a valid value for the option, and `false' otherwise. ## InstallValue( ANUPQoptionChecks, rec( Prime := x -> IsInt(x) and IsPrimeInt(x), pQuotient := IsPcGroup and IsPGroup, ClassBound := IsPosInt, OrderBound := IsPosInt, Exponent := IsPosInt, Metabelian := IsBool, GroupName := IsString, Identities := x -> IsList(x) and ForAll(x, IsFunction), OutputLevel := x -> x in [0..3], Relators := x -> IsList(x) and ForAll(x, IsString), StandardPresentationFile := IsString, SetupFile := IsString, PqWorkspace := IsPosInt, StepSize := x -> IsPosInt(x) or (IsList(x) and ForAll(x, IsPosInt)), PcgsAutomorphisms := IsBool, BasicAlgorithm := IsBool, RankInitialSegmentSubgroups := x -> x = 0 or IsPosInt(x), SpaceEfficient := IsBool, CapableDescendants := IsBool, AllDescendants := IsBool, SubList := x -> IsPosInt(x) or (IsSet(x) and ForAll(x, IsInt) and IsPosInt(x[1])), CustomiseOutput := IsRecord, Bounds := x -> IsSet(x) and 2 = Length(x) and ForAll(x, IsPosInt), QueueFactor := IsPosInt, RedoPcp := IsBool, PrintAutomorphisms := IsBool, PrintPermutations := IsBool, NumberOfSolubleAutomorphisms := x -> x = 0 or IsPosInt(x), RelativeOrders := x -> IsList(x) and ForAll(x, IsPosInt), Filename := IsString, TreeDepth := IsPosInt ) ); ############################################################################# ## #V ANUPQoptionTypes . . . . . . the types (in words) for admissible options ## ## A record whose fields are the names of admissible ANUPQ options and whose ## values are valid types of the options in plain words. ## InstallValue( ANUPQoptionTypes, rec( Prime := "prime integer", pQuotient := "pc p-group", ClassBound := "positive integer", OrderBound := "positive integer", Exponent := "positive integer", Metabelian := "boolean", GroupName := "string", Identities := "list of functions", OutputLevel := "integer in [0..3]", Relators := "list of strings", StandardPresentationFile := "string", SetupFile := "string", PqWorkspace := "positive integer", StepSize := "positive integer or positive integer list", PcgsAutomorphisms := "boolean", BasicAlgorithm := "boolean", RankInitialSegmentSubgroups := "nonnegative integer", SpaceEfficient := "boolean", CapableDescendants := "boolean", AllDescendants := "boolean", SubList := "pos've integer or increasing pos've integer list", CustomiseOutput := "record", Bounds := "pair of increasing positive integers", QueueFactor := "positive integer", RedoPcp := "boolean", PrintAutomorphisms := "boolean", PrintPermutations := "boolean", NumberOfSolubleAutomorphisms := "nonnegative integer", RelativeOrders := "list of positive integers", Filename := "string", TreeDepth := "positive integer" ) ); ############################################################################# ## #F PQ_OTHER_OPTS_CHK( , ) . check opts belong to f'n ## ## checks the `OptionsStack' only has recognised options for (generic) ## function and if not and if `ANUPQWarnOfOtherOptions = true' ## (see~"ANUPQWarnOfOtherOptions") `Info's the non- options at ## `InfoANUPQ' level 1. ## ## The argument is only relevant for those functions that have ## both an interactive and non-interactive form, namely those with fields in ## `PQ_FUNCTION', for which some options need to be excluded. ## InstallGlobalFunction(PQ_OTHER_OPTS_CHK, function(funcname, interactive) local optnames, excopts, generic, interactivestr; if ANUPQWarnOfOtherOptions and ValueOption("recursive") = fail and not IsEmpty(OptionsStack) then excopts := []; if funcname in RecNames(PQ_FUNCTION) then if interactive then excopts := ["PqWorkspace", "SetupFile"]; interactivestr := "interactive"; else interactivestr := "non-interactive"; if funcname = "Pq" then excopts := ["RedoPcp"]; fi; fi; generic := "generic "; else generic := ""; fi; optnames := Difference( RecNames( OptionsStack[ Length(OptionsStack) ] ), Difference( ANUPQoptions.(funcname), excopts ) ); if funcname = "Pq" then optnames := Difference( optnames, ["PqEpiOrPCover"] ); fi; if not IsEmpty(optnames) then Info( InfoANUPQ + InfoWarning, 1, "ANUPQ Warning: Options: ", optnames, " ignored" ); if IsSubset(excopts, optnames) then Info( InfoANUPQ + InfoWarning, 1, "(invalid for ", interactivestr, " call of generic function: `", funcname, "')." ); else Info( InfoANUPQ + InfoWarning, 1, "(invalid for ", generic, "function: `", funcname, "')." ); fi; fi; fi; end); ############################################################################# ## #F VALUE_PQ_OPTION( ) . . . . . . . . . enhancement of ValueOption #F VALUE_PQ_OPTION( , ) #F VALUE_PQ_OPTION( , ) #F VALUE_PQ_OPTION( , , ) ## ## If the value of is not `fail' and it is an ok value ## for then is returned; if is not an ok value ## an error is signalled. If is `fail' and is given and ## .() is already bound then that value is returned; ## otherwise, if is `fail' and a default value ## different from `fail' is supplied then is returned. ## Supplying a of `fail' is special; it indicates that option ## must have a value i.e. is not allowed to be `fail' and ## if it is an error is signalled. If a argument is supplied, ## which must be a record, then the return value, if not `fail' and a legal ## value, is also stored in `.()'. ## ## *Note:* cannot be a record. ## InstallGlobalFunction(VALUE_PQ_OPTION, function(arg) local optname, optval, len; optname := arg[1]; optval := ValueOption(optname); len := Length(arg); if optval = fail then if 1 = len then return optval; elif IsRecord( arg[len] ) and IsBound( arg[len].(optname) ) then # return the previously recorded value return arg[len].(optname); elif not IsRecord(arg[2]) then if arg[2] = fail then Error("you must supply a value for option: \"", optname, "\"\n"); fi; optval := arg[2]; fi; elif not ANUPQoptionChecks.(optname)(optval) then Error("\"", optname, "\" value must be a ", ANUPQoptionTypes.(optname), "\n"); fi; if (optval <> fail) and (2 <= len) and IsRecord(arg[len]) then arg[len].(optname) := optval; fi; return optval; end); ############################################################################# ## #F PQ_OPTION_CHECK(,) . check optns present/setable if nec. ## ## If ` = "Pq"' (i.e. this check is carried out if the function ## called is `Pq', `PqEpimorphism' or `PqPCover') check that the option ## `Prime' has been passed or, in a special `PqPCover' case, can be ## determined from the `.group' which must be present. In the ## special `PqPCover' case, the options `Prime' and `ClassBound' determined ## are saved in . If `Prime' is not supplied in the cases where it ## needs to be, an error is emitted. ## InstallGlobalFunction(PQ_OPTION_CHECK, function(basefn, datarec) local optname, out; if basefn = "Pq" then if datarec.calltype = "interactive" then if VALUE_PQ_OPTION("RedoPcp", false) then PQ_UNBIND(datarec, ["Prime", "ClassBound", "Exponent", "Metabelian", "pCover", "pQuotient", "pQepi"] ); fi; fi; if ValueOption("PqEpiOrPCover") = "pCover" and HasIsPGroup(datarec.group) and IsPGroup(datarec.group) then if VALUE_PQ_OPTION("Prime", datarec) = fail then if not HasPrimePGroup(datarec.group) then Error( "supplied group is not known to be a p-group or p unknown.\n", "Option `Prime' must be supplied" ); else datarec.Prime := PrimePGroup(datarec.group); fi; fi; if VALUE_PQ_OPTION("ClassBound", datarec) = fail and HasPClassPGroup(datarec.group) then datarec.ClassBound := PClassPGroup(datarec.group); fi; else VALUE_PQ_OPTION("Prime", fail, datarec); fi; VALUE_PQ_OPTION("ClassBound", 63, datarec); elif basefn = "StandardPresentation" then if VALUE_PQ_OPTION("Prime", datarec) = fail and VALUE_PQ_OPTION("pQuotient", datarec) = fail then if IsPcGroup(datarec.group) and IsPGroup(datarec.group) then datarec.Prime := PrimePGroup(datarec.group); else Error( "since group of process is not a pc p-group, a prime or\n", "p-quotient (pc group) of the group of the process ", "must be supplied\n" ); fi; fi; fi; end); ############################################################################# ## #F PQ_CUSTOMISE_OUTPUT(, , , ) ## ## writes the required output to the `pq' binary for the sub-option ## of the option `CustomiseOutput', the value of that option having ## previously been stored in `.des.CustomiseOutput'; ## is part of the comment written to the `pq' binary for the sub-option and ## is a list of such comments for the supplementary questions ## asked by the `pq' binary for the sub-option . ## InstallGlobalFunction( PQ_CUSTOMISE_OUTPUT, function(datarec, subopt, suboptstring, suppstrings) local optrec, isOptionSet, i; optrec := datarec.des.CustomiseOutput; if IsEmpty(suppstrings) then isOptionSet := IsBound( optrec.(subopt) ) and optrec.(subopt) in [1, true]; ToPQ_BOOL(datarec, isOptionSet, suboptstring); elif IsBound( optrec.(subopt) ) and IsList( optrec.(subopt) ) then ToPQ(datarec, [ 0 ], [ " #customise ", suboptstring ]); for i in [1 .. Length(suppstrings)] do isOptionSet := IsBound( optrec.(subopt)[i] ) and optrec.(subopt)[i] in [1, true]; ToPQ_BOOL(datarec, isOptionSet, suppstrings[i]); od; else ToPQ(datarec, [ 1 ], [ " #default ", suboptstring ]); fi; end); ############################################################################# ## #F PQ_APG_CUSTOM_OUTPUT(, , , ) ## ## writes the required output to the `pq' binary for the sub-option ## of the option `CustomiseOutput', as required by an Advanced p-Group ## Generation Menu item, the value of that option having previously been ## stored in `.des.CustomiseOutput'; is part of the ## comment written to the `pq' binary for the sub-option and ## is a list of such comments for the supplementary questions asked by the ## `pq' binary for the sub-option . ## InstallGlobalFunction( PQ_APG_CUSTOM_OUTPUT, function(datarec, subopt, suboptstring, suppstrings) local optrec, optlist, isOptionSet, i; optrec := datarec.des.CustomiseOutput; if not( IsRecord(optrec) and IsBound( optrec.(subopt) ) and IsList( optrec.(subopt) ) ) then optlist := []; datarec.des.CustomiseOutput.(subopt) := optlist; else optlist := optrec.(subopt); fi; for i in [1 .. Length(suppstrings)] do isOptionSet := IsBound( optlist[i] ) and optlist[i] in [1, true]; ToPQ_BOOL(datarec, isOptionSet, suppstrings[i]); od; end); ############################################################################# ## #F SET_ANUPQ_OPTIONS( , ) . set options from OptionStack ## ## When called by a function with name sets the options from ## `OptionsStack' checking that they are a subset of ## `ANUPQoptions.'. Both and should be strings. ## InstallGlobalFunction( SET_ANUPQ_OPTIONS, function( funcname, fnname ) local optrec, optnames, opt; # there should be options if IsEmpty( OptionsStack ) then # no options?? optrec := rec(); Info( InfoANUPQ, 1, funcname, " called with no options!" ); else optrec := ShallowCopy( OptionsStack[ Length( OptionsStack ) ] ); optnames := Set( REC_NAMES(optrec) ); SubtractSet( optnames, Set( ANUPQoptions.(fnname) ) ); Info( InfoANUPQ, 2, funcname, " called with options: ", OptionsStack[ Length( OptionsStack ) ] ); if 0 < Length(optnames) then # it's not an error to have unknown options, # function may have been called recursively and the # options may be intended for some other function Info( InfoWarning + InfoANUPQ, 2, funcname, " called with unknown options: ", optnames); fi; for opt in optnames do Unbind( optrec.(opt) ); od; fi; return optrec; end ); ############################################################################# ## #F ANUPQoptError( , ) . . . . . create an error message ## ## creates an error message for the function with name . If ## is a string it is taken to be the first line of the error ## message. Otherwise should be alist of illegal options (strings) ## found. The error message (string) returned also gives the list of valid ## options together with the value types expected for function . ## InstallGlobalFunction( ANUPQoptError, function( funcname, illegal ) local Optstring, Valstring, errmsg, optname; Optstring := optname -> Concatenation("\"", optname, "\""); Valstring := optval -> Concatenation("<", optval, ">"); if IsString(illegal) then errmsg := illegal; else # IsList(illegal) errmsg := Concatenation("Illegal ", funcname, " option"); if Length(illegal) > 1 then Append(errmsg, "s"); fi; Append(errmsg, ": "); Append(errmsg, JoinStringsWithSeparator( List(illegal, Optstring) )); fi; Append(errmsg, Concatenation(".\nValid ", funcname, " options:\n")); for optname in ANUPQoptions.(funcname) do Append(errmsg, " "); Append(errmsg, Optstring(optname)); if ANUPQoptionChecks.(optname) <> IsBool then Append(errmsg, ", "); Append(errmsg, Valstring( ANUPQoptionTypes.(optname) )); fi; Append(errmsg, "\n"); od; return errmsg; end ); ############################################################################# ## #F ANUPQextractOptions( , ) . . . . . . . . extract options ## ## extracts options from for function with name and ## returns a record suitable for use with `PushOptions'. Abbreviations are ## allowed for option names so long as each abbreviates a unique option ## name. ## InstallGlobalFunction( ANUPQextractOptions, function(funcname, args) local Match, error, optrec, i, optname; # allow to give only a prefix Match := function( argi ) local matches; if IsString(argi) then matches := Filtered(ANUPQoptions.(funcname), optname -> 0 < Length(argi) and Length(argi) <= Length(optname) and optname{[1..Length(argi)]} = argi); if 1 = Length(matches) then return matches[1]; fi; error := Concatenation( "argument: \"", argi, "\" doesn't abbreviate a unique option"); else error := Concatenation( "argument: ", String(argi), " is not a (non-null) string (option name)" ); fi; return fail; end; # extract options from args optrec := rec(); i := 1; while i <= Length(args) do optname := Match( args[i] ); if optname = fail then Error( ANUPQoptError( funcname, error ) ); elif ANUPQoptionChecks.(optname) = IsBool then optrec.(optname) := true; i := i + 1; elif i = Length(args) then # all remaining options are non-boolean and expect a value to # follow Error( ANUPQoptError( funcname, Concatenation( "Expected value for option: ", args[i] ) ) ); else # checking values are ok is done later optrec.(optname) := args[i + 1]; i := i + 2; fi; od; return optrec; end ); #E anupqopt.gi . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupqi.gd000644 000766 000024 00000077272 14355420571 015534 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqi.gd ANUPQ package Greg Gamble ## ## This file declares interactive functions that execute individual pq menu ## options. ## #Y Copyright (C) 2001 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #F PQ_UNBIND( , ) . . . . . unbind fields of a data record ## DeclareGlobalFunction( "PQ_UNBIND" ); ############################################################################# ## #F PQ_AUT_GROUP( ) . . . . . . . . . . . . . . . . . automorphism group ## DeclareGlobalFunction( "PQ_AUT_GROUP" ); ############################################################################# ## #F PQ_AUT_INPUT( , : ) . . . . . . automorphism input ## DeclareGlobalFunction( "PQ_AUT_INPUT" ); ############################################################################# ## #F PQ_MANUAL_AUT_INPUT(,) . automorphism input w/o an Aut gp ## DeclareGlobalFunction( "PQ_MANUAL_AUT_INPUT" ); ############################################################################# ## #F PQ_AUT_ARG_CHK(, ) . checks args for a func defining auts ## DeclareGlobalFunction( "PQ_AUT_ARG_CHK" ); ############################################################################# ## #F PQ_PC_PRESENTATION( ,

) . . . . . . p-Q/SP menu option 1 ## DeclareGlobalFunction( "PQ_PC_PRESENTATION" ); ############################################################################# ## #F PqPcPresentation( : ) . . user version of p-Q menu option 1 #F PqPcPresentation( : ) ## DeclareGlobalFunction( "PqPcPresentation" ); ############################################################################# ## #F PQ_SAVE_PC_PRESENTATION( , ) . . . p-Q menu option 2 ## DeclareGlobalFunction( "PQ_SAVE_PC_PRESENTATION" ); ############################################################################# ## #F PQ_PATH_CURRENT_DIRECTORY() . . . . . . . . . . essentially the UNIX pwd ## DeclareGlobalFunction( "PQ_PATH_CURRENT_DIRECTORY" ); ############################################################################# ## #F PQ_CHK_PATH(, , ) . . . . . . . check/add to path ## DeclareGlobalFunction( "PQ_CHK_PATH" ); ############################################################################# ## #F PqSavePcPresentation( , ) . . user ver. of p-Q menu opt. 2 #F PqSavePcPresentation( ) ## DeclareGlobalFunction( "PqSavePcPresentation" ); ############################################################################# ## #F PQ_RESTORE_PC_PRESENTATION( , ) . . p-Q menu option 3 ## DeclareGlobalFunction( "PQ_RESTORE_PC_PRESENTATION" ); ############################################################################# ## #F PqRestorePcPresentation( , ) . user ver. of p-Q menu opt. 3 #F PqRestorePcPresentation( ) ## DeclareGlobalFunction( "PqRestorePcPresentation" ); ############################################################################# ## #F PQ_DISPLAY_PRESENTATION( ) . . . . . . . . . any menu option 4 ## DeclareGlobalFunction( "PQ_DISPLAY_PRESENTATION" ); ############################################################################# ## #F PQ_GRP_EXISTS_CHK( ) . . check the `pq' binary knows about a gp ## DeclareGlobalFunction( "PQ_GRP_EXISTS_CHK" ); ############################################################################# ## #F PQ_SET_GRP_DATA( ) . save group data of current class of group ## DeclareGlobalFunction( "PQ_SET_GRP_DATA" ); ############################################################################# ## #F PQ_DATA( ) . . . . gets class/gen'r data from (A)p-Q menu opt 4 ## DeclareGlobalFunction( "PQ_DATA" ); ############################################################################# ## #F PQ_DATA_CHK( ) . . . call PQ_DATA if class/gen'r data out-of-date ## DeclareGlobalFunction( "PQ_DATA_CHK" ); ############################################################################# ## #F PqFactoredOrder( ) . the `pq' binary's current group's factored order #F PqFactoredOrder() ## DeclareGlobalFunction( "PqFactoredOrder" ); ############################################################################# ## #F PqOrder( ) . . . . the order of the current group of the `pq' binary #F PqOrder() ## DeclareGlobalFunction( "PqOrder" ); ############################################################################# ## #F PqPClass( ) . . . the p class of the current group of the `pq' binary #F PqPClass() ## DeclareGlobalFunction( "PqPClass" ); ############################################################################# ## #F PqNrPcGenerators( ) . number of pc gen'rs of `pq' binary's current gp #F PqNrPcGenerators() ## DeclareGlobalFunction( "PqNrPcGenerators" ); ############################################################################# ## #F PqWeight( , ) . . . . . . . . . . . . . . . weight of a generator #F PqWeight( ) ## DeclareGlobalFunction( "PqWeight" ); ############################################################################# ## #F PqCurrentGroup( ) . . . . extracts the current quotient as a pc group #F PqCurrentGroup() ## DeclareGlobalFunction( "PqCurrentGroup" ); ############################################################################# ## #F PqDisplayPcPresentation( ) . . . . user version of p-Q menu option 4 #F PqDisplayPcPresentation() ## DeclareGlobalFunction( "PqDisplayPcPresentation" ); ############################################################################# ## #F PQ_SET_OUTPUT_LEVEL(, ) . . . . p-Q/SP/A p-Q menu option 5 ## DeclareGlobalFunction( "PQ_SET_OUTPUT_LEVEL" ); ############################################################################# ## #F PqSetOutputLevel( , ) . user version of p-Q/SP/A p-Q menu opt 5 #F PqSetOutputLevel( ) ## DeclareGlobalFunction( "PqSetOutputLevel" ); ############################################################################# ## #F PQ_NEXT_CLASS( ) . . . . . . . . . . . . . . p-Q menu option 6 ## DeclareGlobalFunction( "PQ_NEXT_CLASS" ); ############################################################################# ## #F PqNextClass( ) . . . . . . . . . . user version of p-Q menu option 6 #F PqNextClass() ## DeclareGlobalFunction( "PqNextClass" ); ############################################################################# ## #F PQ_P_COVER( ) . . . . . . . . . . . . . . . . p-Q menu option 7 ## DeclareGlobalFunction( "PQ_P_COVER" ); ############################################################################# ## #F PqComputePCover( ) . . . . . . . . user version of p-Q menu option 7 #F PqComputePCover() ## DeclareGlobalFunction( "PqComputePCover" ); ############################################################################# ## #F PQ_EVALUATE_IDENTITIES() . evaluate Identities option identities ## DeclareGlobalFunction( "PQ_EVALUATE_IDENTITIES" ); ############################################################################# ## #F PqEvaluateIdentities( ) . . . . evaluate Identities option identities #F PqEvaluateIdentities() ## DeclareGlobalFunction( "PqEvaluateIdentities" ); ############################################################################# ## #F PQ_FINISH_NEXT_CLASS( ) . . . take the p-cover to a next class ## DeclareGlobalFunction( "PQ_FINISH_NEXT_CLASS" ); ############################################################################# ## #F PQ_COLLECT( , ) . . . . . . . . . . . A p-Q menu option 1 ## DeclareGlobalFunction( "PQ_COLLECT" ); ############################################################################# ## #F PQ_CHECK_WORD( , , ) . . check word or list ## DeclareGlobalFunction( "PQ_CHECK_WORD" ); ############################################################################# ## #F PQ_WORD( ) . . . . parse pq output for a word in pc generators ## DeclareGlobalFunction( "PQ_WORD" ); ############################################################################# ## #F PQ_CHK_COLLECT_COMMAND_ARGS( ) . . check args for a collect cmd ok ## DeclareGlobalFunction( "PQ_CHK_COLLECT_COMMAND_ARGS" ); ############################################################################# ## #F PqCollect( , ) . . . . . . user version of A p-Q menu option 1 #F PqCollect( ) ## DeclareGlobalFunction( "PqCollect" ); ############################################################################# ## #F PQ_SOLVE_EQUATION( , , ) . . . . . . A p-Q menu option 2 ## DeclareGlobalFunction( "PQ_SOLVE_EQUATION" ); ############################################################################# ## #F PqSolveEquation( , , ) . . user version of A p-Q menu option 2 #F PqSolveEquation( , ) ## DeclareGlobalFunction( "PqSolveEquation" ); ############################################################################# ## #F PQ_COMMUTATOR( , , , ) . A p-Q menu opts 3/24 ## DeclareGlobalFunction( "PQ_COMMUTATOR" ); ############################################################################# ## #F PQ_COMMUTATOR_CHK_ARGS( ) . . . . check args for commutator cmd ok ## DeclareGlobalFunction( "PQ_COMMUTATOR_CHK_ARGS" ); ############################################################################# ## #F PqCommutator( , , ) . user version of A p-Q menu option 3 #F PqCommutator( , ) ## DeclareGlobalFunction( "PqCommutator" ); ############################################################################# ## #F PQ_SETUP_TABLES_FOR_NEXT_CLASS( ) . . . . . A p-Q menu option 6 ## DeclareGlobalFunction( "PQ_SETUP_TABLES_FOR_NEXT_CLASS" ); ############################################################################# ## #F PqSetupTablesForNextClass( ) . . user version of A p-Q menu option 6 #F PqSetupTablesForNextClass() ## DeclareGlobalFunction( "PqSetupTablesForNextClass" ); ############################################################################# ## #F PQ_INSERT_TAILS( , , ) . . A p-Q menu option 7 ## DeclareGlobalFunction( "PQ_INSERT_TAILS" ); ############################################################################# ## #F PQ_CHK_TAILS_ARGS( ) . . . . . check args for insert tails cmd ok ## DeclareGlobalFunction( "PQ_CHK_TAILS_ARGS" ); ############################################################################# ## #F PqAddTails( , ) . . . . adds tails using A p-Q menu option 7 #F PqAddTails( ) ## DeclareGlobalFunction( "PqAddTails" ); ############################################################################# ## #F PqComputeTails( , ) . . computes tails using A p-Q menu opt 7 #F PqComputeTails( ) ## DeclareGlobalFunction( "PqComputeTails" ); ############################################################################# ## #F PqTails( , ) . computes and adds tails using A p-Q menu opt 7 #F PqTails( ) ## DeclareGlobalFunction( "PqTails" ); ############################################################################# ## #F PQ_DO_CONSISTENCY_CHECKS(, , ) . A p-Q menu opt 8 ## DeclareGlobalFunction( "PQ_DO_CONSISTENCY_CHECKS" ); ############################################################################# ## #F PqDoConsistencyChecks(,,) . user ver of A p-Q menu opt 8 #F PqDoConsistencyChecks( , ) ## DeclareGlobalFunction( "PqDoConsistencyChecks" ); ############################################################################# ## #F PQ_COLLECT_DEFINING_RELATIONS( ) . . . . . A p-Q menu option 9 ## DeclareGlobalFunction( "PQ_COLLECT_DEFINING_RELATIONS" ); ############################################################################# ## #F PqCollectDefiningRelations( ) . . user version of A p-Q menu option 9 #F PqCollectDefiningRelations() ## DeclareGlobalFunction( "PqCollectDefiningRelations" ); ############################################################################# ## #F PQ_DO_EXPONENT_CHECKS( , ) . . . . . A p-Q menu option 10 ## DeclareGlobalFunction( "PQ_DO_EXPONENT_CHECKS" ); ############################################################################# ## #F PqDoExponentChecks([: Bounds := ]) . user ver A p-Q menu opt. 10 #F PqDoExponentChecks([: Bounds := ]) ## DeclareGlobalFunction( "PqDoExponentChecks" ); ############################################################################# ## #F PQ_ELIMINATE_REDUNDANT_GENERATORS( ) . . . A p-Q menu option 11 ## DeclareGlobalFunction( "PQ_ELIMINATE_REDUNDANT_GENERATORS" ); ############################################################################# ## #F PqEliminateRedundantGenerators( ) . user ver of A p-Q menu option 11 #F PqEliminateRedundantGenerators() ## DeclareGlobalFunction( "PqEliminateRedundantGenerators" ); ############################################################################# ## #F PQ_REVERT_TO_PREVIOUS_CLASS( ) . . . . . . A p-Q menu option 12 ## DeclareGlobalFunction( "PQ_REVERT_TO_PREVIOUS_CLASS" ); ############################################################################# ## #F PqRevertToPreviousClass( ) . . . user version of A p-Q menu option 12 #F PqRevertToPreviousClass() ## DeclareGlobalFunction( "PqRevertToPreviousClass" ); ############################################################################# ## #F PQ_SET_MAXIMAL_OCCURRENCES( , ) . . A p-Q menu opt. 13 ## DeclareGlobalFunction( "PQ_SET_MAXIMAL_OCCURRENCES" ); ############################################################################# ## #F PqSetMaximalOccurrences( , ) . user ver of A p-Q menu opt. 13 #F PqSetMaximalOccurrences( ) ## DeclareGlobalFunction( "PqSetMaximalOccurrences" ); ############################################################################# ## #F PQ_SET_METABELIAN( ) . . . . . . . . . . . A p-Q menu option 14 ## DeclareGlobalFunction( "PQ_SET_METABELIAN" ); ############################################################################# ## #F PqSetMetabelian( ) . . . . . . . user version of A p-Q menu option 14 #F PqSetMetabelian() ## DeclareGlobalFunction( "PqSetMetabelian" ); ############################################################################# ## #F PQ_DO_CONSISTENCY_CHECK( , , , ) . A p-Q menu option 15 ## DeclareGlobalFunction( "PQ_DO_CONSISTENCY_CHECK" ); ############################################################################# ## #F PqDoConsistencyCheck(, , , ) . user ver of A p-Q menu opt 15 #F PqDoConsistencyCheck( , , ) #F PqJacobi(, , , ) #F PqJacobi( , , ) ## DeclareGlobalFunction( "PqDoConsistencyCheck" ); DeclareSynonym( "PqJacobi", PqDoConsistencyCheck ); ############################################################################# ## #F PQ_COMPACT( ) . . . . . . . . . . . . . . A p-Q menu option 16 ## DeclareGlobalFunction( "PQ_COMPACT" ); ############################################################################# ## #F PqCompact( ) . . . . . . . . . . user version of A p-Q menu option 16 #F PqCompact() ## DeclareGlobalFunction( "PqCompact" ); ############################################################################# ## #F PQ_ECHELONISE( ) . . . . . . . . . . . . . A p-Q menu option 17 ## DeclareGlobalFunction( "PQ_ECHELONISE" ); ############################################################################# ## #F PqEchelonise( ) . . . . . . . . user version of A p-Q menu option 17 #F PqEchelonise() ## DeclareGlobalFunction( "PqEchelonise" ); ############################################################################# ## #F PQ_SUPPLY_OR_EXTEND_AUTOMORPHISMS([,]) A p-Q menu opt 18 ## DeclareGlobalFunction( "PQ_SUPPLY_OR_EXTEND_AUTOMORPHISMS" ); ############################################################################# ## #F PqSupplyAutomorphisms(, ) . . supply auts via A p-Q menu opt 18 #F PqSupplyAutomorphisms( ) ## DeclareGlobalFunction( "PqSupplyAutomorphisms" ); ############################################################################# ## #F PqExtendAutomorphisms( ) . . . . . extend auts via A p-Q menu opt 18 #F PqExtendAutomorphisms() ## DeclareGlobalFunction( "PqExtendAutomorphisms" ); ############################################################################# ## #F PQ_CLOSE_RELATIONS( , ) . . . . . . A p-Q menu option 19 ## DeclareGlobalFunction( "PQ_CLOSE_RELATIONS" ); ############################################################################# ## #F PqApplyAutomorphisms( , ) . . user ver of A p-Q menu option 19 #F PqApplyAutomorphisms( ) ## DeclareGlobalFunction( "PqApplyAutomorphisms" ); ############################################################################# ## #F PQ_DISPLAY( , , , ) . A p-Q menu option 20/21 ## DeclareGlobalFunction( "PQ_DISPLAY" ); ############################################################################# ## #F PQ_BOUNDS( , ) . . provide bounds from option or default ## DeclareGlobalFunction( "PQ_BOUNDS" ); ############################################################################# ## #F PqDisplayStructure([: Bounds := ]) . user ver A p-Q menu opt. 20 #F PqDisplayStructure([: Bounds := ]) ## DeclareGlobalFunction( "PqDisplayStructure" ); ############################################################################# ## #F PqDisplayAutomorphisms([: Bounds := ]) . u ver A p-Q menu opt 21 #F PqDisplayAutomorphisms([: Bounds := ]) ## DeclareGlobalFunction( "PqDisplayAutomorphisms" ); ############################################################################# ## #F PQ_COLLECT_DEFINING_GENERATORS( , ) . . A p-Q menu opt 23 ## DeclareGlobalFunction( "PQ_COLLECT_DEFINING_GENERATORS" ); ############################################################################# ## #F PqCollectWordInDefiningGenerators(,) . u ver of A p-Q menu op 23 #F PqCollectWordInDefiningGenerators( ) ## DeclareGlobalFunction( "PqCollectWordInDefiningGenerators" ); ############################################################################# ## #F PqCommutatorDefiningGenerators(,,) . user ver A p-Q opt 24 #F PqCommutatorDefiningGenerators( , ) ## DeclareGlobalFunction( "PqCommutatorDefiningGenerators" ); ############################################################################# ## #F PQ_WRITE_PC_PRESENTATION( , ) . A p-Q menu option 25 ## DeclareGlobalFunction( "PQ_WRITE_PC_PRESENTATION" ); ############################################################################# ## #F PqWritePcPresentation( , ) . user ver. of A p-Q menu opt 25 #F PqWritePcPresentation( ) ## DeclareGlobalFunction( "PqWritePcPresentation" ); ############################################################################# ## #F PQ_WRITE_COMPACT_DESCRIPTION( ) . . . . . A p-Q menu option 26 ## DeclareGlobalFunction( "PQ_WRITE_COMPACT_DESCRIPTION" ); ############################################################################# ## #F PqWriteCompactDescription( ) . . user version of A p-Q menu option 26 #F PqWriteCompactDescription() ## DeclareGlobalFunction( "PqWriteCompactDescription" ); ############################################################################# ## #F PQ_EVALUATE_CERTAIN_FORMULAE( ) . . . . . A p-Q menu option 27 ## DeclareGlobalFunction( "PQ_EVALUATE_CERTAIN_FORMULAE" ); ############################################################################# ## #F PqEvaluateCertainFormulae( ) . . user version of A p-Q menu option 27 #F PqEvaluateCertainFormulae() ## DeclareGlobalFunction( "PqEvaluateCertainFormulae" ); ############################################################################# ## #F PQ_EVALUATE_ACTION( ) . . . . . . . . . . A p-Q menu option 28 ## DeclareGlobalFunction( "PQ_EVALUATE_ACTION" ); ############################################################################# ## #F PqEvaluateAction( ) . . . . . . user version of A p-Q menu option 28 #F PqEvaluateAction() ## DeclareGlobalFunction( "PqEvaluateAction" ); ############################################################################# ## #F PQ_EVALUATE_ENGEL_IDENTITY( ) . . . . . . . A p-Q menu option 29 ## DeclareGlobalFunction( "PQ_EVALUATE_ENGEL_IDENTITY" ); ############################################################################# ## #F PqEvaluateEngelIdentity( ) . . . user version of A p-Q menu option 29 #F PqEvaluateEngelIdentity() ## DeclareGlobalFunction( "PqEvaluateEngelIdentity" ); ############################################################################# ## #F PQ_PROCESS_RELATIONS_FILE( ) . . . . . . . A p-Q menu option 30 ## DeclareGlobalFunction( "PQ_PROCESS_RELATIONS_FILE" ); ############################################################################# ## #F PqProcessRelationsFile( ) . . . . user version of A p-Q menu option 30 #F PqProcessRelationsFile() ## DeclareGlobalFunction( "PqProcessRelationsFile" ); ############################################################################# ## #F PqSPComputePcpAndPCover( : ) . . . user ver of SP menu opt. 1 #F PqSPComputePcpAndPCover( : ) ## DeclareGlobalFunction( "PqSPComputePcpAndPCover" ); ############################################################################# ## #F PQ_SP_STANDARD_PRESENTATION([,] :) SP menu opt 2 ## DeclareGlobalFunction( "PQ_SP_STANDARD_PRESENTATION" ); ############################################################################# ## #F PqSPStandardPresentation([,]:) user ver SP menu opt 2 #F PqSPStandardPresentation([] : ) ## DeclareGlobalFunction( "PqSPStandardPresentation" ); ############################################################################# ## #F PQ_SP_SAVE_PRESENTATION( , ) . . . . SP menu option 3 ## DeclareGlobalFunction( "PQ_SP_SAVE_PRESENTATION" ); ############################################################################# ## #F PqSPSavePresentation( , ) . . user ver of SP menu option 3 #F PqSPSavePresentation( ) ## DeclareGlobalFunction( "PqSPSavePresentation" ); ############################################################################# ## #F PQ_SP_COMPARE_TWO_FILE_PRESENTATIONS(,,) . SP menu opt 6 ## DeclareGlobalFunction( "PQ_SP_COMPARE_TWO_FILE_PRESENTATIONS" ); ############################################################################# ## #F PqSPCompareTwoFilePresentations(,,) user ver of SP menu opt 6 #F PqSPCompareTwoFilePresentations(,) ## DeclareGlobalFunction( "PqSPCompareTwoFilePresentations" ); ############################################################################# ## #F PQ_SP_ISOMORPHISM( ) . . . . . . . . . . . . . SP menu option 8 ## DeclareGlobalFunction( "PQ_SP_ISOMORPHISM" ); ############################################################################# ## #F PqSPIsomorphism( ) . . . . . . . . . user version of SP menu option 8 #F PqSPIsomorphism() ## DeclareGlobalFunction( "PqSPIsomorphism" ); ############################################################################# ## #F PQ_PG_SUPPLY_AUTS( [, ], ) . p-G/A p-G menu opt 1 ## DeclareGlobalFunction( "PQ_PG_SUPPLY_AUTS" ); ############################################################################# ## #F PqPGSupplyAutomorphisms( [, ] ) . user ver of pG menu option 1 #F PqPGSupplyAutomorphisms([]) ## DeclareGlobalFunction( "PqPGSupplyAutomorphisms" ); ############################################################################# ## #F PQ_PG_EXTEND_AUTOMORPHISMS( ) . . . . . p-G/A p-G menu option 2 ## DeclareGlobalFunction( "PQ_PG_EXTEND_AUTOMORPHISMS" ); ############################################################################# ## #F PqPGExtendAutomorphisms( ) . . . . user version of p-G menu option 2 #F PqPGExtendAutomorphisms() ## DeclareGlobalFunction( "PqPGExtendAutomorphisms" ); ############################################################################# ## #F PQ_PG_RESTORE_GROUP(, , ) . . . . . p-G/A p-G menu opt 3 ## DeclareGlobalFunction( "PQ_PG_RESTORE_GROUP" ); ############################################################################# ## #F PqPGSetDescendantToPcp( , , ) . u ver of p-G/A p-G menu opt 3 #F PqPGSetDescendantToPcp( , ) #F PqPGSetDescendantToPcp( [: Filename := ]) #F PqPGSetDescendantToPcp([: Filename := ]) #F PqPGRestoreDescendantFromFile(, , ) #F PqPGRestoreDescendantFromFile( , ) #F PqPGRestoreDescendantFromFile( [: Filename := ]) #F PqPGRestoreDescendantFromFile([: Filename := ]) ## DeclareGlobalFunction( "PqPGSetDescendantToPcp" ); DeclareSynonym( "PqPGRestoreDescendantFromFile", PqPGSetDescendantToPcp ); ############################################################################# ## #F PQ_PG_CONSTRUCT_DESCENDANTS( : ) . . pG menu option 5 ## DeclareGlobalFunction( "PQ_PG_CONSTRUCT_DESCENDANTS" ); ############################################################################# ## #F PqPGConstructDescendants( : ) . user ver. of p-G menu op. 5 #F PqPGConstructDescendants( : ) ## DeclareGlobalFunction( "PqPGConstructDescendants" ); ############################################################################# ## #F PqAPGSupplyAutomorphisms( [, ] ) . user ver of A p-G menu opt 1 #F PqAPGSupplyAutomorphisms([]) ## DeclareGlobalFunction( "PqAPGSupplyAutomorphisms" ); ############################################################################# ## #F PqAPGSingleStage( : ) . user version of A p-G menu option 5 #F PqAPGSingleStage( : ) ## DeclareGlobalFunction( "PqAPGSingleStage" ); ############################################################################# ## #F PQ_APG_DEGREE( , , ) . . . . . A p-G menu option 6 ## DeclareGlobalFunction( "PQ_APG_DEGREE" ); ############################################################################# ## #F PqAPGDegree(,,[: Exponent := ]) . u ver A p-G menu op 6 #F PqAPGDegree( , [: Exponent := ]) ## DeclareGlobalFunction( "PqAPGDegree" ); ############################################################################# ## #F PQ_APG_PERMUTATIONS( ) . . . . . . . . . . A p-G menu option 7 ## DeclareGlobalFunction( "PQ_APG_PERMUTATIONS" ); ############################################################################# ## #F PqAPGPermutations( : ) . user version of A p-G menu optn. 7 #F PqAPGPermutations( : ) ## DeclareGlobalFunction( "PqAPGPermutations" ); ############################################################################# ## #F PQ_APG_ORBITS( ) . . . . . . . . . . . . . . A p-G menu option 8 ## DeclareGlobalFunction( "PQ_APG_ORBITS" ); ############################################################################# ## #F PqAPGOrbits( ) . . . . . . . . . . user version of A p-G menu option 8 #F PqAPGOrbits() ## DeclareGlobalFunction( "PqAPGOrbits" ); ############################################################################# ## #F PQ_APG_ORBIT_REPRESENTATIVES( ) . . . . . . A p-G menu option 9 ## DeclareGlobalFunction( "PQ_APG_ORBIT_REPRESENTATIVES" ); ############################################################################# ## #F PqAPGOrbitRepresentatives( ) . . . user version of A p-G menu option 9 #F PqAPGOrbitRepresentatives() ## DeclareGlobalFunction( "PqAPGOrbitRepresentatives" ); ############################################################################# ## #F PQ_APG_ORBIT_REPRESENTATIVE( ) . . . . . . A p-G menu option 10 ## DeclareGlobalFunction( "PQ_APG_ORBIT_REPRESENTATIVE" ); ############################################################################# ## #F PqAPGOrbitRepresentative( ) . . . user version of A p-G menu option 10 #F PqAPGOrbitRepresentative() ## DeclareGlobalFunction( "PqAPGOrbitRepresentative" ); ############################################################################# ## #F PQ_APG_STANDARD_MATRIX_LABEL( ) . . . . . . A p-G menu option 11 ## DeclareGlobalFunction( "PQ_APG_STANDARD_MATRIX_LABEL" ); ############################################################################# ## #F PqAPGStandardMatrixLabel( ) . . . user version of A p-G menu option 11 #F PqAPGStandardMatrixLabel() ## DeclareGlobalFunction( "PqAPGStandardMatrixLabel" ); ############################################################################# ## #F PQ_APG_MATRIX_OF_LABEL( ) . . . . . . . . . A p-G menu option 12 ## DeclareGlobalFunction( "PQ_APG_MATRIX_OF_LABEL" ); ############################################################################# ## #F PqAPGMatrixOfLabel( ) . . . . . . user version of A p-G menu option 12 #F PqAPGMatrixOfLabel() ## DeclareGlobalFunction( "PqAPGMatrixOfLabel" ); ############################################################################# ## #F PQ_APG_IMAGE_OF_ALLOWABLE_SUBGROUP( ) . . . A p-G menu option 13 ## DeclareGlobalFunction( "PQ_APG_IMAGE_OF_ALLOWABLE_SUBGROUP" ); ############################################################################# ## #F PqAPGImageOfAllowableSubgroup( ) user version of A p-G menu option 13 #F PqAPGImageOfAllowableSubgroup() ## DeclareGlobalFunction( "PqAPGImageOfAllowableSubgroup" ); ############################################################################# ## #F PQ_APG_RANK_CLOSURE_OF_INITIAL_SEGMENT( ) . A p-G menu option 14 ## DeclareGlobalFunction( "PQ_APG_RANK_CLOSURE_OF_INITIAL_SEGMENT" ); ############################################################################# ## #F PqAPGRankClosureOfInitialSegment( ) user version of A p-G menu option 14 #F PqAPGRankClosureOfInitialSegment() ## DeclareGlobalFunction( "PqAPGRankClosureOfInitialSegment" ); ############################################################################# ## #F PQ_APG_ORBIT_REPRESENTATIVE_OF_LABEL( ) . . A p-G menu option 15 ## DeclareGlobalFunction( "PQ_APG_ORBIT_REPRESENTATIVE_OF_LABEL" ); ############################################################################# ## #F PqAPGOrbitRepresentativeOfLabel( ) user version of A p-G menu option 15 #F PqAPGOrbitRepresentativeOfLabel() ## DeclareGlobalFunction( "PqAPGOrbitRepresentativeOfLabel" ); ############################################################################# ## #F PQ_APG_WRITE_COMPACT_DESCRIPTION( ) . . . . A p-G menu option 16 ## DeclareGlobalFunction( "PQ_APG_WRITE_COMPACT_DESCRIPTION" ); ############################################################################# ## #F PqAPGWriteCompactDescription( ) . user version of A p-G menu option 16 #F PqAPGWriteCompactDescription() ## DeclareGlobalFunction( "PqAPGWriteCompactDescription" ); ############################################################################# ## #F PQ_APG_AUTOMORPHISM_CLASSES( ) . . . . . . A p-G menu option 17 ## DeclareGlobalFunction( "PQ_APG_AUTOMORPHISM_CLASSES" ); ############################################################################# ## #F PqAPGAutomorphismClasses( ) . . . user version of A p-G menu option 17 #F PqAPGAutomorphismClasses() ## DeclareGlobalFunction( "PqAPGAutomorphismClasses" ); #E anupqi.gd . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupqprop.gi000644 000766 000024 00000003770 14355420571 016261 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqprop.gi ANUPQ package Werner Nickel #W Greg Gamble ## ## Installs methods for properties and attributes needed for ANUPQ. ## #Y Copyright (C) 2001 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #F SET_PQ_PROPS_AND_ATTRS( , ) ## InstallGlobalFunction( SET_PQ_PROPS_AND_ATTRS, function( G, func ) local S; if not( HasIsPGroup(G) and IsPGroup(G) ) then Error( "supplied group is not known to be a p-group\n" ); fi; S := PqStandardPresentation(G : Prime := PrimePGroup(G)); SetIsCapable( G, IsCapable(S) ); SetNuclearRank( G, NuclearRank(S) ); SetMultiplicatorRank( G, MultiplicatorRank(S) ); return func(G); end ); ############################################################################# ## #M IsCapable( ) ## InstallMethod( IsCapable, "fp p-groups", true, [ IsFpGroup ], 0, G -> SET_PQ_PROPS_AND_ATTRS(G, IsCapable) ); InstallMethod( IsCapable, "pc p-groups", true, [ IsPcGroup ], 0, G -> SET_PQ_PROPS_AND_ATTRS(G, IsCapable) ); ############################################################################# ## #M NuclearRank( ) ## InstallMethod( NuclearRank, "fp p-groups", [ IsFpGroup ], 0, G -> SET_PQ_PROPS_AND_ATTRS(G, NuclearRank) ); InstallMethod( NuclearRank, "pc p-groups", [ IsPcGroup ], 0, G -> SET_PQ_PROPS_AND_ATTRS(G, NuclearRank) ); ############################################################################# ## #M MultiplicatorRank( ) ## InstallMethod( MultiplicatorRank, "fp p-groups", [ IsFpGroup ], 0, G -> SET_PQ_PROPS_AND_ATTRS(G, MultiplicatorRank) ); InstallMethod( MultiplicatorRank, "pc p-groups", [ IsPcGroup ], 0, G -> SET_PQ_PROPS_AND_ATTRS(G, MultiplicatorRank) ); #E anupqprop.gi . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anustab.gd000644 000766 000024 00000001703 14355420571 015656 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #A anustab.gd ANUPQ package Eamonn O'Brien #A Werner Nickel ## #Y Copyright 1993-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany #Y Copyright 1993-2001, School of Mathematical Sciences, ANU, Australia ## #W Greg Gamble reformulated the original code as a function and then split #W the original `anustab.g' into the declare/install files anustab.g[di]. ## ## Declare file for function to compute the stabiliser of an allowable ## subgroup; description is written to file LINK_output. ## ############################################################################# ## #F PqStabiliserOfAllowableSubgroup( ) ## DeclareGlobalFunction( "PqStabiliserOfAllowableSubgroup" ); #E anustab.gd . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupqxdesc.gi000644 000766 000024 00000015272 14355420571 016407 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqxdesc.gi ANUPQ package Werner Nickel #W Greg Gamble ## ## Installs functions to do recursive development of a descendants tree. ## If ANUPQ is loaded from XGAP the development is seen graphically. ## #Y Copyright (C) 2001 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #F PqDescendantsTreeCoclassOne([]) . . . generate a coclass one des. tree ## ## for the th or default interactive {\ANUPQ} process, generates a ## descendant tree for the group of the process (which must be a pc ## $p$-group) consisting of descendants of $p$-coclass 1 and extending to ## the class determined by the option `TreeDepth' (or 6 if the option is ## omitted). In an {\XGAP} session, a graphical representation of the ## descendants tree appears in a separate window. Subsequent calls to ## `PqDescendantsTreeCoclassOne' for the same process may be used to extend ## the descendant tree from the last descendant computed that itself has ## more than one descendant. `PqDescendantsTreeCoclassOne' also accepts the ## options `CapableDescendants' (or `AllDescendants') and any options ## accepted by the interactive `PqDescendants' function ## (see~"PqDescendants!interactive"). ## ## *Notes* ## ## `PqDescendantsTreeCoclassOne' first calls `PqDescendants'. If ## `PqDescendants' has already been called for the process, the previous ## value computed is used and a warning is `Info'-ed at `InfoANUPQ" level 1. ## ## As each descendant is processed its unique label defined by the `pq' ## program and number of descendants is `Info'-ed at `InfoANUPQ' level 1. ## ## `PqDescendantsTreeCoclassOne' is an ``experimental'' function that is ## included to demonstrate the sort of things that are possible with the ## $p$-group generation machinery. ## InstallGlobalFunction( PqDescendantsTreeCoclassOne, function( arg ) local datarec, title, des, node; datarec := ANUPQ_ARG_CHK("PqDescendantsTreeCoclassOne", arg); if datarec.procId = 0 then Error("non-interactive `PqDescendantsTreeCoclassOne' is not ", "currently supported\n"); fi; if IsBound(datarec.treepos) then PQX_RECURSE_DESCENDANTS( datarec, datarec.treepos.class, datarec.treepos.node, datarec.treepos.ndes ); return; fi; des := PqDescendants( datarec.procId : StepSize := 1 ); if IsPackageMarkedForLoading("xgap","") then title := Concatenation( "Descendants Tree, p=", String( PrimePGroup(datarec.group) ), ", order: ", String( Size(datarec.group) ), ", class <= ", String( VALUE_PQ_OPTION("TreeDepth", 6, datarec) ) ); if VALUE_PQ_OPTION("CapableDescendants", not VALUE_PQ_OPTION("AllDescendants", true, datarec), datarec) then Append( title, ", capable descendants" ); else Append( title, ", all descendants" ); fi; datarec.xgapsheet := GraphicSheet( title, 800, 700 ); datarec.nextX := [0, 0]; node := PQX_PLACE_NEXT_NODE( datarec, 1 ); else node := 0; fi; PQX_RECURSE_DESCENDANTS( datarec, 2, node, Length(des) ); if datarec.calltype = "non-interactive" then PQ_COMPLETE_NONINTERACTIVE_FUNC_CALL(datarec); if IsBound( datarec.setupfile ) then return true; fi; fi; end); ############################################################################# ## #F PQX_PLACE_NEXT_NODE( , ) . place a node on an XGAP sheet ## ## places a node for the current descendant of class on the {\XGAP} ## sheet `.xgapsheet'. ## InstallGlobalFunction( PQX_PLACE_NEXT_NODE, function( datarec, class ) local y, x; y := 40 * class; datarec.nextX[class] := datarec.nextX[class] + 16; x := datarec.nextX[class]; Disc( datarec.xgapsheet, x, y, 6 ); return [x,y]; end); ############################################################################# ## #F PQX_MAKE_CONNECTION( , , ) . . join two XGAP sheet nodes ## ## joins the nodes and on the {\XGAP} sheet `.xgapsheet' ## with a straight line, where and are each `[, ]' coordinate ## pairs (lists) of integers. ## InstallGlobalFunction( PQX_MAKE_CONNECTION, function( datarec, a, b ) Line( datarec.xgapsheet, a[1], a[2], b[1]-a[1], b[2]-a[2] ); end); ############################################################################# ## #F PQX_RECURSE_DESCENDANTS(,,,) extend des. tree ## ## extends a descendant tree of coclass 1 descendants from the current `pq' ## descendant that has descendants from class to class ## determined by the option `TreeDepth' (or 6, by default) from the node ## which is an `[, ]' coordinate pair (list) of integers. ## InstallGlobalFunction( PQX_RECURSE_DESCENDANTS, function( datarec, class, parent, n) local i, node, nr; if class > VALUE_PQ_OPTION("TreeDepth", 6, datarec) then datarec.treepos := rec(class:=class, node:=parent, ndes:=n); return; fi; if parent <> 0 then datarec.nextX[class] := datarec.nextX[class] + 14; fi; for i in [1..n] do PQ_PG_RESTORE_GROUP( datarec, class, i ); PQ_PG_EXTEND_AUTOMORPHISMS( datarec ); nr := PqPGConstructDescendants( datarec.procId : StepSize := 1 ); if parent <> 0 and (not datarec.CapableDescendants or nr > 0) then # Place a node on the Graphic Sheet and connect it with its # parent node. node := PQX_PLACE_NEXT_NODE( datarec, class ); PQX_MAKE_CONNECTION( datarec, node, parent ); else node := 0; fi; Info(InfoANUPQ, 1, "Number of descendants of group ", datarec.gpnum, " to class ", class, ": ", nr); if nr > 0 then if IsBound(datarec.nextX) and not IsBound(datarec.nextX[class + 1]) then datarec.nextX[class + 1] := 0; fi; PQX_RECURSE_DESCENDANTS( datarec, class+1, node, nr ); fi; od; return; end); #E anupqxdesc.gi . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupq.gi000644 000766 000024 00000110140 14355420571 015346 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #A anupq.gi ANUPQ package Eamonn O'Brien #A & Frank Celler ## #Y Copyright 1992-1994, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany #Y Copyright 1992-1994, School of Mathematical Sciences, ANU, Australia ## ############################################################################# ## #F ANUPQDirectoryTemporary( ) . . . . . redefine ANUPQ temp directory ## ## calls the UNIX command `mkdir' to create , which must be a string, ## and if successful a directory object for is both assigned to ## `ANUPQData.tmpdir' and returned. The field `ANUPQData.outfile' is also ## set to be a file in `ANUPQData.tmpdir', and on exit from {\GAP} is ## removed. ## InstallGlobalFunction(ANUPQDirectoryTemporary, function(dir) local created; # check arguments if not IsString(dir) then Error( "usage: ANUPQDirectoryTemporary( ) : must be a string.\n"); fi; # create temporary directory CreateDir(dir); if not IsDirectoryPath(dir) then return fail; fi; Add( GAPInfo.DirectoriesTemporary, dir ); ANUPQData.tmpdir := Directory(dir); ANUPQData.outfile := Filename(ANUPQData.tmpdir, "PQ_OUTPUT"); return ANUPQData.tmpdir; end); ############################################################################# ## #F ANUPQerrorPq( ) . . . . . . . . . . . . . . . . . report an error ## InstallGlobalFunction( ANUPQerrorPq, function( param ) Error( "Valid Options:\n", " \"ClassBound\", \n", " \"Prime\", \n", " \"Exponent\", \n", " \"Metabelian\"\n", " \"OutputLevel\", \n", " \"Verbose\"\n", " \"SetupFile\", \n", " \"PqWorkspace\", \n", "Illegal Parameter: \"", param, "\"" ); end ); ############################################################################# ## #F ANUPQextractPqArgs( ) . . . . . . . . . . . . . extract arguments ## InstallGlobalFunction( ANUPQextractPqArgs, function( args ) local CR, i, act, match; # allow to give only a prefix match := function( g, w ) return 1 < Length(g) and Length(g) <= Length(w) and w{[1..Length(g)]} = g; end; # extract arguments CR := rec(); i := 2; while i <= Length(args) do act := args[i]; if not IsString( act ) then ANUPQerrorPq( act ); fi; # "ClassBound", if match( act, "ClassBound" ) then i := i + 1; CR.ClassBound := args[i]; # "Prime", elif match( act, "Prime" ) then i := i + 1; CR.Prime := args[i]; # "Exponent", elif match( act, "Exponent" ) then i := i + 1; CR.Exponent := args[i]; # "Metabelian" elif match( act, "Metabelian" ) then CR.Metabelian := true; # "Output", elif match( act, "OutputLevel" ) then i := i + 1; CR.OutputLevel := args[i]; CR.Verbose := true; # "SetupFile", elif match( act, "SetupFile" ) then i := i + 1; CR.SetupFile := args[i]; # "PqWorkspace", elif match( act, "PqWorkspace" ) then i := i + 1; CR.PqWorkspace := args[i]; # "Verbose" elif match( act, "Verbose" ) then CR.Verbose := true; # signal an error else ANUPQerrorPq( act ); fi; i := i + 1; od; return CR; end ); ############################################################################# ## #F PQ_READ_AS_FUNC_WITH_VARS ## BindGlobal("PQ_READ_AS_FUNC_WITH_VARS", function(files, vars) local f, s, stream, v; # FIXME: this function is not great if `file` is huge, because we read all # of it into memory first. A better way would be a dedicated # stream implementation that allows concatenating streams. Or else # a kernel variant of this function if Length(vars) > 50 then # TODO: Warn about this? it will be slow fi; s := Concatenation("local __TMP_RESULT__,", JoinStringsWithSeparator(vars), ";\n"); for v in vars do Append(s, v); Append(s, " := fail;\n"); od; if IsString(files) then Append(s, StringFile(files)); else for f in files do Append(s, StringFile(f)); od; fi; Append(s, "__TMP_RESULT__ := rec();\n"); for v in vars do Append(s, Concatenation("if IsBound(",v,") then __TMP_RESULT__.",v,":=",v,"; fi;\n")); od; Append(s, "return __TMP_RESULT__;"); stream := InputTextString(s); f := ReadAsFunction(stream); CloseStream(stream); return f(); end); ############################################################################# ## #F ANUPQReadOutput . . . . read pq output without affecting global variables ## InstallGlobalFunction( ANUPQReadOutput, function( file ) local globalvars, var, result; globalvars := [ "ANUPQmagic", "ANUPQautos", "ANUPQgroups" ]; result := PQ_READ_AS_FUNC_WITH_VARS(file, globalvars); for var in globalvars do if not IsBound( result.(var) ) then result.(var) := fail; fi; od; return result; end ); ############################################################################# ## #F PqEpimorphism( : ) . . . . . epimorphism onto p-quotient ## InstallGlobalFunction( PqEpimorphism, function( arg ) return PQ_EPI_OR_PCOVER(arg : PqEpiOrPCover := "pQepi"); end ); ############################################################################# ## #F Pq( : ) . . . . . . . . . . . . . . . . . . . p-quotient ## InstallGlobalFunction( Pq, function( arg ) return PQ_EPI_OR_PCOVER(arg : PqEpiOrPCover := "pQuotient"); end ); ############################################################################# ## #F PqPCover( : ) . . . . . . p-covering group of p-quotient ## InstallGlobalFunction( PqPCover, function( arg ) return PQ_EPI_OR_PCOVER(arg : PqEpiOrPCover := "pCover"); end ); ############################################################################# ## #F PQ_GROUP_FROM_PCP(,) . extract gp from pq pcp file into GAP ## InstallGlobalFunction( PQ_GROUP_FROM_PCP, function( datarec, out ) local result, gens; result := PQ_READ_AS_FUNC_WITH_VARS(datarec.outfname, [ "F", "MapImages" ]); if out = "pCover" then datarec.pCover := result.F; IsPGroup( datarec.pCover ); else if IsBound(datarec.pcgs) then gens := datarec.pcgs; else gens := GeneratorsOfGroup( datarec.group ); fi; datarec.pQepi := GroupHomomorphismByImagesNC( datarec.group, result.F, gens, result.MapImages ); SetIsSurjective( datarec.pQepi, true ); datarec.pQuotient := Image( datarec.pQepi ); IsPGroup( datarec.pQuotient ); fi; end ); ############################################################################# ## #F TRIVIAL_PQ_GROUP(, ) . . . extract gp when trivial into GAP ## InstallGlobalFunction( TRIVIAL_PQ_GROUP, function( datarec, out ) local Q; Q := TrivialGroup( IsPcGroup ); if out = "pCover" then datarec.pCover := Q; IsPGroup( datarec.pCover ); else datarec.pQepi := GroupHomomorphismByFunction( datarec.group, Q, g -> One(Q) ); SetIsSurjective( datarec.pQepi, true ); datarec.pQuotient := Image( datarec.pQepi ); IsPGroup( datarec.pQuotient ); fi; end ); ############################################################################# ## #F PQ_EPI_OR_PCOVER(:) . p-quotient, its epi. or its p-cover ## InstallGlobalFunction( PQ_EPI_OR_PCOVER, function( args ) local out, datarec, AtClass, trivial; out := ValueOption("PqEpiOrPCover"); datarec := ANUPQ_ARG_CHK("Pq", args); datarec.filter := ["Output file in", "Group presentation"]; VALUE_PQ_OPTION("Identities", [], datarec); if datarec.calltype = "GAP3compatible" then # ANUPQ_ARG_CHK calls PQ_EPI_OR_PCOVER itself in this case # (so datarec.(out) has already been computed) return datarec.(out); fi; trivial := IsEmpty( datarec.group!.GeneratorsOfMagmaWithInverses ); if trivial then ; #the `pq' binary spits out nonsense if given a trivial pres'n elif datarec.calltype = "interactive" and ( IsBound(datarec.pQuotient) or IsBound(datarec.pCover) ) then AtClass := function() return IsBound(datarec.complete) and datarec.complete or IsBound(datarec.class) and datarec.class = datarec.ClassBound; end; if IsBound(datarec.pcoverclass) and datarec.pcoverclass = datarec.class and not AtClass() then # ``reduce'' the p-cover to a p-class PQ_FINISH_NEXT_CLASS( datarec ); fi; while not AtClass() do PQ_NEXT_CLASS( datarec ); od; # the following is not executed if the while-loop is # executed at least once if IsBound( datarec.(out) ) then return datarec.(out); # it had already been computed fi; else PQ_PC_PRESENTATION(datarec, "pQ"); if datarec.class < Minimum(63, datarec.ClassBound) then datarec.complete := true; fi; fi; trivial := trivial or IsEmpty(datarec.ngens) or datarec.ngens[1] = 0; if not trivial then if out = "pCover" then PQ_P_COVER( datarec ); fi; PushOptions( rec(nonuser := true) ); PQ_WRITE_PC_PRESENTATION(datarec, datarec.outfname); PopOptions(); fi; if datarec.calltype = "non-interactive" then PQ_COMPLETE_NONINTERACTIVE_FUNC_CALL(datarec); if IsBound( datarec.setupfile ) then if trivial then return fail; fi; return true; fi; fi; if trivial then TRIVIAL_PQ_GROUP( datarec, out ); else # read group and images from file PQ_GROUP_FROM_PCP( datarec, out ); fi; return datarec.(out); end ); ############################################################################# ## #F PqRecoverDefinitions( ) . . . . . . . . . . . . . . . . . definitions ## ## This function finds a definition for each generator of the p-group . ## These definitions need not be the same as the ones used by pq. But ## they serve the purpose of defining each generator as a commutator or ## power of earlier ones. This is useful for extending an automorphism that ## is given on a set of minimal generators of . ## InstallGlobalFunction( PqRecoverDefinitions, function( G ) local col, gens, definitions, h, g, rhs, gen; col := ElementsFamily( FamilyObj( G ) )!.rewritingSystem; gens := GeneratorsOfRws( col ); definitions := []; for h in [1..NumberGeneratorsOfRws( col )] do rhs := GetPowerNC( col, h ); if Length( rhs ) = 1 then gen := Position( gens, rhs ); if not IsBound( definitions[gen] ) then definitions[gen] := h; fi; fi; for g in [1..h-1] do rhs := GetConjugateNC( col, h, g ); if Length( rhs ) = 2 then gen := SubSyllables( rhs, 2, 2 ); gen := Position( gens, gen ); if not IsBound( definitions[gen] ) then definitions[gen] := [h, g]; fi; fi; od; od; return definitions; end ); ############################################################################# ## #F PqAutomorphism( , ) . . . . . . . . . . . . definitions ## ## Take an automorphism of the preimage and produce the induced automorphism ## of the image of the epimorphism. ## InstallGlobalFunction( PqAutomorphism, function( epi, autoimages ) local G, p, gens, definitions, d, epimages, i, pos, def, phi; G := Image( epi ); p := PrimePGroup( G ); gens := GeneratorsOfGroup( G ); autoimages := List( autoimages, im->Image( epi, im ) ); ## Get a definition for each generator. definitions := PqRecoverDefinitions( G ); d := Number( [1..Length(definitions)], i->not IsBound( definitions[i] ) ); ## Find the images for the defining generators of G under the ## automorphism. We have to be careful, as some of the generators for ## the source might be redundant as generators of G. epimages := List( GeneratorsOfGroup(Source(epi)), g->Image(epi,g) ); for i in [1..d] do ## Find G.i ... pos := Position( epimages, G.(i) ); if pos = fail then Error( "generators ", i, "not image of a generators" ); fi; ## ... and set its image. definitions[i] := autoimages[pos]; od; ## Replace each definition by its image under the automorphism. for i in [d+1..Length(definitions)] do def := definitions[i]; if IsInt( def ) then definitions[i] := definitions[ def ]^p; else definitions[i] := Comm( definitions[ def[1] ], definitions[ def[2] ] ); fi; od; phi := GroupHomomorphismByImages( G, G, gens, definitions ); SetIsBijective( phi, true ); return phi; end ); ############################################################################# ## #F PqLeftNormComm( ) . . . . . . . . . . . . . left norm commutator ## ## returns for a list of words in the generators of a group the left ## norm commutator of , e.g.~if , , are words in the ## generators of some free or fp group then `PqLeftNormComm( [, , ## ] );' is equivalent to `Comm( Comm( , ), );'. Actually, ## the only restrictions on are that must constitute a list ## of group elements of the same group (so a list of permutations is ## allowed, for example) and that must contain at least *two* words. ## InstallGlobalFunction( PqLeftNormComm, function( words ) local fam, comm, word; if not IsList(words) or 2 > Length(words) or not ForAll(words, IsMultiplicativeElementWithInverse) then Error( " should be a list of at least 2 group elements\n" ); else fam := FamilyObj(words[1]); if not ForAll(words, w -> IsIdenticalObj(FamilyObj(w), fam)) then Error( " should belong to the same group\n" ); fi; fi; comm := words[1]; for word in words{[2 .. Length(words)]} do comm := Comm(comm, word); od; return comm; end ); ############################################################################# ## #F PqGAPRelators( , ) . . . . . . . . pq relators as GAP words ## ## returns a list of words that {\GAP} understands, given a list of ## strings in the string representations of the generators of the fp group ## prepared as a list of relators for the `pq' program. ## ## *Note:* ## The `pq' program does not use `/' to indicate multiplication by an ## inverse and uses square brackets to represent (left normed) commutators. ## Also, even though the `pq' program accepts relations, all elements of ## *must* be in relator form, i.e.~a relation of form ` = ' ## must be written as `*()^-1'. ## ## Here is an example: ## ## \beginexample ## gap> F := FreeGroup("a", "b"); ## gap> PqGAPRelators(F, [ "a*b^2", "[a,b]^2*a", "([a,b,a,b,b]*a*b)^2*a" ]); ## [ a*b^2, a^-1*b^-1*a*b*a^-1*b^-1*a*b*a, b^-1*a^-1*b^-1*a^-1*b*a*b^-1*a*b*a^ ## -1*b*a^-1*b^-1*a*b*a*b^-1*a^-1*b^-1*a^-1*b*a*b^-1*a*b^-1*a^-1*b*a^-1*b^ ## -1*a*b*a*b*a^-1*b*a*b^-1*a*b*a^-1*b*a^-1*b^-1*a*b*a*b^-1*a^-1*b^-1*a^ ## -1*b*a*b^-1*a*b^-1*a^-1*b*a^-1*b^-1*a*b*a*b^2*a*b*a ] ## \endexample ## InstallGlobalFunction( PqGAPRelators, function( group, rels ) local gens, relgens, diff, f; if not( IsFpGroup(group) ) then Error(" must be an fp group\n"); fi; gens := List( FreeGeneratorsOfFpGroup(group), String ); if not ForAll(rels, rel -> Position(rel, '/') = fail) then Error( "pq binary does not understand `/' in relators\n" ); fi; relgens := Set( Concatenation( List( rels, rel -> Filtered( SplitString(rel, "", "*[]()^, "), str -> Int(str) = fail) ) ) ); diff := Difference(relgens, gens); if not IsEmpty(diff) then Error( "generators: ", diff, "\nare not among the generators of the group supplied\n" ); fi; # The following is a HACK to cheaply evaluator the given relator expressions: # we first substitute commutator expressions in the given relator strings by # corresponding calls to the GAP function `PqLeftNormComm` .... rels := List( rels, rel -> ReplacedString( ReplacedString(rel, "]", "])"), "[", "PqLeftNormComm([" ) ); # and then use `ReadAsFunction` to create a function without arguments, # which when called returns a function taking the generators of `group` as # arguments, and evaluates the given relators on these. # # We have to create these two functions because `ReadAsFunction` does not # allow us to specify arguments for the function it creates (it would be # nice if it did). f := ReadAsFunction(InputTextString(Concatenation( "return {", JoinStringsWithSeparator(gens), "} -> [", JoinStringsWithSeparator(rels), "];" )))(); return CallFuncList(f, FreeGeneratorsOfFpGroup(group)); end ); ############################################################################# ## #F PqParseWord( , ) . . . . . . . . . . . . parse word through GAP #F PqParseWord( , ) ## ## parse through {\GAP}, where is a string representing a word ## in the generators of (the first form of `PqParseWord') or pc ## generators `x1,...,x'. `PqParseWord' is provided as a rough-and-ready ## check of for syntax errors. A syntax error will cause the entering ## of a `break'-loop, in which the error message may or may not be ## meaningful (depending on whether the syntax error gets caught at the ## {\GAP} or kernel level). ## ## *Note:* ## The reason the generators *must* be `x1,...,x' in the second form of ## `PqParseWord' is that these are the pc generator names used by the `pq' ## program (as distinct from the generator names for the group provided by ## the user to a function like `Pq' that invokes the `pq' program). ## InstallGlobalFunction( PqParseWord, function( n, word ) local ParseOnBreak, ParseOnBreakMessage, NormalOnBreak, NormalOnBreakMessage, parts, gens; if IsGroup(n) or Position(word, '[') <> fail or Position(word, '(') <> fail then #pass word through GAP's parser to see if it's ok NormalOnBreak := OnBreak; ParseOnBreak := function() Where(0); OnBreak := NormalOnBreak; end; OnBreak := ParseOnBreak; if IsFunction(OnBreakMessage) then NormalOnBreakMessage := OnBreakMessage; ParseOnBreakMessage := function() Print( " syntax error in: ", word, "\n" ); Print( " you can type: 'quit;' to quit to outer loop.\n" ); OnBreakMessage := NormalOnBreakMessage; end; OnBreakMessage := ParseOnBreakMessage; fi; if IsGroup(n) then PqGAPRelators(n, [ word ]); else PqGAPRelators(FreeGroup(n, "x"), [ word ]); fi; OnBreak := NormalOnBreak; if IsFunction(OnBreakMessage) then OnBreakMessage := NormalOnBreakMessage; fi; else parts := List( SplitString(word, "*"), part -> SplitString(part, "^") ); if ForAny( parts, part -> 2 < Length(part) or 2 = Length(part) and not IsInt( Int(part[2]) ) ) then Error( "detected invalid exponent in argument : ", word, "\n"); fi; if ForAny( parts, part -> IsEmpty( part[1] ) or part[1][1] <> 'x' ) then Error( "generators in argument must all be of form:\n", "`x' for some integer \n" ); fi; gens := List( parts, part -> Int( part[1]{[2 .. Length(part[1])]} ) ); if not ForAll(gens, gen -> IsPosInt(gen) and gen <= n) then Error( "generators in argument must be in the range: ", "x1,...,x", n, "\n" ); fi; fi; return true; end ); ############################################################################# ## #F PQ_EVALUATE( ) . . . . . . . . . evaluate a string emulating GAP ## ## For each substring of the string that is a statement (i.e. ends ## in a `;'), `PQ_EVALUATE( )' evaluates it in the same way {\GAP} ## would. If the substring is further followed by a `;' (i.e. there was ## `;;'), this is an indication that the statement would produce no output; ## otherwise the output that the user would normally see if she typed the ## statement interactively is displayed. ## InstallGlobalFunction(PQ_EVALUATE, function(string) local from, pos, statement, parts, var; from := 0; pos := Position(string, ';', from); while pos <> fail do statement := string{[from + 1..pos]}; statement := ReplacedString(statement," last "," ANUPQData.example.last "); if pos < Length(string) and string[pos + 1] = ';' then Read( InputTextString(statement) ); from := pos + 1; else parts := SplitString(statement, "", " \n"); if 1 < Length(parts) and parts[2] = ":=" then Read( InputTextString(statement) ); Read( InputTextString( Concatenation( "View(", parts[1], "); Print(\"\\n\");" ) ) ); ANUPQData.example.last := parts[1]; else var := EvalString(statement); View( var ); Print( "\n" ); ANUPQData.example.last := var; fi; from := pos; fi; pos := Position(string, ';', from); od; end ); ############################################################################# ## #F PqExample() . . . . . . . . . . execute a pq example or display the index #F PqExample( [, PqStart][, Display] ) #F PqExample( [, PqStart][, ] ) ## ## With no arguments, or with single argument `"index"', or a string ## that is not the name of a file in the `examples' directory, an ## index of available examples is displayed. ## ## With just the one argument that is the name of a file in the ## `examples' directory, the example contained in that file is executed in ## its simplest form. Some examples accept options which you may use to ## modify some of the options used in the commands of the example. To find ## out which options an example accepts, use one of the mechanisms for ## displaying the example described below. ## ## Some examples have both non-interactive and interactive forms; those that ## are non-interactive only have a name ending in `-ni'; those that are ## interactive only have a name ending in `-i'; examples with names ending ## in `.g' also have only one form; all other examples have both ## non-interactive and interactive forms and for these giving `PqStart' as ## second argument invokes `PqStart' initially and makes the appropriate ## adjustments so that the example is executed or displayed using ## interactive functions. ## ## If `PqExample' is called with last (second or third) argument `Display' ## then the example is displayed without being executed. If the last ## argument is a non-empty string then the example is also ## displayed without being executed but is also written to a file with that ## name. Passing an empty string as last argument has the same effect as ## passing `Display'. ## ## *Note:* ## The variables used in `PqExample' are local to the running of ## `PqExample', so there's no danger of having some of your variables ## over-written. However, they are not completely lost either. They are ## saved to a record `ANUPQData.examples.vars', i.e.~if `F' is a variable ## used in the example then you will be able to access it after `PqExample' ## has finished as `ANUPQData.examples.vars.F'. ## InstallGlobalFunction(PqExample, function(arg) local name, file, instream, line, input, doPqStart, vars, var, printonly, filename, DoAltAction, GetNextLine, PrintLine, action, datarec, optname, linewidth, sizescreen, CheckForCompoundKeywords, hasFunctionExpr, parts, iscompoundStatement, compoundDepth; sizescreen := SizeScreen(); if sizescreen[1] < 80 then SizeScreen([80, sizescreen[2]]); linewidth := 80; else linewidth := sizescreen[1]; fi; if IsEmpty(arg) then name := "index"; else name := arg[1]; fi; if name = "README" then file := fail; else file := Filename(DirectoriesPackageLibrary( "anupq", "examples"), name); fi; if file = fail then Info(InfoANUPQ + InfoWarning, 1, "Sorry! There is no ANUPQ example with name `", name, "'", " ... displaying index."); name := "index"; file := Filename(DirectoriesPackageLibrary( "anupq", "examples"), name); fi; if name <> "index" then doPqStart := false; if Length(arg) > 1 then # At this point the name of the variable doesn't make # sense; however, if the value assigned to is `Display' # or an empty string then we ``print only'' and if it is a non-empty # string then it is assumed to be a filename and we `LogTo' that filename. printonly := arg[Minimum(3, Length(arg))]; if arg[2] = PqStart then if 2 < Length(name) and name{[Length(name) - 1 .. Length(name)]} in ["-i", "ni", ".g"] then Error( "example does not have a (different) interactive form\n" ); fi; doPqStart := true; fi; else printonly := false; fi; DoAltAction := function() if doPqStart then if action[2] = "do" then # uncomment line line := line{[2..Length(line)]}; else # replace a variable with a proc id line := ReplacedString( line, action[5], action[3] ); fi; fi; end; if printonly = Display or IsString(printonly) then GetNextLine := function() local from, to; line := ReadLine(instream); if line = fail then return; elif IsBound(action) then action := SplitString(action, "", "# <>\n"); DoAltAction(); Unbind(action); elif 3 < Length(line) and line{[1..4]} = "#alt" then # only "#alt" actions recognised action := line; elif IsMatchingSublist(line, "#comment:") then line := ReplacedString(line, " supplying", ""); from := Position(line, ' '); to := Position(line, '<', from); Info(InfoANUPQ, 1, "In the next command, you may", line{[from .. to - 1]}); from := to + 1; to := Position(line, '>') - 1; Info(InfoANUPQ, 1, "supplying to `PqExample' the option: `", line{[from .. to]}, "'"); fi; end; if IsString(printonly) and printonly <> "" then filename := printonly; LogTo( filename ); #Make sure it's empty and writable fi; PrintLine := function() if IsMatchingSublist(line, "##") then line := line{[2..Length(line)]}; elif line[1] = '#' then return; fi; Print( ReplacedString(line, ";;", ";") ); end; printonly := true; #now the name of the variable makes sense else printonly := false; ANUPQData.example := rec(options := rec()); datarec := ANUPQData.example.options; CheckForCompoundKeywords := function() local compoundkeywords; compoundkeywords := Filtered( SplitString(line, "", "( ;\n"), w -> w in ["do", "od", "if", "fi", "repeat", "until", "function", "end"] ); hasFunctionExpr := "function" in compoundkeywords; compoundDepth := compoundDepth + Number(compoundkeywords, w -> w in ["do", "if", "repeat", "function"]) - Number(compoundkeywords, w -> w in ["od", "fi", "until", "end"]); return not IsEmpty(compoundkeywords); end; GetNextLine := function() local from, to, bhsinput; repeat line := ReadLine(instream); if line = fail then return; fi; until not IsMatchingSublist(line, "#comment:"); if IsBound(action) then action := SplitString(action, "", "# <>\n"); if action[1] = "alt:" then DoAltAction(); else # action[2] = name of a possible option passed to `PqExample' # action[4] = string to be replaced in with the value # of the option if ok and set optname := action[2]; if IsDigitChar(optname[ Length(optname) ]) then optname := optname{[1..Length(optname) - 1]}; fi; datarec.(action[2]) := ValueOption(action[2]); if datarec.(action[2]) = fail then Unbind( datarec.(action[2]) ); else if not ANUPQoptionChecks.(optname)( datarec.(action[2]) ) then Info(InfoANUPQ, 1, "\"", action[2], "\" value must be a ", ANUPQoptionTypes.(optname), ": option ignored."); Unbind( datarec.(action[2]) ); else if action[1] = "add" then line[1] := ' '; fi; if IsString( datarec.(action[2]) ) then line := ReplacedString( line, action[4], Flat(['"',datarec.(action[2]),'"']) ); else line := ReplacedString( line, action[4], String( datarec.(action[2]) ) ); fi; fi; fi; fi; Unbind(action); elif IsMatchingSublist(line, "##") then ; # do nothing elif 3 < Length(line) and line{[1..4]} in ["#sub", "#add", "#alt"] then action := line; elif line[1] = '#' then # execute instructions behind the scenes bhsinput := ""; repeat Append( bhsinput, ReplacedString(line{[2..Length(line)]}, "datarec", "ANUPQData.example.options") ); line := ReadLine(instream); until line[1] <> '#' or (3 < Length(line) and line{[1..4]} in ["#sub", "#add", "#com"]); Read( InputTextString(bhsinput) ); fi; end; PrintLine := function() if IsMatchingSublist(line, "##") then line := line{[2..Length(line)]}; elif line[1] = '#' then return; fi; if input = "" then Print("gap> "); else Print("> "); fi; Print( ReplacedString(line, ";;", ";") ); end; fi; fi; instream := InputTextFile(file); if name <> "index" then FLUSH_PQ_STREAM_UNTIL( instream, 10, 1, ReadLine, line -> IsMatchingSublist(line, "#Example") ); line := FLUSH_PQ_STREAM_UNTIL( instream, 1, 10, ReadLine, line -> IsMatchingSublist(line, "#vars:") ); if Length(line) + 21 < linewidth then Info(InfoANUPQ, 1, line{[Position(line, ' ')+1..Position(line, ';')-1]}, " are local to `PqExample'"); else #this assumes one has been careful to ensure the `#vars:' line is not #longer than 72 characters. Info(InfoANUPQ, 1, line{[Position(line, ' ')+1..Position(line, ';')-1]}, " are"); Info(InfoANUPQ, 1, "local to `PqExample'"); fi; vars := SplitString(line, "", " ,;\n"); vars := vars{[2 .. Length(vars)]}; if not printonly then CallFuncList(HideGlobalVariables, vars); fi; line := FLUSH_PQ_STREAM_UNTIL(instream, 1, 10, ReadLine, line -> IsMatchingSublist(line, "#options:")); input := ""; GetNextLine(); while line <> fail do PrintLine(); if line[1] <> '#' then if not printonly then if input = "" then compoundDepth := 0; iscompoundStatement := CheckForCompoundKeywords(); elif iscompoundStatement and compoundDepth > 0 then CheckForCompoundKeywords(); fi; if line <> "\n" then Append(input, line); if iscompoundStatement then if compoundDepth = 0 and Position(input, ';') <> fail then Read( InputTextString(input) ); if hasFunctionExpr then parts := SplitString(input, "", ":= \n"); Read( InputTextString( Concatenation( "View(", parts[1], "); Print(\"\\n\");" ) ) ); ANUPQData.example.last := parts[1]; fi; iscompoundStatement := false; input := ""; fi; elif Position(input, ';') <> fail then PQ_EVALUATE(input); input := ""; fi; fi; fi; fi; GetNextLine(); od; if printonly then if IsBound(filename) then LogTo(); fi; else ANUPQData.example.vars := rec(); for var in Filtered(vars, IsBoundGlobal) do ANUPQData.example.vars.(var) := ValueGlobal(var); od; Info(InfoANUPQ, 1, "Variables used in `PqExample' are saved ", "in `ANUPQData.example.vars'."); CallFuncList(UnhideGlobalVariables, vars); fi; else FLUSH_PQ_STREAM_UNTIL(instream, 1, 10, ReadLine, line -> line = fail); fi; CloseStream(instream); if linewidth <> sizescreen[1] then SizeScreen( sizescreen ); # restore what was there before fi; end); ############################################################################# ## #F AllPqExamples() . . . . . . . . . . list the names of all ANUPQ examples ## InstallGlobalFunction( AllPqExamples, function() local dir, files; dir := DirectoriesPackageLibrary( "anupq", "examples" )[1]; files := DirectoryContents( Filename( dir, "" )); # Remove certain files files := Difference( files, [".", "..", "index", "README", "CVS", "5gp-PG-e5-i", "7gp-a-x-Rel-i"] ); # Remove files ending with a tilde files := Filtered( files, file -> file[ Length(file) ] <> '~' ); return files; end ); ############################################################################# ## #F GrepPqExamples( ) . . . . . . . grep ANUPQ examples for a string ## ## runs the UNIX command `grep ' over the {\ANUPQ} examples and ## returns the list of examples for which there is a match. The actual ## matches are `Info'-ed at `InfoANUPQ' level 2. ## InstallGlobalFunction( GrepPqExamples, function( string ) local dir, str, grep, out, opts, lines, matches, line; dir := DirectoriesPackageLibrary( "anupq", "examples" )[1]; grep := Filename( DirectoriesSystemPrograms(), "grep" ); str := ""; out := OutputTextString( str, true ); opts := Concatenation( [ string ], AllPqExamples() ); Process( dir, grep, InputTextNone(), out, opts ); CloseStream( out ); lines := SplitString( str, "", "\n" ); matches := []; for line in lines do Info(InfoANUPQ, 2, line); Add( matches, SplitString(line, "", ":")[1] ); od; return Set(matches); end ); #E anupq.gi . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupqios.gi000644 000766 000024 00000105213 14355420571 016066 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqios.gi ANUPQ package Greg Gamble ## ## This file installs core functions used with iostreams. ## #Y Copyright (C) 2001 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #F PQ_START( , ) . . . open a stream for a pq process ## ## ensures the images file written by the `pq' binary when in the Standard ## Presentation menu is empty, opens an io stream to a `pq' process (if ## is `fail') or a file stream for a setup file (if ## is a filename i.e. a string) and returns a record with fields `menu' ## (current menu for the `pq' binary), `opts' (the runtime switches used by ## the `pq' process), `workspace' (the value of which should be ## a positive integer), and `stream' (the io or file stream opened). ## InstallGlobalFunction(PQ_START, function( workspace, setupfile ) local opts, iorec, topqlogfile; PrintTo(ANUPQData.SPimages, ""); #to ensure it's empty if setupfile = fail then opts := [ "-G" ]; else opts := [ "-i", "-k", "-g" ]; fi; if workspace <> 10000000 then Append( opts, [ "-s", String(workspace) ] ); fi; iorec := rec( menu := "SP", opts := opts, workspace := workspace ); if setupfile = fail then iorec.stream := InputOutputLocalProcess( ANUPQData.tmpdir, ANUPQData.binary, opts ); if iorec.stream = fail then Error( "failed to launch child process" ); fi; # menus are flushed at InfoANUPQ level 6, prompts at level 5 FLUSH_PQ_STREAM_UNTIL(iorec.stream, 6, 5, PQ_READ_NEXT_LINE, IS_PQ_PROMPT); else iorec.stream := OutputTextFile(setupfile, false); iorec.setupfile := setupfile; ToPQk(iorec, [], [ "#call pq with flags: '", JoinStringsWithSeparator(opts, " "), "'" ]); fi; return iorec; end ); ############################################################################# ## #F PqStart(, : ) . Initiate interactive ANUPQ session #F PqStart( : ) #F PqStart( : ) #F PqStart( : ) ## ## activate an iostream for an interactive {\ANUPQ} process (i.e. `PqStart' ## starts up a `pq' binary process and opens a {\GAP} iostream to ``talk'' ## to that process) and returns an integer that can be used to identify ## that process. The argument , if given, should be an *fp group* or *pc ## group* that the user intends to manipulate using interactive {\ANUPQ} ## functions. If `PqStart' is given an integer argument then the ## `pq' binary is started up with a workspace (an integer array) of size ## (i.e. $4 \times $ bytes in a 32-bit environment); ## otherwise, the `pq' binary sets a default workspace of $10000000$. ## ## The only currently recognised by `PqStart' are `Prime' and ## `Exponent' (see~"Pq" for details) and if provided they are essentially ## global for the interactive {\ANUPQ} process, except that any interactive ## function interacting with the process and passing new values for these ## options will over-ride the global values. ## InstallGlobalFunction(PqStart, function(arg) local opts, iorec, procId, G, workspace, optname; if 2 < Length(arg) then Error("at most two arguments expected.\n"); fi; if not IsEmpty(arg) and IsGroup( arg[1] ) then G := arg[1]; if not( IsFpGroup(G) or IsPcGroup(G) ) then Error( "argument should be an fp group or a pc group\n" ); fi; arg := arg{[2 .. Length(arg)]}; fi; if not IsEmpty(arg) then workspace := arg[1]; if not IsPosInt(workspace) then Error("argument should be a positive integer.\n"); fi; else workspace := 10000000; fi; iorec := PQ_START( workspace, fail ); if IsBound( G ) then iorec.group := G; fi; iorec.calltype := "interactive"; for optname in ANUPQGlobalOptions do VALUE_PQ_OPTION(optname, iorec); od; procId := Length(ANUPQData.io) + 1; iorec.procId := procId; ANUPQData.io[ procId ] := iorec; return procId; end); ############################################################################# ## #F PqQuit( ) . . . . . . . . . . . . Close an interactive ANUPQ session #F PqQuit() ## ## closes the stream of the th or default interactive {\ANUPQ} process ## and unbinds its `ANUPQData.io' record. ## InstallGlobalFunction(PqQuit, function(arg) local ioIndex; ioIndex := ANUPQ_IOINDEX(arg); # No need to bother about descending through the menus. CloseStream(ANUPQData.io[ioIndex].stream); Unbind(ANUPQData.io[ioIndex]); end); ############################################################################# ## #F PqQuitAll() . . . . . . . . . . . . Close all interactive ANUPQ sessions ## ## closes the streams of all active interactive {\ANUPQ} process and unbinds ## their `ANUPQData.io' records. ## InstallGlobalFunction(PqQuitAll, function() local ioIndex; for ioIndex in [1 .. Length(ANUPQData.io)] do if IsBound(ANUPQData.io[ioIndex]) then CloseStream(ANUPQData.io[ioIndex].stream); Unbind(ANUPQData.io[ioIndex]); fi; od; end); ############################################################################# ## #F ANUPQ_IOINDEX . . . . the number identifying an interactive ANUPQ session ## ## returns the index of the record in the `ANUPQData.io' list corresponding ## to an interactive {\ANUPQ} session. With no argument the first bound ## index in `ANUPQData.io' is returned. With integer (first) argument , ## is returned if `ANUPQData.io[]' is bound. ## InstallGlobalFunction(ANUPQ_IOINDEX, function(arglist) local ioIndex; if IsEmpty(arglist) then # Find the first bound ioIndex ioIndex := 1; while not(IsBound(ANUPQData.io[ioIndex])) and ioIndex < Length(ANUPQData.io) do ioIndex := ioIndex + 1; od; if IsBound(ANUPQData.io[ioIndex]) then return ioIndex; else Info(InfoANUPQ + InfoWarning, 1, "No interactive ANUPQ sessions are currently active"); return fail; fi; elif IsBound(ANUPQData.io[ arglist[1] ]) then return arglist[1]; else Error("no such interactive ANUPQ session\n"); fi; end); ############################################################################# ## #F ANUPQ_IOINDEX_ARG_CHK . Checks ANUPQ_IOINDEX has the right no. of arg'ts ## InstallGlobalFunction(ANUPQ_IOINDEX_ARG_CHK, function(arglist) if Length(arglist) > 1 then Info(InfoANUPQ + InfoWarning, 1, "Expected 0 or 1 arguments, all but first argument ignored"); fi; end); ############################################################################# ## #F ANUPQDataRecord([]) . . . . . . . returns the data record of a process ## InstallGlobalFunction(ANUPQDataRecord, function( arg ) if not IsEmpty(arg) and arg[1] = 0 and IsBound( ANUPQData.ni ) then return ANUPQData.ni; else return ANUPQData.io[ CallFuncList(PqProcessIndex, arg) ]; fi; end); ############################################################################# ## #F PqProcessIndex( ) . . . . . . . . . . . User version of ANUPQ_IOINDEX #F PqProcessIndex() ## ## If given (at least) one integer argument `PqProcessIndex' returns its ## first argument if it corresponds to an active interactive process or ## raises an error; otherwise, with no arguments, it returns the default ## active interactive process. If the user provides more than one argument ## then all arguments other than the first argument are ignored (and a ## warning is issued to `Info' at `InfoANUPQ' or `InfoWarning' level 1). ## InstallGlobalFunction(PqProcessIndex, function(arg) ANUPQ_IOINDEX_ARG_CHK(arg); return ANUPQ_IOINDEX(arg); end); ############################################################################# ## #F PqProcessIndices() . . . . the list of active interactive ANUPQ processes ## ## returns the list of (integer) indices of all active interactive {\ANUPQ} ## processes. ## InstallGlobalFunction(PqProcessIndices, function() return Filtered( [1..Length(ANUPQData.io)], i -> IsBound( ANUPQData.io[i] ) ); end); ############################################################################# ## #F IsPqProcessAlive( ) . . checks an interactive ANUPQ process iostream #F IsPqProcessAlive() ## ## return `true' if the {\GAP} iostream of the th (or default) ## interactive {\ANUPQ} process is alive (i.e. can still be written to), or ## `false', otherwise. ## InstallGlobalFunction(IsPqProcessAlive, function(arg) return not IsEndOfStream( ANUPQData.io[ PqProcessIndex(arg) ].stream ); end); ############################################################################# ## #V PQ_MENUS . . . . . . . . . . . data describing the menus of the pq binary ## ## a record whose fields are abbreviated names of the menus of the `pq' ## binary and whose values are themselves records with fields: ## ## name ## long name of menu; ## depth ## the number of times 0 must be passed to the `pq' binary for it to ## exit; ## prev ## the menu one gets to from the current menu via option 0 (or `""' in ## the case of the menu `SP'; ## nextopt ## a record whose fields are the new menus of greater depth that can ## be reached by an option of the current menu, and whose values are ## the corresponding numbers of the options of the current menu needed ## to get to the new menus. ## InstallValue(PQ_MENUS, rec( SP := rec( name := "Standard Presentation Menu", depth := 1, prev := "", nextopt := rec( pQ := 7 ) ), pQ := rec( name := "(Main) p-Quotient Menu", depth := 2, prev := "SP", nextopt := rec( pG := 9, ApQ := 8 ) ), pG := rec( name := "(Main) p-Group Generation Menu", depth := 3, prev := "pQ", nextopt := rec( ApG := 6 ) ), ApQ := rec( name := "Advanced p-Quotient Menu", depth := 3, prev := "pQ", nextopt := rec() ), ApG := rec( name := "Advanced p-Group Gen'n Menu", depth := 4, prev := "pG", nextopt := rec() ) ) ); ############################################################################# ## #F PQ_MENU( , ) . . . . . . change/get menu of pq process #F PQ_MENU( ) ## InstallGlobalFunction(PQ_MENU, function(arg) local datarec, newmenu, nextmenu, tomenu, infolev; datarec := arg[1]; if 2 = Length(arg) then newmenu := arg[2]; if datarec.menu in ["SP", "pQ"] and newmenu in ["ApQ", "pG", "ApG"] then PQ_GRP_EXISTS_CHK( datarec ); #We try to avoid seg-faults! fi; while datarec.menu <> newmenu do if PQ_MENUS.(datarec.menu).depth >= PQ_MENUS.(newmenu).depth then datarec.menu := PQ_MENUS.(datarec.menu).prev; tomenu := PQ_MENUS.(datarec.menu).name; ToPQk(datarec, [ 0 ], [ " #to ", tomenu]); infolev := 5; elif datarec.menu = "pQ" and newmenu = "ApQ" then datarec.menu := "ApQ"; tomenu := PQ_MENUS.(datarec.menu).name; ToPQk(datarec, [ PQ_MENUS.pQ.nextopt.ApQ ], [ " #to ", tomenu ]); infolev := 6; else nextmenu := RecNames( PQ_MENUS.(datarec.menu).nextopt )[1]; tomenu := PQ_MENUS.(nextmenu).name; ToPQk(datarec, [ PQ_MENUS.(datarec.menu).nextopt.(nextmenu) ], [ " #to ", tomenu ]); datarec.menu := nextmenu; infolev := 6; fi; # menus are flushed at InfoANUPQ level 6, prompts at level 5 if not IsBound(datarec.setupfile) then FLUSH_PQ_STREAM_UNTIL(datarec.stream, infolev, 5, PQ_READ_NEXT_LINE, IS_PQ_PROMPT); fi; od; fi; return datarec.menu; end); ############################################################################# ## #F IS_PQ_PROMPT( ) . . . . checks whether the line is a prompt of pq ## ## returns `true' if the string is a `pq' prompt, or otherwise ## returns `false'. ## InstallGlobalFunction(IS_PQ_PROMPT, line -> IS_ALL_PQ_LINE(line) and ANUPQData.linetype = "prompt" ); ############################################################################# ## #F IS_ALL_PQ_LINE( ) . checks whether line is a complete line from pq ## ## returns `true' if the string is a `pq' prompt or a request from ## `pq' to {\GAP} to compute stabilisers or simply ends in a newline and ## sets `ANUPQData.linetype' to `"prompt"', `"request"' or `"hasnewline"', ## accordingly; otherwise `ANUPQData.linetype' is set to `"unknown"' and ## `false' is returned. ## InstallGlobalFunction(IS_ALL_PQ_LINE, function( line ) local len; ANUPQData.linetype := "unknown"; len := Length(line); if 0 < len then if line[len] = '\n' then if 4 < len and line{[1 .. 3]} = "GAP" and line[len - 1] = '!' then ANUPQData.linetype := "request"; elif 6 < len and line{[1 .. 6]} in ["Enter ", "Input "] then ANUPQData.linetype := "prompt"; else ANUPQData.linetype := "hasnewline"; fi; elif line = "Select option: " or 1 < len and line{[len - 1 .. len]} = "? " or 8 < len and line{[len - 1 .. len]} = ": " and line{[1 .. 6]} in ["Enter ", "Input ", "Add ne"] then ANUPQData.linetype := "prompt"; fi; fi; return ANUPQData.linetype <> "unknown"; end); ############################################################################# ## #F PQ_READ_ALL_LINE( ) . read line from pq but poss. return fail ## ## reads a complete line from or return `fail'. ## InstallGlobalFunction(PQ_READ_ALL_LINE, iostream -> ReadAllLine(iostream, false, IS_ALL_PQ_LINE) ); ############################################################################# ## #F PQ_READ_NEXT_LINE( ) . read line from pq but never return fail ## ## Essentially, like `PQ_READ_ALL_LINE' but we know there is a complete line ## to be got, so we wait for it, before returning. ## InstallGlobalFunction(PQ_READ_NEXT_LINE, iostream -> ReadAllLine(iostream, true, IS_ALL_PQ_LINE) ); ############################################################################# ## #F FLUSH_PQ_STREAM_UNTIL(,,,,) ## . . . . . . . . . . . . . . read lines from a stream until a wanted line ## ## calls (which should be one of `ReadLine', `PQ_READ_NEXT_LINE' or ## `PQ_READ_ALL_LINE') to read lines from a stream and `Info's each ## line read at `InfoANUPQ' level until a line is read for ## which `()' is `true'; is `Info'-ed at `InfoANUPQ' ## level and returned. should be a boolean-valued ## function that expects a string as its only argument, and and ## should be positive integers. An of 10 means that ## the line matched by `()' should never be ## `Info'-ed. ## InstallGlobalFunction(FLUSH_PQ_STREAM_UNTIL, function(stream, infoLev, infoLevMy, readln, IsMyLine) local line; line := readln(stream); while not IsMyLine(line) do Info(InfoANUPQ, infoLev, Chomp(line)); line := readln(stream); od; if line <> fail and infoLevMy < 10 then Info(InfoANUPQ, infoLevMy, Chomp(line)); fi; return line; end); ############################################################################# ## #V PQ_ERROR_EXIT_MESSAGES . . . error messages emitted by the pq before exit ## ## A list of the error messages the `pq' emits just before exiting. ## InstallValue(PQ_ERROR_EXIT_MESSAGES, [ "Evaluation in compute_degree may cause integer overflow", "A relation is too long -- increase the value of MAXWORD", "Ran out of space during computation" ]); ############################################################################# ## #F FILTER_PQ_STREAM_UNTIL_PROMPT( ) ## ## reads `pq' output from `.stream' until a `pq' prompt and `Info's ## any lines that are prompts, blank lines, menu exits or start with the ## strings in the list `.filter' (if bound) at `InfoANUPQ' level 5; ## all other lines are either `Info'-ed at `InfoANUPQ' level 3 if ## `datarec.nonuser' is set, or, more usually, are `Info'-ed at `InfoANUPQ' ## level 2 if they are computation times or at `InfoANUPQ' level 1, ## otherwise. ## InstallGlobalFunction(FILTER_PQ_STREAM_UNTIL_PROMPT, function( datarec ) local match, filter, lowlev, ctimelev; filter := ["Exiting", "pq,", "Now enter", "Presentation listing images", "(use generators x1,x2"]; if IsBound(datarec.match) then if datarec.match = true then match := ["Group:", "Group completed"]; else match := [datarec.match]; fi; fi; if IsBound(datarec.filter) then Append(filter, datarec.filter); fi; if ValueOption("nonuser") = true then lowlev := 3; ctimelev := 3; else ctimelev := 2; if not IsBound(datarec.OutputLevel) or datarec.OutputLevel = 0 then lowlev := 3; else lowlev := 1; fi; fi; repeat datarec.line := PQ_READ_NEXT_LINE(datarec.stream); if ANUPQData.linetype in ["prompt", "request"] then Info( InfoANUPQ, 5, Chomp(datarec.line) ); break; elif ForAny(["seconds", "Lused", "*** Final "], s -> PositionSublist(datarec.line, s) <> fail) then Info( InfoANUPQ, ctimelev, Chomp(datarec.line) ); elif datarec.line = "\n" or ForAny( filter, s -> IsMatchingSublist(datarec.line, s) ) then Info( InfoANUPQ, 5, Chomp(datarec.line) ); elif PositionSublist(datarec.line, " saved on file") <> fail then Info( InfoANUPQ, ctimelev, Chomp(datarec.line) ); elif ForAny( PQ_ERROR_EXIT_MESSAGES, s -> IsMatchingSublist(datarec.line, s) ) then Info( InfoANUPQ + InfoWarning, 1, Chomp(datarec.line) ); Error( "pq program terminated, with error condition:\n ", datarec.line ); else Info( InfoANUPQ, lowlev, Chomp(datarec.line) ); fi; if IsBound(match) then if ForAny( match, s -> IsMatchingSublist(datarec.line, s) ) then datarec.matchedline := datarec.line; datarec.complete := IsBound(datarec.complete) and datarec.complete or IsMatchingSublist(datarec.line, "Group completed"); fi; elif IsBound(datarec.matchlist) and ForAny( datarec.matchlist, s -> PositionSublist(datarec.line, s) <> fail ) then Add(datarec.matchedlines, datarec.line); fi; until false; end); ############################################################################# ## #F ToPQk( , , ) . . . . . . . writes to a pq stream ## ## writes (and , in setup file case) to stream ## `.stream' and `Info's and at `InfoANUPQ' level 3 ## after a ```ToPQ> ''' prompt, and returns `true' if successful and `fail' ## otherwise. The ``k'' at the end of the function name is mnemonic for ## ``keyword'' (for ``keyword'' inputs to the `pq' binary one never wants to ## flush output). ## InstallGlobalFunction(ToPQk, function(datarec, cmd, comment) local ok, line, i, j, closed, fragment, sepchars, words, filterones; if not IsOutputTextStream(datarec.stream) and IsEndOfStream(datarec.stream) then Error("sorry! Process stream has died!\n"); fi; if cmd in ["gens", "rels"] then # these are done specially because of their potential to be enormously long if cmd = "gens" then line := "generators { "; sepchars := ", "; else line := "relators { "; sepchars := "*^, "; fi; words := datarec.(cmd); filterones := cmd = "rels" and not IsBound(datarec.Relators) and (IsFpGroup(datarec.group) or not IsPGroup(datarec.group)); i := 1; while filterones and i <= Length(words) and IsOne(words[i]) do i := i + 1; od; if i <= Length(words) then Append(line, String(words[i])); i := i + 1; fi; ok := true; closed := false; repeat while filterones and i <= Length(words) and IsOne(words[i]) do i := i + 1; od; # i is the index of the next word to be added to line or > #words if i <= Length(words) then # if number of non-trivial words is 0 or 1 no comma is ever added Append(line, ", "); Append(line, String(words[i])); i := i + 1; else Append(line, " }"); if cmd = "rels" then Append(line, ";"); fi; closed := true; # not quite equivalent to: i > Length(words) fi; while ok and (Length(line) >= 69 or (closed and Length(line) > 0)) do if Length(line) >= 69 then # find a nice break if we can j := 68; while j > 4 and not line[j] in sepchars do j := j - 1; od; # no nice break if j = 4 then j := 69; while j < Length(line) and not line[j] in sepchars do j := j + 1; od; fi; fragment := line{[1 .. j]}; else fragment := line; j := Length(line); fi; if j = Length(line) and closed then line := ""; else line := Concatenation(" ", line{[j + 1 .. Length(line)]}); fi; Info(InfoANUPQ, 4, "ToPQ> ", fragment); if IsBound( datarec.setupfile) then ok := WriteLine(datarec.stream, fragment); else ok := WriteLine(datarec.stream, fragment); if IsBound( ANUPQData.topqlogfile ) then WriteLine(ANUPQData.logstream, fragment); fi; fi; od; until closed or not ok; else # We add a null string in case or is [] # ... so that `Concatenation( List(., String) );' statements return strings Add(cmd, ""); Add(comment, ""); cmd := Concatenation( List(cmd, String) ); comment := Concatenation( List(comment, String) ); Info(InfoANUPQ, 4, "ToPQ> ", cmd, comment); if IsBound( datarec.setupfile) then ok := WriteLine(datarec.stream, Concatenation(cmd, comment)); else ok := WriteLine(datarec.stream, cmd); if IsBound( ANUPQData.topqlogfile ) then WriteLine(ANUPQData.logstream, Concatenation(cmd, comment)); fi; fi; fi; if ok = fail then Error("write to stream failed\n"); fi; return ok; end); ############################################################################# ## #F ToPQ(, , ) . . write to pq (& for iostream flush) ## ## calls `ToPQk' to write (and , in setup file case) to ## stream `.stream' and `Info' and at `InfoANUPQ' ## level 3 after a ```ToPQ> ''' prompt, and then, if we are not just writing ## a setup file (determined by checking whether `.setupfile' is ## bound), calls `FILTER_PQ_STREAM_UNTIL_PROMPT' to filter lines to `Info' ## at the various `InfoANUPQ' levels. If we are not writing a setup file the ## last line flushed is saved in `.line'. ## InstallGlobalFunction(ToPQ, function(datarec, cmd, comment) local files, globals; ToPQk(datarec, cmd, comment); if not IsBound( datarec.setupfile ) then FILTER_PQ_STREAM_UNTIL_PROMPT(datarec); globals := ["ANUPQglb", "F", "gens", "relativeOrders", "ANUPQsize", "ANUPQagsize", "MapImages"]; while ANUPQData.linetype = "request" do files := [ Filename( ANUPQData.tmpdir, "GAP_input" ), Filename( ANUPQData.tmpdir, "GAP_rep" ) ]; PQ_READ_AS_FUNC_WITH_VARS( files, globals ); ToPQk( datarec, [ "pq, stabiliser is ready!" ], [] ); FILTER_PQ_STREAM_UNTIL_PROMPT(datarec); od; fi; end); ############################################################################# ## #F ToPQ_BOOL( , , ) . . . . pass a boolean to pq ## ## converts a {\GAP} boolean to a C boolean and appends the ## appropriate adjustment to the string before calling `ToPQ' (we ## assume that is boolean ... `VALUE_PQ_OPTION' should already have ## checked that). ## InstallGlobalFunction( ToPQ_BOOL, function( datarec, optval, comment ) if optval = true then ToPQ( datarec, [ 1 ], [ " #do ", comment ] ); else ToPQ( datarec, [ 0 ], [ " #do not ", comment ] ); fi; end); ############################################################################# ## #F PqRead( ) . . . primitive read of a single line from ANUPQ iostream #F PqRead() ## ## read a complete line of {\ANUPQ} output, from the th or default ## interactive {\ANUPQ} process, if there is output to be read and returns ## `fail' otherwise. When successful, the line is returned as a string ## complete with trailing newline, colon, or question-mark character. Please ## note that it is possible to be ``too quick'' (i.e.~the return can be ## `fail' purely because the output from {\ANUPQ} is not there yet), but if ## `PqRead' finds any output at all, it waits for a complete line. `PqRead' ## also writes the line read via `Info' at `InfoANUPQ' level 2. It doesn't ## try to distinguish banner and menu output from other output of the `pq' ## binary. ## InstallGlobalFunction(PqRead, function(arg) local line; line := PQ_READ_ALL_LINE( ANUPQData.io[ PqProcessIndex(arg) ].stream ); Info(InfoANUPQ, 2, Chomp(line)); return line; end); ############################################################################# ## #F PqReadAll( ) . . . . . read all current output from an ANUPQ iostream #F PqReadAll() ## ## read and return as many *complete* lines of {\ANUPQ} output, from the ## th or default interactive {\ANUPQ} process, as there are to be read, ## *at the time of the call*, as a list of strings with any trailing ## newlines removed and returns the empty list otherwise. `PqReadAll' also ## writes each line read via `Info' at `InfoANUPQ' level 2. It doesn't try ## to distinguish banner and menu output from other output of the `pq' ## binary. Whenever `PqReadAll' finds only a partial line, it waits for the ## complete line, thus increasing the probability that it has captured all ## the output to be had from {\ANUPQ}. ## InstallGlobalFunction(PqReadAll, function(arg) local lines, stream, line; stream := ANUPQData.io[ PqProcessIndex(arg) ].stream; lines := []; line := PQ_READ_ALL_LINE(stream); while line <> fail do line := Chomp(line); Info(InfoANUPQ, 2, line); Add(lines, line); line := PQ_READ_ALL_LINE(stream); od; return lines; end); ############################################################################# ## #F PqReadUntil( , ) . read from ANUPQ iostream until a cond'n #F PqReadUntil( ) #F PqReadUntil( , , ) #F PqReadUntil( , ) ## ## read complete lines of {\ANUPQ} output, from the th or default ## interactive {\ANUPQ} process, ``chomps'' them (i.e.~removes any trailing ## newline character), emits them to `Info' at `InfoANUPQ' level 2 (without ## trying to distinguish banner and menu output from other output of the ## `pq' binary), and applies the function (where is just ## the identity map/function for the first two forms) until a ``chomped'' ## line for which `( () )' is true. ## `PqReadUntil' returns the list of -ed ``chomped'' lines read. ## InstallGlobalFunction(PqReadUntil, function(arg) local idx1stfn, stream, IsMyLine, Modify, lines, line; idx1stfn := First([1..Length(arg)], i -> IsFunction(arg[i])); if idx1stfn = fail then Error("expected at least one function argument\n"); elif Length(arg) > idx1stfn + 1 then Error("expected 1 or 2 function arguments, not ", Length(arg) - idx1stfn + 1, "\n"); elif idx1stfn > 2 then Error("expected 0 or 1 integer arguments, not ", idx1stfn - 1, "\n"); else stream := ANUPQData.io[ ANUPQ_IOINDEX(arg{[1..idx1stfn - 1]}) ].stream; IsMyLine := arg[idx1stfn]; if idx1stfn = Length(arg) then Modify := line -> line; # The identity function else Modify := arg[Length(arg)]; fi; lines := []; repeat line := Chomp( PQ_READ_NEXT_LINE(stream) ); Info(InfoANUPQ, 2, line); line := Modify(line); Add(lines, line); until IsMyLine(line); return lines; fi; end); ############################################################################# ## #F PqWrite( , ) . . . . . . . primitive write to ANUPQ iostream #F PqWrite( ) ## ## write to the th or default interactive {\ANUPQ} process; ## must be in exactly the form the {\ANUPQ} standalone expects. The ## command is echoed via `Info' at `InfoANUPQ' level 3 (with a ```ToPQ> ''' ## prompt); i.e.~do `SetInfoLevel(InfoANUPQ, 3);' to see what is transmitted ## to the `pq' binary. `PqWrite' returns `true' if successful in writing to ## the stream of the interactive {\ANUPQ} process, and `fail' otherwise. ## InstallGlobalFunction(PqWrite, function(arg) local ioIndex, line; if Length(arg) in [1, 2] then ioIndex := ANUPQ_IOINDEX(arg{[1..Length(arg) - 1]}); return ToPQk( ANUPQData.io[ioIndex], arg{[Length(arg)..Length(arg)]}, [] ); else Error("expected 1 or 2 arguments ... not ", Length(arg), " arguments\n"); fi; end); ############################################################################# ## #F ANUPQ_ARG_CHK( , ) . . . . check args of int/non-int fns ## ## checks the argument list for a function that has both interactive ## and non-interactive versions, where is the generic name of the ## function. If has length more than 1 then it contains options for ## the function that have been passed in one of the {\GAP} 3-compatible ways ## only available non-interactively. `ANUPQ_ARG_CHK' returns which ## is either `ANUPQData.ni' in the non-interactive case or ## `ANUPQData.io[]' for some in the interactive case, after setting ## .calltype' to one of `"interactive"', `"non-interactive"' or ## `"GAP3compatible"'. ## InstallGlobalFunction(ANUPQ_ARG_CHK, function(funcname, args) local ioIndex, datarec, optrec, optnames; PQ_OTHER_OPTS_CHK( funcname, IsEmpty(args) or IsPosInt( args[1] ) ); if IsEmpty(args) or IsPosInt( args[1] ) then datarec := ANUPQData.io[ CallFuncList( PqProcessIndex, args ) ]; datarec.outfname := ANUPQData.outfile; # not always needed #datarec.calltype := "interactive"; # PqStart sets this if not IsBound(datarec.group) then Error( "huh! Interactive process has no group\n" ); elif IsMatchingSublist(funcname, "PqDescendants") then if not IsPcGroup( datarec.group ) then Error( "group of process must be a pc group\n" ); fi; else # Check for Prime, ClassBound if nec. PQ_OPTION_CHECK( funcname, datarec ); fi; elif 1 = Length(args) then if not IsPcGroup( args[1] ) then if IsMatchingSublist(funcname, "PqDescendants") then Error( "first argument must be a pc group\n" ); elif not IsFpGroup( args[1] ) then Error( "first argument must be a pc group or an fp group\n" ); fi; fi; ANUPQData.ni := PQ_START( VALUE_PQ_OPTION( "PqWorkspace", 10000000 ), VALUE_PQ_OPTION( "SetupFile" ) ); datarec := ANUPQData.ni; datarec.group := args[1]; datarec.calltype := "non-interactive"; datarec.procId := 0; PQ_OPTION_CHECK( funcname, datarec ); # Check for Prime, ClassBound if nec. if IsBound( datarec.setupfile ) then datarec.outfname := "PQ_OUTPUT"; else datarec.outfname := ANUPQData.outfile; # not always needed fi; else # GAP 3 way of passing options is supported in non-interactive use if funcname = "PqDescendantsTreeCoclassOne" then Error("GAP 3-compatible ways of passing options not supported"); elif IsRecord(args[2]) then optrec := ShallowCopy(args[2]); optnames := Set( REC_NAMES(optrec) ); SubtractSet( optnames, Set( ANUPQoptions.(funcname) ) ); if not IsEmpty(optnames) then Error(ANUPQoptError( funcname, optnames ), "\n"); fi; else optrec := ANUPQextractOptions(funcname, args{[2 .. Length(args)]}); fi; PushOptions(optrec); PQ_FUNCTION.(funcname)( args{[1]} ); PopOptions(); datarec := ANUPQData.ni; datarec.calltype := "GAP3compatible"; datarec.procId := 0; fi; return datarec; end ); ############################################################################# ## #F PQ_COMPLETE_NONINTERACTIVE_FUNC_CALL( ) ## ## writes the final commands to the `pq' setup file so that the `pq' binary ## makes a clean exit, or just closes the stream to kill the `pq' process. ## InstallGlobalFunction(PQ_COMPLETE_NONINTERACTIVE_FUNC_CALL, function(datarec) if IsBound( datarec.setupfile ) then PQ_MENU(datarec, "SP"); ToPQk(datarec, [ 0 ], [ " #exit program" ]); fi; CloseStream(datarec.stream); if IsBound( datarec.setupfile ) then Info(InfoANUPQ, 1, "Input file: '", datarec.setupfile, "' written."); Info(InfoANUPQ, 1, "Run `pq' with '", datarec.opts, "' flags."); Info(InfoANUPQ, 1, "The result will be saved in: '", datarec.outfname, "'."); fi; end ); ############################################################################# ## #F ToPQLog([]) . . . . . . log or stop logging pq commands to file ## ## With string argument , `ToPQLog' opens the file with name ## for logging; all commands written to the `pq' binary (that are ## `Info'-ed behind a ```ToPQ> ''' prompt at `InfoANUPQ' level 4) are then ## also written to that file (but without prompts). With no argument, ## `ToPQLog' stops logging to whatever file was being logged to. If a file ## was already being logged to, that file is closed and the file with name ## is opened for logging. ## InstallGlobalFunction(ToPQLog, function(arg) if not( IsEmpty(arg) or IsString( arg[1] ) ) then Error( "expected no arguments or one string argument\n" ); fi; if IsBound(ANUPQData.topqlogfile) then CloseStream(ANUPQData.logstream); PQ_UNBIND(ANUPQData, ["topqlogfile", "logstream"]); elif IsEmpty(arg) then Info(InfoANUPQ + InfoWarning, 1, "No file currently being logged to."); return; fi; if not( IsEmpty(arg) ) and IsString(arg[1]) then ANUPQData.topqlogfile := arg[1]; ANUPQData.logstream := OutputTextFile(ANUPQData.topqlogfile, false); fi; end); #E anupqios.gi . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anusp.gi000644 000766 000024 00000026707 14355420571 015367 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #A anusp.gi ANUPQ package Eamonn O'Brien #A Alice Niemeyer ## #Y Copyright 1993-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany #Y Copyright 1993-2001, School of Mathematical Sciences, ANU, Australia ## ############################################################################# ## #F ANUPQSPerror( ) . . . . . . . . . . . . report illegal parameter ## InstallGlobalFunction( ANUPQSPerror, function( param ) Error( "Valid Options:\n", " \"ClassBound\", \n", " \"PcgsAutomorphisms\"\n", " \"Exponent\", \n", " \"Metabelian\"\n", " \"OutputLevel\", \n", " \"SetupFile\", \n", "Illegal Parameter: \"", param, "\"" ); end ); ############################################################################# ## #F ANUPQSPextractArgs( ) . . . . . . . . . . . . parse argument list ## InstallGlobalFunction( ANUPQSPextractArgs, function( args ) local CR, i, act, G, match; # allow to give only a prefix match := function( g, w ) return 1 < Length(g) and Length(g) <= Length(w) and w{[1..Length(g)]} = g; end; # extract arguments G := args[2]; CR := rec( group := G ); i := 3; while i <= Length(args) do act := args[i]; # "ClassBound", if match( act, "ClassBound" ) then i := i + 1; CR.ClassBound := args[i]; if CR.ClassBound <= PClassPGroup(G) then Error( "\"ClassBound\" must be at least ", PClassPGroup(G)+1 ); fi; # "PcgsAutomorphisms" elif match( act, "PcgsAutomorphisms" ) then CR.PcgsAutomorphisms := true; #this may be available later # "SpaceEfficient" #elif match( act, "SpaceEfficient" ) then # CR.SpaceEfficient := true; # "Exponent", elif match( act, "Exponent" ) then i := i + 1; CR.Exponent := args[i]; # "Metabelian" elif match( act, "Metabelian" ) then CR.Metabelian := true; # "Verbose" elif match( act, "Verbose" ) then CR.Verbose := true; # "SetupFile", elif match( act, "SetupFile" ) then i := i + 1; CR.SetupFile := args[i]; # "TmpDir", elif match( act, "TmpDir" ) then i := i + 1; CR.TmpDir := args[i]; # "Output", elif match( act, "OutputLevel" ) then i := i + 1; CR.OutputLevel := args[i]; CR.Verbose := true; # signal an error else ANUPQSPerror(act); fi; i := i + 1; od; return CR; end ); ############################################################################# ## #F PqFpGroupPcGroup( ) . . . . . . corresponding fp group of a pc group ## InstallGlobalFunction( PqFpGroupPcGroup, G -> Image( IsomorphismFpGroup( G ) ) ); ############################################################################# ## #M FpGroupPcGroup( ) . . . . . . . corresponding fp group of a pc group ## InstallMethod( FpGroupPcGroup, "pc group", [IsPcGroup], 0, PqFpGroupPcGroup ); ############################################################################# ## #F PQ_EPIMORPHISM_STANDARD_PRESENTATION( ) . (epi. onto) SP for group ## InstallGlobalFunction( PQ_EPIMORPHISM_STANDARD_PRESENTATION, function( args ) local datarec, rank, Q, Qclass, automorphisms, generators, x, images, i, r, j, aut, result, desc, k; datarec := ANUPQ_ARG_CHK("StandardPresentation", args); if datarec.calltype = "interactive" and IsBound(datarec.SPepi) then # Note: the `pq' binary seg-faults if called twice to # calculate the standard presentation of a group return datarec.SPepi; fi; if VALUE_PQ_OPTION("pQuotient") = fail and VALUE_PQ_OPTION("Prime", datarec) <> fail then # Ensure a saved value of `Prime' has precedence # over a saved value of `pQuotient'. Unbind(datarec.pQuotient); fi; if VALUE_PQ_OPTION("pQuotient", datarec) <> fail then PQ_AUT_GROUP( datarec.pQuotient ); datarec.Prime := PrimePGroup( datarec.pQuotient ); elif VALUE_PQ_OPTION("Prime", datarec) <> fail then rank := Number( List( AbelianInvariants(datarec.group), x -> Gcd(x, datarec.Prime) ), y -> y = datarec.Prime ); # construct free group with generators Q := FreeGroup( IsSyllableWordsFamily, rank, "q" ); # construct power-relation Q := Q / List( GeneratorsOfGroup(Q), x -> x^datarec.Prime ); # construct pc group Q := PcGroupFpGroup(Q); # construct automorphism automorphisms := []; generators := GeneratorsOfGroup(Q); for x in GeneratorsOfGroup( GL(rank, datarec.Prime) ) do images := []; for i in [ 1 .. rank ] do r := One(Q); for j in [ 1 .. rank ] do r := r * generators[j]^Int(x[i][j]); od; images[i] := r; od; aut := GroupHomomorphismByImages( Q, Q, generators, images ); SetIsBijective( aut, true ); Add( automorphisms, aut ); od; SetAutomorphismGroup( Q, GroupByGenerators( automorphisms ) ); datarec.pQuotient := Q; fi; #PushOptions(rec(nonuser := true)); Qclass := PClassPGroup( datarec.pQuotient ); if VALUE_PQ_OPTION("ClassBound", 63) <= Qclass then Error( "option `ClassBound' must be greater than `pQuotient' class (", Qclass, ")\n" ); fi; PQ_PC_PRESENTATION(datarec, "SP" : ClassBound := Qclass); PQ_SP_STANDARD_PRESENTATION(datarec); PQ_SP_ISOMORPHISM(datarec); if datarec.calltype = "non-interactive" then PQ_COMPLETE_NONINTERACTIVE_FUNC_CALL(datarec); if IsBound( datarec.setupfile ) then #PopOptions(); return true; fi; fi; # try to read output result := ANUPQReadOutput( ANUPQData.SPimages ); if not IsBound(result.ANUPQmagic) then Error("something wrong with `pq' binary. Please check installation\n"); fi; desc := rec(); result.ANUPQgroups[Length(result.ANUPQgroups)](desc); # if result.ANUPQautos <> fail and # Length( result.ANUPQautos ) = Length( result.ANUPQgroups ) then # result.ANUPQautos[ Length(result.ANUPQgroups) ]( desc.group ); # fi; # revise images to correspond to images of user-supplied generators datarec.SP := desc.group; x := Length( desc.map ); k := Length( GeneratorsOfGroup( datarec.group ) ); # images of user supplied generators are last k entries in .pqImages datarec.SPepi := GroupHomomorphismByImagesNC( datarec.group, datarec.SP, GeneratorsOfGroup(datarec.group), desc.map{[x - k + 1..x]} ); #PopOptions(); return datarec.SPepi; end ); ############################################################################# ## #F EpimorphismPqStandardPresentation( ) . . . epi. onto SP for p-group ## InstallGlobalFunction( EpimorphismPqStandardPresentation, function( arg ) return PQ_EPIMORPHISM_STANDARD_PRESENTATION( arg ); end ); ############################################################################# ## #F PqStandardPresentation( : ) . . . . . . . SP for p-group ## InstallGlobalFunction( PqStandardPresentation, function( arg ) local SPepi; SPepi := PQ_EPIMORPHISM_STANDARD_PRESENTATION( arg ); if SPepi = true then return true; # the SetupFile case fi; return Range( SPepi ); end ); ############################################################################# ## #M EpimorphismStandardPresentation( ) . . . . . epi. onto SP for p-group #M EpimorphismStandardPresentation( [] ) ## InstallMethod( EpimorphismStandardPresentation, "fp group", [IsFpGroup], 0, EpimorphismPqStandardPresentation ); InstallMethod( EpimorphismStandardPresentation, "pc group", [IsPcGroup], 0, EpimorphismPqStandardPresentation ); InstallMethod( EpimorphismStandardPresentation, "positive integer", [IsPosInt], 0, EpimorphismPqStandardPresentation ); InstallOtherMethod( EpimorphismStandardPresentation, "", [], 0, EpimorphismPqStandardPresentation ); ############################################################################# ## #M StandardPresentation( ) . . . . . . . . . . . . . . . SP for p-group #M StandardPresentation( [] ) ## InstallMethod( StandardPresentation, "fp group", [IsFpGroup], 0, PqStandardPresentation ); InstallMethod( StandardPresentation, "pc group", [IsPcGroup], 0, PqStandardPresentation ); InstallMethod( StandardPresentation, "positive integer", [IsPosInt], 0, PqStandardPresentation ); InstallOtherMethod( StandardPresentation, "", [], 0, PqStandardPresentation ); ############################################################################# ## #F IsPqIsomorphicPGroup( , ) . . . . . . . . . . . isomorphism test ## InstallGlobalFunction( IsPqIsomorphicPGroup, function( G, H ) local p, class, SG, SH, Ggens, Hgens; # and must both be pc groups and p-groups if not IsPcGroup(G) then Error( " must be a pc group" ); fi; if not IsPcGroup(H) then Error( " must be a pc group" ); fi; if Size(G) <> Size(H) then return false; fi; p := SmallestRootInt(Size(G)); if not IsPrimeInt(p) then Error( " must be a p-group" ); fi; # check the Frattini factor if RankPGroup(G) <> RankPGroup(H) then return false; fi; # check the exponent-p length and the sizes of the groups in the # p-central series of both groups if List(PCentralSeries(G,p), Size) <> List(PCentralSeries(H,p), Size) then return false; fi; # if the groups are elementary abelian they are isomorphic class := PClassPGroup(G); if class = 1 then return true; fi; # compute a standard presentation for both SG := PqStandardPresentation(PqFpGroupPcGroup(G) : Prime := p, ClassBound := class); SH := PqStandardPresentation(PqFpGroupPcGroup(H) : Prime := p, ClassBound := class); # the groups are equal if the presentation are equal Ggens := GeneratorsOfGroup( FreeGroupOfFpGroup( SG ) ); Hgens := GeneratorsOfGroup( FreeGroupOfFpGroup( SH ) ); return RelatorsOfFpGroup(SG) = List( RelatorsOfFpGroup(SH), x -> MappedWord( x, Hgens, Ggens ) ); end ); ############################################################################# ## #M IsIsomorphicPGroup( , ) ## InstallMethod( IsIsomorphicPGroup, "pc group, pc group", [IsPcGroup, IsPcGroup], 0, IsPqIsomorphicPGroup ); #E anusp.gi . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupga.gd000644 000766 000024 00000006355 14355420571 015504 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #A anupga.gd ANUPQ package Frank Celler #A & Eamonn O'Brien #A & Benedikt Rothe ## ## Declaration file for p-group generation of automorphism group functions ## and variables. ## #Y Copyright 1992-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany #Y Copyright 1992-1994, School of Mathematical Sciences, ANU, Australia ## ############################################################################# ## #F ANUPQerror( ) . . . . . . . . . . . . . .report illegal parameter ## DeclareGlobalFunction( "ANUPQerror" ); ############################################################################# ## #F ANUPQextractArgs( ) . . . . . . . . . . . . . . parse argument list ## DeclareGlobalFunction( "ANUPQextractArgs" ); ############################################################################# ## #F ANUPQauto( , , ) . . . . . . . . construct automorphism ## DeclareGlobalFunction( "ANUPQauto" ); ############################################################################# ## #F ANUPQautoList( , , ) . . . . . . . construct a list of autos ## DeclareGlobalFunction( "ANUPQautoList" ); ############################################################################# ## #F ANUPQSetAutomorphismGroup( , , , ) ## DeclareGlobalFunction( "ANUPQSetAutomorphismGroup" ); ############################################################################# ## #F PqSupplementInnerAutomorphisms( ) ## DeclareGlobalFunction( "PqSupplementInnerAutomorphisms" ); ############################################################################# ## #F ANUPQprintExps( , ) . . . . . . . . . . . print exponent list ## DeclareGlobalFunction( "ANUPQprintExps" ); ############################################################################# ## #F PqList( ) . . . . . . . . . . . . . . . get a list of descendants ## DeclareGlobalFunction( "PqList" ); ############################################################################# ## #F PqLetterInt( ) . . . . . . . . . . . . . . . ## DeclareGlobalFunction( "PqLetterInt" ); ############################################################################# ## #F PQ_DESCENDANTS( : ) . . construct descendants of ## DeclareGlobalFunction( "PQ_DESCENDANTS" ); ############################################################################# ## #F PqDescendants( , ... ) . . . . . . . . . construct descendants of ## DeclareGlobalFunction( "PqDescendants" ); ############################################################################# ## #F PqSetPQuotientToGroup( ) . . . set p-quotient as the group of process #F PqSetPQuotientToGroup() ## DeclareGlobalFunction( "PqSetPQuotientToGroup" ); ############################################################################# ## #F SavePqList( , ) . . . . . . . . . save a list of descendants ## DeclareGlobalFunction( "SavePqList" ); #E anupga.gd . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupqhead.gi000644 000766 000024 00000004622 14355420571 016177 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqhead.gi ANUPQ package Werner Nickel #W Greg Gamble ## ## `Head' file for the GAP interface to the ANU pq binary by Eamonn O'Brien. ## #Y Copyright (C) 2006 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #V ANUPQData . . record used by various functions of the ANUPQ package ## ## The fields of ANUPQData are: ## ## "binary" . . the path of the pq binary ## "tmpdir" . . the path of the temporary directory for pq i/o files ## "io" . . . . list of data records for PqStart IO Streams ## "outfile" . . the path of the pq output file ## "SPimages" . the path of the pq GAP_library file ## "version" . . the version of the current pq binary ## InstallValue( ANUPQData, rec( binary := Filename( DirectoriesPackagePrograms( "anupq" ), "pq" ), tmpdir := DirectoryTemporary(), ni := rec(), # record for non-interactive functions io := [] # list of records for PqStart IO Streams, # of which, there are initially none ) ); ANUPQData.outfile := Filename( ANUPQData.tmpdir, "PQ_OUTPUT" ); ANUPQData.SPimages := Filename( ANUPQData.tmpdir, "GAP_library" ); # Fire up the pq binary to get its version ANUPQData.version := ""; Process( DirectoryCurrent(), ANUPQData.binary, InputTextNone(), OutputTextString( ANUPQData.version, false ), [ "-v" ] ); ANUPQData.version := ANUPQData.version{[PositionSublist( ANUPQData.version, "Version" ) + 8 .. Length(ANUPQData.version) - 1] }; ############################################################################# ## #I InfoClass ## # Set the default level of InfoANUPQ SetInfoLevel( InfoANUPQ, 1 ); ############################################################################# ## #V ANUPQWarnOfOtherOptions . if true user is warned of non-ANUPQ-f'n options ## ANUPQWarnOfOtherOptions := false; ############################################################################# ## ## Ensure no zombie `pq' processes from interactive (`PqStart') sessions are ## left lying around when user quits GAP. ## InstallAtExit( PqQuitAll ); #E anupqhead.gi . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupqid.gd000644 000766 000024 00000002544 14355420571 015666 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqid.gd ANUPQ package Werner Nickel #W Greg Gamble ## ## This file declares functions to do with evaluating identities. ## #Y Copyright (C) 2001 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #F PqEvalSingleRelation( , , ) ## DeclareGlobalFunction( "PqEvalSingleRelation" ); ############################################################################# ## #F PqEnumerateWords( , , ) ## DeclareGlobalFunction( "PqEnumerateWords" ); ############################################################################# ## #F PqEvaluateIdentity( , , ) ## DeclareGlobalFunction( "PqEvaluateIdentity" ); ############################################################################# ## #F PqWithIdentity( ,

, , ) ## DeclareGlobalFunction( "PqWithIdentity" ); ############################################################################# ## #F PQ_EVALUATE_IDENTITY( , ) ## DeclareGlobalFunction( "PQ_EVALUATE_IDENTITY" ); #E anupqid.gd . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupqi.gi000644 000766 000024 00000433203 14355420571 015527 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqi.gi ANUPQ package Greg Gamble ## ## This file installs interactive functions that execute individual pq menu ## options. ## #Y Copyright (C) 2001 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #F PQ_UNBIND( , ) . . . . . unbind fields of a data record ## ## unbinds the fields in the list of that data record . ## InstallGlobalFunction( PQ_UNBIND, function( datarec, fields ) local field; for field in fields do Unbind( datarec.(field) ); od; end ); ############################################################################# ## #F PQ_AUT_GROUP( ) . . . . . . . . . . . . . . . . . automorphism group ## ## returns the automorphism group of a $p$-group as a record, avoiding ## computation if possible (currently it *isn't* possible), or else uses ## {\AutPGrp}'s `AutomorphismGroupPGroup'. ## InstallGlobalFunction( PQ_AUT_GROUP, function( G ) local autgrp; if not IsPGroup(G) then Error("group must be a p-group\n"); fi; if false and HasANUPQAutomorphisms(G) then # Can't use this because we currently don't know how to interpret # the automorphism information returned by the standalone properly. autgrp := PqSupplementInnerAutomorphisms(G); elif false and HasAutomorphismGroup(G) then # Can't use existing automorphism information because it does not # contain the information required by the standalone. autgrp := AutomorphismGroup( G ); elif LoadPackage("autpgrp") = true or IsAbelian(G) then autgrp := AutomorphismGroupPGroup(G); else return Error( "since package `AutPGrp' is not installed\n", " must have class 1 or 's aut. group must be known.\n", "Please install the `AutPGrp' package\n" ); fi; return autgrp; end ); ############################################################################# ## #F PQ_AUT_INPUT( , : ) . . . . . . automorphism input ## ## inputs automorphism data for `.group' given by to the ## `pq' binary derived from the pc group (used in option 1 of the ## $p$-Group Generation menu and option 2 of the Standard Presentation menu). ## InstallGlobalFunction( PQ_AUT_INPUT, function( datarec, G ) local autrec, nrautos, rank, gens, i, aut, j, g, exponents; autrec := PQ_AUT_GROUP( G ); nrautos := Length( autrec.glAutos ) + Length( autrec.agAutos ); ## the automorphisms have to be in a special form which PQ_AUT_GROUP() ## *must* deliver. rank := RankPGroup( G ); gens := PcgsPCentralSeriesPGroup( G ); ToPQ(datarec, [ nrautos ], [ " #number of automorphisms" ]); ## First write out the automorphisms generating a soluble normal subgroup ## of the automorphism group of the p-group. These automorphisms may ## not have a faithful representation on the Frattini quotient of the ## p-group and are treated accordingly by the standalone. ## ## They are written out in bottom up fashion as this is the order in ## which the orbit algorithm for a group given by an ag-system needs ## them. for i in Reversed([1..Length(autrec.agAutos)]) do aut := autrec.agAutos[i]; for j in [1..rank] do g := gens[j]; exponents := Flat( List( ExponentsOfPcElement(gens, Image( aut, g )), e -> [ String(e), " "] ) ); ToPQ(datarec, [ exponents ], [ " #gen'r exp'ts of im(ag aut ", i, ", gen ", j, ")" ]); od; od; ## Now output the automorphisms from the insoluble quotient of the ## automorphism group of the p-group. These have a faithful ## representation on the Frattini quotient of the p-group and are ## treated accordingly by the standalone. for i in Reversed( [1..Length(autrec.glAutos)] ) do aut := autrec.glAutos[i]; for j in [1..rank] do g := gens[j]; exponents := Flat( List( ExponentsOfPcElement(gens, Image( aut, g )), e -> [ String(e), " "] ) ); ToPQ(datarec, [ exponents ], [ " #gen'r exp'ts of im(gl aut ", i, ", gen ", j, ")" ]); od; od; if PQ_MENU(datarec) = "pG" then ## ?? Why only the pG menu ?? ## Finally, tell the standalone the number of soluble automorphisms ## and the relative order of each automorphism. ToPQ(datarec, [ Length(autrec.agOrder) ], [ " #number of soluble automorphisms" ]); for i in Reversed( [1..Length( autrec.agOrder )] ) do ToPQ( datarec, [ autrec.agOrder[i] ], [ " #rel order of ", i, "th ag automorphism" ] ); od; fi; end ); ############################################################################# ## #F PQ_MANUAL_AUT_INPUT(,) . automorphism input w/o an Aut gp ## ## inputs automorphism data for `.group' given by to the ## `pq' binary. ## InstallGlobalFunction( PQ_MANUAL_AUT_INPUT, function( datarec, mlist ) local line, nauts, nsolauts, rank, nexpts, i, j, aut, exponents; nauts := Length(mlist); rank := Length(mlist[1]); ToPQ(datarec, [ nauts ], [ " #no. of auts" ]); if datarec.line = "Input the number of exponents: " then nexpts := Length(mlist[1][1]); ToPQ(datarec, [ nexpts ], [ " #no. of exponents" ]); fi; for i in [1..nauts] do aut := mlist[i]; for j in [1..rank] do exponents := Flat( List( aut[j], e -> [ String(e), " "] ) ); ToPQ(datarec, [ exponents ], [ " #gen'r exp'ts of im(aut ", i, ", gen ", j, ")" ]); od; od; if PQ_MENU(datarec) = "pG" then ## ?? Why only the pG menu ?? ## Finally, tell the standalone the number of soluble automorphisms ## and the relative order of each automorphism. ToPQ(datarec, [ datarec.NumberOfSolubleAutomorphisms ], [ " #number of soluble automorphisms" ]); if datarec.NumberOfSolubleAutomorphisms > 0 then for i in datarec.RelativeOrders do ToPQ( datarec, [ datarec.RelativeOrders[i] ], [ " #rel order of ", i, "th ag automorphism" ] ); od; fi; fi; end ); ############################################################################# ## #F PQ_AUT_ARG_CHK(, ) . checks args for a func defining auts ## ## checks that the arguments make sense for a function that defines ## automorphisms, and if one of the arguments is a list checks as much as is ## possible that it is a list of matrices that will be valid input as ## automorphisms for the `pq' binary. If the arguments look ok a list ## containing the `ANUPQData.io' index of the data record and, if relevant, ## a list of matrices is returned. ## InstallGlobalFunction( PQ_AUT_ARG_CHK, function( minnargs, args ) local ioIndex, datarec, mlist, rank, nexpts; if Length(args) < minnargs then Error("expected at least 1 argument\n"); #minnargs is 0 or 1 elif 2 < Length(args) then Error("expected at most 2 arguments\n"); fi; if not IsEmpty(args) and IsList(args[ Length(args) ]) then mlist := args[ Length(args) ]; args := args{[1 .. Length(args) - 1]}; fi; ioIndex := CallFuncList(PqProcessIndex, args); if not IsBound(mlist) then return [ioIndex]; elif not( IsList(mlist) and ForAll(mlist, IsMatrix) and ForAll(Flat(mlist), i -> IsInt(i) and i >= 0) ) then Error(" must be a list of matrices with ", "non-negative integer coefficients\n"); fi; datarec := ANUPQData.io[ ioIndex ]; if IsBound( datarec.pQuotient ) then rank := RankPGroup( datarec.pQuotient ); else rank := Length(mlist[1]); # Should we allow this? fi; if not ForAll(mlist, mat -> Length(mat) = rank) then Error("no. of rows in each matrix of must be the rank of ", "p-quotient (", rank, ")\n"); fi; nexpts := Length(mlist[1][1]); if not ForAll(mlist, mat -> Length(mat[1]) = nexpts) then Error("each matrix of must have the same no. of columns\n"); fi; return [ioIndex, mlist]; end ); ############################################################################# ## #F PQ_PC_PRESENTATION( ,

) . . . . . . p-Q/SP menu option 1 ## ## inputs data given by to the `pq' binary for group ## `.group' to compute a pc presentation (do option 1 of the ## relevant menu) according to the menu, where is either ## `"pQ"' (main $p$-Quotient menu) or `"SP' (Standard Presentation menu). ## InstallGlobalFunction( PQ_PC_PRESENTATION, function( datarec, menu ) local gens, rels, p, fpgrp, identities, pcgs, len, strp, i, j, Rel, line; p := VALUE_PQ_OPTION("Prime", fail, datarec); # "Prime" is a `global' option PQ_MENU(datarec, menu); identities := menu = "pQ" and VALUE_PQ_OPTION("Identities", [], datarec) <> []; # Option 1 of p-Quotient/Standard Presentation Menu: defining the group ToPQk(datarec, [1], [" #define group"]); if VALUE_PQ_OPTION("GroupName", "[grp]", datarec) = "[grp]" and IsBound(datarec.group) and IsBound(datarec.group!.Name) then datarec.GroupName := datarec.group!.Name; fi; ToPQk(datarec, ["name ", datarec.GroupName], []); ToPQk(datarec, ["prime ", p], []); if identities then datarec.prevngens := 0; ToPQk(datarec, ["class ", 1], []); else ToPQk(datarec, ["class ", VALUE_PQ_OPTION("ClassBound", 63, datarec)], []); fi; ToPQk(datarec, ["exponent ", VALUE_PQ_OPTION("Exponent", 0, datarec)], []); # "Exponent" is a `global' option if VALUE_PQ_OPTION( "Metabelian", false, datarec ) = true then ToPQk(datarec, [ "metabelian" ], []); fi; ToPQk(datarec, ["output ", VALUE_PQ_OPTION("OutputLevel", 0, datarec)], []); if IsFpGroup(datarec.group) then gens := FreeGeneratorsOfFpGroup(datarec.group); rels := VALUE_PQ_OPTION("Relators", datarec); if rels = fail then rels := RelatorsOfFpGroup(datarec.group); elif ForAll( rels, rel -> PqParseWord(datarec.group, rel) ) then Info(InfoANUPQ, 2, "Relators parsed ok."); fi; elif not( IsPGroup(datarec.group) ) then fpgrp := FpGroupPcGroup( datarec.group ); gens := FreeGeneratorsOfFpGroup(fpgrp); rels := RelatorsOfFpGroup(fpgrp); else pcgs := PcgsPCentralSeriesPGroup(datarec.group); datarec.pcgs := pcgs; len := Length(pcgs); gens := List( [1..len], i -> Concatenation( "g", String(i) ) ); strp := String(p); Rel := function(elt, eltstr) local rel, expts, factors; rel := eltstr; expts := ExponentsOfPcElement( pcgs, elt ); if ForAny( expts, x -> x<>0 ) then factors := Filtered( List( [1..len], function(i) if expts[i] = 0 then return ""; fi; return Concatenation(gens[i], "^", String(expts[i])); end ), factor -> factor <> ""); Append(rel, "="); Append(rel, JoinStringsWithSeparator(factors, "*")); fi; return rel; end; rels := List( [1..len], i -> Rel( pcgs[i]^p, Concatenation(gens[i], "^", strp) ) ); for i in [1..len] do for j in [1..i-1] do Add(rels, Rel( Comm( pcgs[i], pcgs[j] ), Concatenation("[", gens[i], ",", gens[j], "]") )); od; od; fi; if Length(gens) > 511 then # The pq program defines MAXGENS to be 511 in `../include/runtime.h' # ... on the other hand, the number of pc gen'rs can be up to 65535 Error("number of defining generators, ", Length(gens), ", too large.\n", "The pq program defines MAXGENS (the maximum number of defining\n", "generators) to be 511.\n"); fi; datarec.gens := gens; datarec.rels := rels; ToPQk(datarec, "gens", []); datarec.match := true; ToPQ(datarec, "rels", []); ## pq is intolerant of long lines and integers that are split over lines #rels := Concatenation( # "relators { ", JoinStringsWithSeparator( rels, ", " ), " };"); #while Length(rels) >= 69 do # i := 68; # while not (rels[i] in "*^, ") do i := i - 1; od; # ToPQk(datarec, [ rels{[1 .. i]} ], []); # rels := Concatenation( " ", rels{[i + 1 .. Length(rels)]} ); #od; #ToPQ(datarec, [ rels ], []); datarec.haspcp := true; # The `pq' only sets OutputLevel locally within the menu item # ... for the GAP interface this would be too confusing; so we # set it `globally' PQ_SET_OUTPUT_LEVEL(datarec, datarec.OutputLevel); PQ_SET_GRP_DATA(datarec); if identities and datarec.ngens[1] <> 0 then PQ_EVALUATE_IDENTITIES(datarec); VALUE_PQ_OPTION("ClassBound", 63, datarec); while datarec.class < datarec.ClassBound and datarec.prevngens <> datarec.ngens[ datarec.class ] do PQ_NEXT_CLASS(datarec); od; fi; end ); ############################################################################# ## #F PqPcPresentation( : ) . . user version of p-Q menu option 1 #F PqPcPresentation( : ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to compute the pc presentation of the quotient (determined by ## ) of the group of the process, which for process is stored ## as `ANUPQData.io[].group'. ## ## The possible are the same as for the interactive `Pq' ## (see~"Pq!interactive") function, namely: `Prime', `ClassBound', ## `Exponent', `Relators', `GroupName', `Metabelian' and `OutputLevel' (see ## Chapter~"ANUPQ options" for a detailed description for these options). ## The option `Prime' is required unless already provided to `PqStart'. ## Also, option `ClassBound' *must* be supplied. ## ## *Notes* ## ## The pc presentation is held by the `pq' binary. There is no output of a ## {\GAP} pc group; see~`PqCurrentGroup' ("PqCurrentGroup") if you need the ## corresponding {\GAP} pc group. ## ## For those familiar with the `pq' binary, `PqPcPresentation' performs menu ## item 1 of the main $p$-Quotient menu. ## InstallGlobalFunction( PqPcPresentation, function( arg ) local datarec; PQ_OTHER_OPTS_CHK("PqPcPresentation", true); datarec := CallFuncList(ANUPQDataRecord, arg); PQ_PC_PRESENTATION( datarec, "pQ" ); end ); ############################################################################# ## #F PQ_SAVE_PC_PRESENTATION( , ) . . . p-Q menu option 2 ## ## directs the `pq' binary to save the pc presentation previously computed ## for `.group' to using option 2 of the main ## $p$-Quotient menu. ## InstallGlobalFunction( PQ_SAVE_PC_PRESENTATION, function( datarec, filename ) PQ_MENU(datarec, "pQ"); ToPQ(datarec, [ 2 ], [ " #save pc presentation to file" ]); datarec.filter := ["Presentation"]; ToPQ(datarec, [ filename ], [ " #filename" ]); Unbind(datarec.filter); end ); ############################################################################# ## #F PQ_PATH_CURRENT_DIRECTORY() . . . . . . . . . . essentially the UNIX pwd ## ## returns a string that is the path of the current directory. ## InstallGlobalFunction( PQ_PATH_CURRENT_DIRECTORY, function() local path, stream; path := ""; stream := OutputTextString(path, true); if 0 = Process( DirectoryCurrent(), Filename(DirectoriesSystemPrograms(), "pwd"), InputTextNone(), stream, [] ) then CloseStream(stream); return Chomp(path); fi; Error("could not determine the path of the current directory!?!\n"); end ); ############################################################################# ## #F PQ_CHK_PATH(, , ) . . . . . . . check/add to path ## ## checks is a non-empty string, if it doesn't begin with a `/' ## prepends a path for the current directory, and checks the result is the ## name of a readable (resp. writable) if is `"r"' (resp. if is ## `"w"') and if there is no error returns the result. ## InstallGlobalFunction( PQ_CHK_PATH, function( filename, rw, datarec ) if not IsString(filename) or filename = "" then Error( "argument must be a non-empty string\n" ); fi; if filename[1] <> '/' then # we need to do this as pq executes in ANUPQData.tmpdir filename := Concatenation(PQ_PATH_CURRENT_DIRECTORY(), "/", filename); fi; if rw = "r" then if IsReadableFile(filename) <> true then Error( "file with name is not readable\n" ); fi; else # rw = "w" if not IsBound(datarec.setupfile) then PrintTo(filename, ""); # This is what will generate the error # but it also ensures it's empty fi; if IsWritableFile(filename) <> true then Error( "file with name cannot be written to\n" ); fi; fi; return filename; end ); ############################################################################# ## #F PqSavePcPresentation( , ) . . user ver. of p-Q menu opt. 2 #F PqSavePcPresentation( ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## program to save the pc presentation previously computed for the quotient ## of the group of that process to the file with name . If the ## first character of the string is not `/', is ## assumed to be the path of a writable file relative to the directory in ## which {\GAP} was started. A saved file may be restored by ## `PqRestorePcPresentation' (see~"PqRestorePcPresentation"). ## ## *Note:* For those familiar with the `pq' binary, `PqSavePcPresentation' ## performs menu item 2 of the main $p$-Quotient menu. ## InstallGlobalFunction( PqSavePcPresentation, function( arg ) local datarec, filename; if 0 = Length(arg) or Length(arg) > 2 then Error( "expected 1 or 2 arguments\n" ); fi; datarec := CallFuncList(ANUPQDataRecord, arg{[1..Length(arg) - 1]}); filename := PQ_CHK_PATH( arg[Length(arg)], "w", datarec ); PQ_SAVE_PC_PRESENTATION( datarec, filename ); end ); ############################################################################# ## #F PQ_RESTORE_PC_PRESENTATION( , ) . . p-Q menu option 3 ## ## directs the `pq' binary to restore the pc presentation previously saved ## to using option 3 of the main $p$-Quotient menu. ## InstallGlobalFunction( PQ_RESTORE_PC_PRESENTATION, function( datarec, filename ) PQ_MENU(datarec, "pQ"); ToPQ(datarec, [ 3 ], [ " #restore pc presentation from file" ]); datarec.match := true; ToPQ(datarec, [ filename ], [ " #filename" ]); datarec.haspcp := true; PQ_SET_GRP_DATA(datarec); end ); ############################################################################# ## #F PqRestorePcPresentation( , ) . user ver. of p-Q menu opt. 3 #F PqRestorePcPresentation( ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## program to restore the pc presentation previously saved to , by ## `PqSavePcPresentation' (see~"PqSavePcPresentation"). If the first ## character of the string is not `/', is assumed to ## be the path of a readable file relative to the directory in which {\GAP} ## was started. ## ## *Note:* ## For those familiar with the `pq' binary, `PqRestorePcPresentation' ## performs menu item 3 of the main $p$-Quotient menu. ## InstallGlobalFunction( PqRestorePcPresentation, function( arg ) local datarec, filename; if 0 = Length(arg) or Length(arg) > 2 then Error( "expected 1 or 2 arguments\n" ); fi; datarec := CallFuncList(ANUPQDataRecord, arg{[1..Length(arg) - 1]}); filename := PQ_CHK_PATH( arg[Length(arg)], "r", datarec ); PQ_RESTORE_PC_PRESENTATION( datarec, filename ); end ); ############################################################################# ## #F PQ_DISPLAY_PRESENTATION( ) . . . . . . . . . any menu option 4 ## ## directs the `pq' binary to display the pc presentation of the group to ## the current class, using option 4 of the current menu. ## InstallGlobalFunction( PQ_DISPLAY_PRESENTATION, function( datarec ) if datarec.menu[ Length(datarec.menu) ] <> 'G' and VALUE_PQ_OPTION("OutputLevel", datarec) <> fail then PQ_SET_OUTPUT_LEVEL( datarec, datarec.OutputLevel ); fi; ToPQ(datarec, [ 4 ], [ " #display presentation" ]); end ); ############################################################################# ## #F PQ_GRP_EXISTS_CHK( ) . . check the `pq' binary knows about a gp ## ## checks that `.ngens' is set and non-empty (which can only happen ## if the `pq' binary has been fed a group) and generates an error if not. ## InstallGlobalFunction( PQ_GRP_EXISTS_CHK, function( datarec ) if not IsBound(datarec.ngens) or IsEmpty(datarec.ngens) then Error( "huh! No current group defined for this process!?\n" ); fi; end ); ############################################################################# ## #F PQ_SET_GRP_DATA( ) . save group data of current class of group ## ## If `.matchedline' is not set the `pq' binary is called to ## display the presentation; usually `.matchedline' is set when ## filtering `pq' output for lines starting with `"Group"' (the value set ## for `.match'), but no such lines occur when computing a pc ## presentation with the `OutputLevel' option set to 0, or when restoring a ## pc presentation, or when computing tails etc. From this line the fields ## `name', `class' and `forder' of the record are set to the name, ## class and factored order of that group, respectively. Also, ## `.ngens' is updated, and if it is afterwards incomplete and the ## call to `PQ_SET_GRP_DATA' was not initiated by `PQ_DATA' then `PQ_DATA' ## is called to ensure `.ngens' is complete. ## InstallGlobalFunction( PQ_SET_GRP_DATA, function( datarec ) local line, classpos; if IsBound(datarec.setupfile) then # A fudge ... some things we can only know by actually running it! Info(InfoANUPQ + InfoWarning,1, "Guess made of `class' and `ngens' fields"); Info(InfoANUPQ + InfoWarning,1, "... please check commands ok by running without `SetupFile' option"); Info(InfoANUPQ + InfoWarning,1, "and comparing with `ToPQ> ' commands observed at InfoANUPQ level 4"); datarec.class := datarec.ClassBound; datarec.ngens := [ 1 ]; return; fi; # Either datarec.matchedline is of one of the following forms: # Group completed. Lower exponent-

central class = , Order =

^ # Group: [grp] to lower exponent-

central class has order

^ if not IsBound(datarec.matchedline) then PushOptions(rec(nonuser := true)); ToPQ(datarec, [ 4 ], [ " #display presentation" ]); PopOptions(); fi; line := SplitString(datarec.matchedline, "", ":,. ^\n"); if line[2] = "completed" then classpos := Position(line, "class") + 2; #if not IsBound(datarec.name) then #do we need to bother? # datarec.name := "[grp]"; #fi; else # Only the ``incomplete'' form of datarec.matchedline gives the name datarec.name := line[2]; datarec.gpnum := JoinStringsWithSeparator( line{[3 .. Position(line, "to") - 1]}, " " ); classpos := Position(line, "class") + 1; fi; datarec.class := Int( line[classpos] ); datarec.forder := List( line{[classpos + 3, classpos + 4]}, Int); PQ_UNBIND(datarec, ["match", "matchedline"]); # First see if we can update datarec.ngens cheaply if not IsBound(datarec.ngens) then datarec.ngens := []; fi; if datarec.class > 0 then datarec.ngens[ datarec.class ] := datarec.forder[2]; #The `pq' binary reduces the class by 1 #if the no. of gen'rs doesn't increase Unbind( datarec.ngens[ datarec.class + 1 ] ); fi; if not IsBound(datarec.inPQ_DATA) and not IsDenseList(datarec.ngens) then # It wasn't possible to update datarec.ngens cheaply PQ_DATA( datarec ); fi; end ); ############################################################################# ## #F PQ_DATA( ) . . . . gets class/gen'r data from (A)p-Q menu opt 4 ## ## ensures that the menu is a $p$-Quotient menu and that the output level is ## 3 and using option 4 of the now current menu extracts the number of ## generators of each class currently known to the `pq' binary. (The order ## of each $p$-class quotient is taken as $p^n$ where $n$ is the number of ## generators for the class; this may be an over-estimate if tails have been ## added and the necessary consistency checks, relation collections, ## exponent law checks and redundant generator eliminations have not been ## done for a class.) All output that would have appeared at `InfoANUPQ' ## levels 1 or 2 if user-initiated is `Info'-ed at `InfoANUPQ' level 3. The ## menu and output level are reset to their original values (if changed) on ## leaving. ## InstallGlobalFunction( PQ_DATA, function( datarec ) local menu, lev, ngen, i, line, class; if not( IsBound(datarec.haspcp) and datarec.haspcp ) then Error( "a pc presentation for the group of the process ", "has not yet been defined\n" ); fi; PushOptions(rec(nonuser := true)); datarec.inPQ_DATA := true; if datarec.menu[ Length(datarec.menu) ] <> 'Q' then menu := datarec.menu; PQ_MENU(datarec, "pQ"); fi; if not IsBound(datarec.OutputLevel) then lev := 0; PQ_SET_OUTPUT_LEVEL( datarec, 3 ); elif datarec.OutputLevel < 3 then lev := datarec.OutputLevel; PQ_SET_OUTPUT_LEVEL( datarec, 3 ); fi; datarec.matchlist := ["Group", "Class", " is defined on "]; datarec.matchedlines := []; ToPQ(datarec, [ 4 ], [ " #display presentation" ]); datarec.matchedline := datarec.matchedlines[1]; PQ_SET_GRP_DATA(datarec); for i in [2 .. Length(datarec.matchedlines)] do line := SplitString(datarec.matchedlines[i], "", " \n"); if line[1] = "Class" then class := Int( line[2] ); if class > 1 then datarec.ngens[class - 1] := Int(ngen); if class = datarec.class then break; fi; fi; else ngen := line[1]; fi; od; if IsBound(menu) then PQ_MENU(datarec, menu); fi; if IsBound(lev) then PQ_SET_OUTPUT_LEVEL( datarec, lev ); fi; PQ_UNBIND( datarec, ["matchlist", "matchedlines", "inPQ_DATA"] ); PopOptions(); end ); ############################################################################# ## #F PQ_DATA_CHK( ) . . . call PQ_DATA if class/gen'r data out-of-date ## ## determines the data record , calls `PQ_DATA' if necessary and ## returns . ## InstallGlobalFunction( PQ_DATA_CHK, function( args ) local datarec; datarec := CallFuncList(ANUPQDataRecord, args); if not IsBound(datarec.ngens) or IsEmpty(datarec.ngens) or not IsDenseList(datarec.ngens) then PQ_DATA( datarec ); fi; return datarec; end ); ############################################################################# ## #F PqFactoredOrder( ) . the `pq' binary's current group's factored order #F PqFactoredOrder() ## ## for the th or default interactive {\ANUPQ} process, return an estimate ## of the factored order of the lower exponent $p$-class quotient of the ## group currently determined by the process as a list `[

, ]'. ## ## *Note:* The order of each $p$-class quotient is taken as $p^n$ where $n$ ## is the number of generators for the class; this may be an over-estimate ## if tails have been added and the necessary consistency checks, relation ## collections, exponent law checks and redundant generator eliminations ## have not yet been done for a class. ## InstallGlobalFunction( PqFactoredOrder, function( arg ) return PQ_DATA_CHK(arg).forder; end ); ############################################################################# ## #F PqOrder( ) . . . . the order of the current group of the `pq' binary #F PqOrder() ## ## for the th or default interactive {\ANUPQ} process, return an estimate ## of the order of the lower exponent $p$-class quotient of the group ## currently determined by the process. ## ## *Note:* The order of each $p$-class quotient is taken as $p^n$ where $n$ ## is the number of generators for the class; this may be an over-estimate ## if tails have been added and the necessary consistency checks, relation ## collections, exponent law checks and redundant generator eliminations ## have not been done for a class. ## InstallGlobalFunction( PqOrder, function( arg ) local forder; forder := CallFuncList( PqFactoredOrder, arg ); return forder[1]^forder[2]; end ); ############################################################################# ## #F PqPClass( ) . . . the p class of the current group of the `pq' binary #F PqPClass() ## ## for the th or default interactive {\ANUPQ} process, return the lower ## exponent $p$-class of the quotient group currently determined by the ## process. ## InstallGlobalFunction( PqPClass, function( arg ) return PQ_DATA_CHK(arg).class; end ); ############################################################################# ## #F PqNrPcGenerators( ) . number of pc gen'rs of `pq' binary's current gp #F PqNrPcGenerators() ## ## for the th or default interactive {\ANUPQ} process, return the number ## of pc generators of the lower exponent $p$-class quotient of the group ## currently determined by the process. ## InstallGlobalFunction( PqNrPcGenerators, function( arg ) return PQ_DATA_CHK(arg).forder[2]; end ); ############################################################################# ## #F PqWeight( , ) . . . . . . . . . . . . . . . weight of a generator #F PqWeight( ) ## ## for the th or default interactive {\ANUPQ} process, return the weight ## of the th pc generator of the lower exponent $p$-class quotient of the ## group currently determined by the process, or `fail' if there is no such ## numbered pc generator. ## InstallGlobalFunction( PqWeight, function( arg ) local ngens, i, j; if not Length(arg) in [1, 2] then Error( "expected 1 or 2 arguments\n" ); fi; j := arg[ Length(arg) ]; if not IsPosInt(j) then Error( "argument should be a positive integer\n" ); fi; Unbind( arg[ Length(arg) ] ); ngens := PQ_DATA_CHK(arg).ngens; return First([1 .. Length(ngens)], i -> ngens[i] >= j); end ); ############################################################################# ## #F PqCurrentGroup( ) . extracts current p-quotient or p-cover as a pc gp #F PqCurrentGroup() ## ## for the th or default interactive {\ANUPQ} process, return the lower ## exponent $p$-class quotient of the group or $p$-covering group currently ## determined by the process as a {\GAP} pc group. ## InstallGlobalFunction( PqCurrentGroup, function( arg ) local datarec, out; datarec := PQ_DATA_CHK(arg); datarec.outfname := ANUPQData.outfile; PushOptions( rec(nonuser := true) ); PQ_WRITE_PC_PRESENTATION(datarec, datarec.outfname); PopOptions(); if IsBound(datarec.pcoverclass) and datarec.pcoverclass = datarec.class then out := "pCover"; else out := "pQuotient"; fi; PQ_GROUP_FROM_PCP( datarec, out ); return datarec.(out); end ); ############################################################################# ## #F PqDisplayPcPresentation( ) . . . . user version of any menu option 4 #F PqDisplayPcPresentation() ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to display the pc presentation of the lower exponent $p$-class ## quotient of the group currently determined by the process. ## ## Except if the last command communicating with the `pq' binary was a ## $p$-group generation command (for which there is only a verbose output ## level), to set the amount of information this command displays you may ## wish to call `PqSetOutputLevel' first (see~"PqSetOutputLevel"), or ## equivalently pass the option `OutputLevel' (see~"option OutputLevel"). ## ## *Note:* ## For those familiar with the `pq' binary, `PqDisplayPcPresentation' ## performs menu item 4 of the current menu of the `pq' binary. ## InstallGlobalFunction( PqDisplayPcPresentation, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_GRP_EXISTS_CHK( datarec ); PQ_DISPLAY_PRESENTATION( datarec ); end ); ############################################################################# ## #F PQ_SET_OUTPUT_LEVEL(, ) . . . . p-Q/SP/A p-Q menu option 5 ## ## inputs data to the `pq' binary to set the print level to in the ## current menu or the ``basic'' $p$-Quotient menu if the current menu is a ## $p$-Group generation menu. ## InstallGlobalFunction( PQ_SET_OUTPUT_LEVEL, function( datarec, lev ) if datarec.menu[ Length(datarec.menu) ] = 'G' then PQ_MENU(datarec, "pQ"); fi; ToPQ(datarec, [ 5 ], [ " #set output level" ]); ToPQ(datarec, [ lev ], [ " #output level" ]); datarec.OutputLevel := lev; end ); ############################################################################# ## #F PqSetOutputLevel( , ) . user version of p-Q/SP/A p-Q menu opt 5 #F PqSetOutputLevel( ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to set the output level of the `pq' binary to . ## ## *Note:* For those familiar with the `pq' binary, `PqSetOutputLevel' ## performs menu item 5 of the main (or advanced) $p$-Quotient menu, or the ## Standard Presentation menu. ## InstallGlobalFunction( PqSetOutputLevel, function( arg ) local datarec, lev; if not(Length(arg) in [1, 2]) then Error( "1 or 2 arguments expected\n"); fi; lev := arg[Length(arg)]; if not(lev in [0..3]) then Error( "argument should be an integer in [0 .. 3]\n" ); fi; datarec := CallFuncList(ANUPQDataRecord, arg{[1..Length(arg) - 1]}); PQ_SET_OUTPUT_LEVEL( datarec, lev); end ); ############################################################################# ## #F PQ_NEXT_CLASS( ) . . . . . . . . . . . . . . p-Q menu option 6 ## ## directs the `pq' binary to calculate the next class of `.group', ## using option 6 of the main $p$-Quotient menu. ## #T Another possibility for checking for whether a queue factor is needed #T is to test for `.hasAuts'. ## InstallGlobalFunction( PQ_NEXT_CLASS, function( datarec ) local line; PQ_MENU(datarec, "pQ"); PQ_UNBIND(datarec, ["pQuotient", "pQepi", "pCover"]); if VALUE_PQ_OPTION("Identities", [], datarec) <> [] then if datarec.class >= 1 then datarec.prevngens := datarec.ngens[ datarec.class ]; fi; PQ_P_COVER(datarec); PQ_FINISH_NEXT_CLASS(datarec); else datarec.match := true; ToPQ(datarec, [ 6 ], [ " #calculate next class" ]); if IsMatchingSublist(datarec.line, "Input queue factor:") then ToPQ(datarec, [ VALUE_PQ_OPTION("QueueFactor", 15) ], [ " #queue factor"]); fi; PQ_SET_GRP_DATA(datarec); fi; end ); ############################################################################# ## #F PqNextClass( [:

-cover that ## brings the pcp back to a next class, except that it also slips in the ## evaluation of the identities of the `Identities' option. ## InstallGlobalFunction( PQ_FINISH_NEXT_CLASS, function( datarec ) PushOptions( rec(nonuser := true) ); PQ_COLLECT_DEFINING_RELATIONS( datarec ); PQ_DO_EXPONENT_CHECKS( datarec, [1, datarec.class] ); PQ_EVALUATE_IDENTITIES( datarec ); PopOptions(); end ); ############################################################################# ## #F PQ_COLLECT( , ) . . . . . . . . . . . A p-Q menu option 1 ## ## instructs the `pq' binary to do a collection on a string ## representing a word in the current pc generators, e.g. `"x3*x2*x1"', ## using option 1 of the interactive $p$-Quotient menu. ## InstallGlobalFunction( PQ_COLLECT, function( datarec, word ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 1 ], [ " #do individual collection" ]); datarec.match := "The result of collection is"; ToPQ(datarec, [ word, ";"], [ " #word to be collected" ]); return PQ_WORD(datarec); end ); ############################################################################# ## #F PQ_CHECK_WORD( , , ) . . check word or list ## ## checks that is a valid word in the current pc generators ## ( is the number of current pc generators) or a valid list of ## generator number-exponent pairs that will generate such a word, and ## either emits an error or returns the valid word. ## InstallGlobalFunction( PQ_CHECK_WORD, function( datarec, wordOrList, ngens ) local parts, gens; if not IsList(wordOrList) or not IsString(wordOrList) and not ForAll(wordOrList, pair -> IsList(pair) and 2 = Length(pair) and ForAll(pair, IsInt) ) then Error( "argument should be a string e.g. \"x3*x2^2*x1\",\n", "or a list of gen'r no.-exponent pairs from which such a word ", "may be generated\n" ); fi; if IsString(wordOrList) then #check word makes sense PqParseWord(ngens, wordOrList); elif IsList(wordOrList) then if not ForAll(wordOrList, pair -> IsPosInt(pair[1]) and pair[1] <= ngens) then Error( "generator numbers in argument must be in the ", "range: ", "[1 .. ", ngens, "]\n" ); fi; wordOrList := JoinStringsWithSeparator( List( wordOrList, pair -> Concatenation( "x", String(pair[1]), "^", String(pair[2]) ) ), "*" ); fi; if IsEmpty(wordOrList) then wordOrList := "x1^0"; fi; return wordOrList; end ); ############################################################################# ## #F PQ_WORD( ) . . . . parse pq output for a word in pc generators ## ## parses `.matchedline' for a word in the current pc generators ## and returns it as a list of gen'r no.-exponent pairs; `.match' ## must have previously been set. ## InstallGlobalFunction( PQ_WORD, function( datarec ) local word; word := SplitString( datarec.matchedline{[Length(datarec.match) + 1 .. Length(datarec.matchedline)]}, "", " \n" ); if word = [ "IDENTITY" ] then word := []; else word := List( word, function(syl) syl := List( SplitString(syl, "", ".^"), Int ); if 1 = Length(syl) then Add(syl, 1); fi; return syl; end ); fi; PQ_UNBIND(datarec, ["match", "matchedline"]); return word; end ); ############################################################################# ## #F PQ_CHK_COLLECT_COMMAND_ARGS( ) . . check args for a collect cmd ok ## ## returns a list of valid arguments for a low-level collect command or ## generates an error. ## InstallGlobalFunction( PQ_CHK_COLLECT_COMMAND_ARGS, function( args ) local datarec, wordOrList, ngens; if IsEmpty(args) or 2 < Length(args) then Error( "1 or 2 arguments expected\n"); fi; wordOrList := args[Length(args)]; datarec := CallFuncList(ANUPQDataRecord, args{[1..Length(args) - 1]}); ngens := datarec.ngens[ Length(datarec.ngens) ]; wordOrList := PQ_CHECK_WORD(datarec, wordOrList, ngens); return [datarec, wordOrList]; end ); ############################################################################# ## #F PqCollect( , ) . . . . . . user version of A p-Q menu option 1 #F PqCollect( ) ## ## for the th or default interactive {\ANUPQ} process, instruct the `pq' ## program to do a collection on , a word in the current pc generators ## (the form of required is described below). `PqCollect' returns the ## resulting word of the collection as a list of generator number, exponent ## pairs (the same form as the second allowed input form of ; see ## below). ## ## The argument may be input in either of the following ways: ## ## \beginlist%ordered ## ## \item{1.} ## may be a string, where the th pc generator is represented by ## `x', e.g.~`"x3*x2^2*x1"'. This way is quite versatile as parentheses ## and left-normed commutators -- using square brackets, in the same way as ## `PqGAPRelators' (see~"PqGAPRelators") -- are permitted; is checked ## for correct syntax via `PqParseWord' (see~"PqParseWord"). ## ## \item{2.} ## Otherwise, must be a list of generator number, exponent pairs of ## integers, i.e.~ each pair represents a ``syllable'' so that `[ [3, 1], ## [2, 2], [1, 1] ]' represents the same word as that of the example given ## for the first allowed form of . ## ## \endlist ## ## *Note:* For those familiar with the `pq' program, `PqCollect' performs ## menu item 1 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqCollect, function( arg ) return CallFuncList( PQ_COLLECT, PQ_CHK_COLLECT_COMMAND_ARGS(arg) ); end ); ############################################################################# ## #F PQ_SOLVE_EQUATION( , , ) . . . . . . A p-Q menu option 2 ## ## inputs data to the `pq' binary for option 2 of the Advanced $p$-Quotient ## menu, to solve $ * = $ for . ## InstallGlobalFunction( PQ_SOLVE_EQUATION, function( datarec, a, b ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 2 ], [ " #solve equation" ]); ToPQ(datarec, [ a, ";" ], [ " #word a" ]); ToPQ(datarec, [ b, ";" ], [ " #word b" ]); end ); ############################################################################# ## #F PqSolveEquation( , , ) . . user version of A p-Q menu option 2 #F PqSolveEquation( , ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to solve $ * = $ for . ## ## *Note:* ## For those familiar with the `pq' binary, `PqSolveEquation' performs ## menu item 2 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqSolveEquation, function( arg ) local len, datarec; len := Length(arg); if not(len in [2,3]) then Error("expected 2 or 3 arguments\n"); fi; #@need to add argument checking for a and b@ datarec := CallFuncList(ANUPQDataRecord, arg{[1 .. len - 2]}); PQ_SOLVE_EQUATION( datarec, arg[len - 1], arg[len] ); end ); ############################################################################# ## #F PQ_COMMUTATOR( , , , ) . A p-Q menu opts 3/24 ## ## inputs data to the `pq' binary for option 3 or 24 of the Advanced ## $p$-Quotient menu, to compute the left normed commutator of the list ## of words in the generators raised to the integer power , ## where is `"3 #commutator"' for option 3 or `"24 #commutator of ## defining genrs"' for option 24. ## InstallGlobalFunction( PQ_COMMUTATOR, function( datarec, words, pow, item ) local i; PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, item[1], item[2]); ToPQ(datarec, [ Length(words) ], [ " #no. of components" ]); for i in [1..Length(words)] do ToPQ(datarec, [ words[i], ";" ], [ " #word ", i ]); od; datarec.match := "The commutator is"; ToPQ(datarec, [ pow ], [ " #power" ]); return PQ_WORD(datarec); end ); ############################################################################# ## #F PQ_COMMUTATOR_CHK_ARGS( ) . . . . check args for commutator cmd ok ## ## returns a list of valid arguments for a low-level commutator command or ## generates an error. ## InstallGlobalFunction( PQ_COMMUTATOR_CHK_ARGS, function( args ) local len, words, pow, item, datarec, ngens; len := Length(args); if not(len in [3, 4]) then Error("expected 3 or 4 arguments\n"); fi; words := args[len - 2]; pow := args[len - 1]; item := args[len]; if not IsPosInt(pow) then Error( "argument must be a positive integer\n" ); fi; datarec := CallFuncList(ANUPQDataRecord, args{[1 .. len - 3]}); if item[1][1] = 3 then ngens := datarec.ngens[ Length(datarec.ngens) ]; else ngens := datarec.ngens[ 1 ]; fi; words := List( words, w -> PQ_CHECK_WORD(datarec, w, ngens) ); return [datarec, words, pow, item]; end ); ############################################################################# ## #F PqCommutator( , , ) . user version of A p-Q menu option 3 #F PqCommutator( , ) ## ## for the th or default interactive {\ANUPQ} process, compute a ## user-defined commutator in the pc generators of the class 1 quotient, ## i.e.~the pc generators that correspond to the original fp or pc group of ## the process, and return the result as a list of generator number, ## exponent pairs. The form required for each word of is the same as ## that required for the argument of `PqCollect' (see~"PqCollect"). ## The form of the output word is also the same as for `PqCollect' ## (see~"PqCollect"). ## ## *Notes* ## ## It is illegal for any word of to contain pc generators of weight ## larger than 1. Except for this distinction, ## `PqCommutatorDefiningGenerators' works just like `PqCommutator' ## (see~"PqCommutator"). ## ## For those familiar with the `pq' program, `PqCommutatorDefiningGenerators' ## performs menu item 24 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqCommutator, function( arg ) return CallFuncList( PQ_COMMUTATOR, PQ_COMMUTATOR_CHK_ARGS( Concatenation( arg, [[[3], [" #commutator"]]] ) ) ); end ); ############################################################################# ## #F PQ_SETUP_TABLES_FOR_NEXT_CLASS( ) . . . . . A p-Q menu option 6 ## ## inputs data to the `pq' binary for option 6 of the Advanced $p$-Quotient ## menu to set up tables for next class. ## InstallGlobalFunction( PQ_SETUP_TABLES_FOR_NEXT_CLASS, function( datarec ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 6 ], [ " #set up tables for next class" ]); datarec.match := true; PQ_SET_GRP_DATA(datarec); #Just to be sure it's up-to-date datarec.setupclass := datarec.class; end ); ############################################################################# ## #F PqSetupTablesForNextClass( ) . . user version of A p-Q menu option 6 #F PqSetupTablesForNextClass() ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to set up tables for the next class. As as side-effect, ## after `PqSetupTablesForNextClass()' the value returned by ## `PqPClass()' will be one more than it was previously. ## ## *Note:* ## For those familiar with the `pq' binary, `PqSetupTablesForNextClass' ## performs menu item 6 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqSetupTablesForNextClass, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_SETUP_TABLES_FOR_NEXT_CLASS( datarec ); end ); ############################################################################# ## #F PQ_INSERT_TAILS( , , ) . . A p-Q menu option 7 ## ## inputs data to the `pq' binary for option 7 of the Advanced $p$-Quotient ## menu, to add and/or compute tails. ## InstallGlobalFunction( PQ_INSERT_TAILS, function( datarec, weight, which ) local intwhich; PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu intwhich := Position( [ "compute and add", "add", "compute" ], which ) - 1; ToPQ(datarec, [ 7 ], [ " #", which, " tails" ]); ToPQ(datarec, [ weight ], [ " #weight of tails" ]); ToPQ(datarec, [ intwhich ], [ " #", which ]); if intwhich <= 1 then datarec.match := true; PQ_SET_GRP_DATA(datarec); fi; end ); ############################################################################# ## #F PQ_CHK_TAILS_ARGS( ) . . . . . check args for insert tails cmd ok ## InstallGlobalFunction( PQ_CHK_TAILS_ARGS, function( args ) local weight, datarec; if IsEmpty(args) or 2 < Length(args) then Error( "1 or 2 arguments expected\n"); fi; weight := args[Length(args)]; datarec := CallFuncList(ANUPQDataRecord, args{[1 .. Length(args) - 1]}); if not IsBound(datarec.setupclass) or datarec.class <> datarec.setupclass then Error( "tables to start next class have not been set up.\n", "Please call `PqSetupTablesForNextClass' first\n" ); fi; if not(weight = 0 or weight in [2 .. datarec.class]) then Error( "argument should be an integer in [0] U [2 .. ],\n", "where is the current class (", datarec.class, ")\n" ); fi; return datarec; end ); ############################################################################# ## #F PqAddTails( , ) . . . . adds tails using A p-Q menu option 7 #F PqAddTails( ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to add tails of weight if is in the integer ## range `[2 .. PqPClass()]' (assuming is the number of the process) ## or for all weights if ` = 0'. See `PqTails' ("PqTails") for more ## details. ## ## *Note:* ## For those familiar with the `pq' binary, `PqAddTails' uses menu item 7 of ## the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqAddTails, function( arg ) PQ_INSERT_TAILS( PQ_CHK_TAILS_ARGS(arg), arg[Length(arg)], "add" ); end ); ############################################################################# ## #F PqComputeTails( , ) . . computes tails using A p-Q menu opt 7 #F PqComputeTails( ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to compute tails of weight if is in the integer ## range `[2 .. PqPClass()]' (assuming is the number of the process) ## or for all weights if ` = 0'. See `PqTails' ("PqTails") for more ## details. ## ## *Note:* ## For those familiar with the `pq' binary, `PqComputeTails' uses menu item ## 7 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqComputeTails, function( arg ) PQ_INSERT_TAILS( PQ_CHK_TAILS_ARGS(arg), arg[Length(arg)], "compute" ); end ); ############################################################################# ## #F PqTails( , ) . computes and adds tails using A p-Q menu opt 7 #F PqTails( ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to compute and add tails of weight if is in the ## integer range `[2 .. PqPClass()]' (assuming is the number of the ## process) or for all weights if ` = 0'. ## ## If is non-zero, then tails that introduce new generators for ## only weight are computed and added, and in this case and if ## ` \< PqPClass()', it is assumed that the tails that introduce ## new generators for each weight from `PqPClass()' downto weight ## ` + 1' have already been added. You may wish to call ## `PqSetMetabelian' (see~"PqSetMetabelian") prior to calling `PqTails'. ## ## *Notes* ## ## For its use in the context of finding the next class see "PqNextClass"; ## in particular, a call to `PqSetupTablesForNextClass' ## (see~"PqSetupTablesForNextClass") needs to have been made prior to ## calling `PqTails'. ## ## The single command: `PqTails(, );' is equivalent to ## ## \){\kernttindent}PqComputeTails(, ); ## \){\kernttindent}PqAddTails(, ); ## ## For those familiar with the `pq' binary, `PqTails' uses menu item 7 of ## the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqTails, function( arg ) PQ_INSERT_TAILS(PQ_CHK_TAILS_ARGS(arg), arg[Length(arg)], "compute and add"); end ); ############################################################################# ## #F PQ_DO_CONSISTENCY_CHECKS(, , ) . A p-Q menu opt 8 ## ## inputs data to the `pq' binary for option 8 of the Advanced $p$-Quotient ## menu, to do consistency checks. ## InstallGlobalFunction( PQ_DO_CONSISTENCY_CHECKS, function( datarec, weight, type ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 8 ], [ " #check consistency" ]); ToPQ(datarec, [ weight ], [ " #weight to be checked" ]); ToPQ(datarec, [ type ], [ " #type" ]); end ); ############################################################################# ## #F PqDoConsistencyChecks(,,) . user ver of A p-Q menu opt 8 #F PqDoConsistencyChecks( , ) ## ## for the th or default interactive {\ANUPQ} process, do consistency ## checks for weight if is in the integer range `[3 .. ## PqPClass()]' (assuming is the number of the process) or for all ## weights if ` = 0', and for type if is in the range ## `[1, 2, 3]' (see below) or for all types if ` = 0'. (For its use in ## the context of finding the next class see "PqNextClass".) ## ## The *type* of a consistency check is defined as follows. ## `PqDoConsistencyChecks(, , )' for in `[3 .. ## PqPClass()]' and the given value of invokes the following ## `PqJacobi' checks (see~"PqDoConsistencyCheck"): ## ## \beginitems ## ## ` = 1':& ## `PqJacobi(, , , )' checks for pc generators of index ## satisfying `2 * PqWeight(, ) + 1 = '. ## ## ` = 2':& ## `PqJacobi(, , , )' checks for pc generators of indices , ## satisfying ` > ' and `PqWeight(, ) + PqWeight(, ) + ## 1 = '. ## ## ` = 3':& ## `PqJacobi(, , , )' checks for pc generators of indices , ## , satisfying ` > > ' and the sum of the weights of these ## generators equals . ## ## \enditems ## ## *Notes* ## ## `PqWeight(, )' returns the weight of the th pc generator, for ## process (see~"PqWeight"). ## ## It is assumed that tails for the given weight (or weights) have already ## been added (see~"PqTails"). ## ## For those familiar with the `pq' binary, `PqDoConsistencyChecks' performs ## menu item 8 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqDoConsistencyChecks, function( arg ) local len, datarec, weight, type; len := Length(arg); if not(len in [2, 3]) then Error("expected 2 or 3 arguments\n"); fi; weight := arg[len - 1]; type := arg[len]; arg := arg{[1 .. len - 2]}; datarec := CallFuncList(ANUPQDataRecord, arg); if not IsBound(datarec.setupclass) or datarec.class <> datarec.setupclass then Error( "tables to start next class have not been set up.\n", "Please call `PqSetupTablesForNextClass' first\n" ); fi; if not(weight = 0 or weight in [3 .. datarec.class]) then Error( "argument should be an integer in [0] U [3 .. ],\n", "where is the current class (", datarec.class, ")\n" ); fi; if not(type in [0..3]) then Error( "argument should be in [0,1,2,3]\n" ); fi; PQ_DO_CONSISTENCY_CHECKS( datarec, weight, type ); end ); ############################################################################# ## #F PQ_COLLECT_DEFINING_RELATIONS( ) . . . . . A p-Q menu option 9 ## ## inputs data to the `pq' binary for option 9 of the Advanced $p$-Quotient ## menu, to collect defining relations. ## InstallGlobalFunction( PQ_COLLECT_DEFINING_RELATIONS, function( datarec ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 9 ], [ " #collect defining relations" ]); end ); ############################################################################# ## #F PqCollectDefiningRelations( ) . . user version of A p-Q menu option 9 #F PqCollectDefiningRelations() ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to collect the images of the defining relations of the original fp ## group of the process, with respect to the current pc presentation, in the ## context of finding the next class (see~"PqNextClass"). If the tails ## operation is not complete then the relations may be evaluated ## incorrectly. ## ## *Note:* ## For those familiar with the `pq' binary, `PqCollectDefiningRelations' ## performs menu item 9 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqCollectDefiningRelations, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_COLLECT_DEFINING_RELATIONS( datarec ); end ); ############################################################################# ## #F PQ_DO_EXPONENT_CHECKS( , ) . . . . . A p-Q menu option 10 ## ## inputs data to the `pq' binary to do exponent checks for weights between ## inclusive, using option 10 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PQ_DO_EXPONENT_CHECKS, function( datarec, bnds ) #@does default only at the moment@ PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu datarec.match := "Group is complete"; ToPQ(datarec, [ 10 ], [ " #do exponent checks" ]); if IsBound(datarec.matchedline) and IsMatchingSublist(datarec.matchedline, "Group is complete") then PQ_UNBIND(datarec, ["match", "matchedline"]); datarec.complete := true; return; elif IsMatchingSublist(datarec.line, "Input exponent law") then ToPQ(datarec, [ VALUE_PQ_OPTION("Exponent", 0, datarec) ], [ " #exponent" ]); fi; ToPQ(datarec, [ bnds[1] ], [ " #start weight" ]); ToPQ(datarec, [ bnds[2] ], [ " #end weight" ]); ToPQ(datarec, [ 1 ], [ " #do default check" ]); Unbind(datarec.match); end ); ############################################################################# ## #F PqDoExponentChecks([: Bounds := ]) . user ver A p-Q menu opt. 10 #F PqDoExponentChecks([: Bounds := ]) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to do exponent checks for weights (inclusively) between the bounds ## of `Bounds' or for all weights if `Bounds' is not given. The value ## of `Bounds' (assuming the interactive process is numbered ) should be ## a list of two integers , satisfying $1 \le \le ## \le `PqPClass()'$ (see~"PqPClass"). ## ## *Note:* ## For those familiar with the `pq' binary, `PqDoExponentChecks' performs ## menu item 10 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqDoExponentChecks, function( arg ) local datarec; PQ_OTHER_OPTS_CHK("PqDoExponentChecks", true); datarec := PQ_DATA_CHK(arg); PQ_DO_EXPONENT_CHECKS( datarec, PQ_BOUNDS(datarec, datarec.class) ); end ); ############################################################################# ## #F PQ_ELIMINATE_REDUNDANT_GENERATORS( ) . . . A p-Q menu option 11 ## ## inputs data to the `pq' binary for option 11 of the Advanced $p$-Quotient ## menu, to eliminate redundant generators. ## InstallGlobalFunction( PQ_ELIMINATE_REDUNDANT_GENERATORS, function( datarec ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 11 ], [ " #eliminate redundant generators" ]); datarec.match := true; PQ_SET_GRP_DATA(datarec); end ); ############################################################################# ## #F PqEliminateRedundantGenerators( ) . user ver of A p-Q menu option 11 #F PqEliminateRedundantGenerators() ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to eliminate redundant generators of the current $p$-quotient. ## ## *Note:* ## For those familiar with the `pq' binary, `PqEliminateRedundantGenerators' ## performs menu item 11 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqEliminateRedundantGenerators, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_ELIMINATE_REDUNDANT_GENERATORS( datarec ); end ); ############################################################################# ## #F PQ_REVERT_TO_PREVIOUS_CLASS( ) . . . . . . A p-Q menu option 12 ## ## inputs data to the `pq' binary for option 12 of the Advanced $p$-Quotient ## menu, to abandon the current class and revert to the previous class. ## InstallGlobalFunction( PQ_REVERT_TO_PREVIOUS_CLASS, function( datarec ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 12 ], [ " #revert to previous class" ]); Unbind( datarec.ngens[ datarec.class ] ); datarec.match := true; PQ_SET_GRP_DATA(datarec); #Just to be sure it's up-to-date datarec.setupclass := datarec.class - 1; end ); ############################################################################# ## #F PqRevertToPreviousClass( ) . . . user version of A p-Q menu option 12 #F PqRevertToPreviousClass() ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to abandon the current class and revert to the previous class. ## ## *Note:* ## For those familiar with the `pq' binary, `PqRevertToPreviousClass' ## performs menu item 12 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqRevertToPreviousClass, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_REVERT_TO_PREVIOUS_CLASS( datarec ); end ); ############################################################################# ## #F PQ_SET_MAXIMAL_OCCURRENCES( , ) . . A p-Q menu opt. 13 ## ## inputs data to the `pq' binary, to set the maximal occurrences of ## generators of weight 1 in generator definitions, using option 13 of the ## Advanced $p$-Quotient menu. ## InstallGlobalFunction( PQ_SET_MAXIMAL_OCCURRENCES, function( datarec, noccur ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 13 ], [ " #set maximal occurrences" ]); ToPQ(datarec, [ JoinStringsWithSeparator( List(noccur, String), " " ) ], [ " #max occurrences of weight 1 gen'rs"]); end ); ############################################################################# ## #F PqSetMaximalOccurrences( , ) . user ver of A p-Q menu opt. 13 #F PqSetMaximalOccurrences( ) ## ## for the th or default interactive {\ANUPQ} process, directs the `pq' ## binary to set maximal occurrences of the weight 1 generators in the ## definitions of pcp generators of the group of the process; must ## be a list of non-negative integers of length the number of weight 1 ## generators (i.e.~the rank of the class 1 $p$-quotient of the group of the ## process). An entry of `0' for a particular generator indicates that there ## is no limit on the number of occurrences for the generator. ## ## *Note:* ## For those familiar with the `pq' binary, `PqSetMaximalOccurrences' ## performs menu item 13 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqSetMaximalOccurrences, function( arg ) local len, noccur, datarec; len := Length(arg); if not(len in [1, 2]) then Error( "expected 1 or 2 arguments\n"); fi; noccur := arg[len]; if not IsList(noccur) or not ForAll(noccur, x -> IsInt(x) and x >= 0) then Error( " argument must be a list of non-negative integers\n" ); fi; arg := arg{[1 .. len - 1]}; datarec := PQ_DATA_CHK(arg); if Length(noccur) <> datarec.ngens[1] then Error( " argument must be a list of length equal to\n", "the no. of generators of weight 1 (", datarec.ngens[1], ")\n" ); fi; PQ_SET_MAXIMAL_OCCURRENCES( datarec, noccur ); end ); ############################################################################# ## #F PQ_SET_METABELIAN( ) . . . . . . . . . . . A p-Q menu option 14 ## ## inputs data to the `pq' binary for option 14 of the Advanced $p$-Quotient ## menu, to set the metabelian flag. ## InstallGlobalFunction( PQ_SET_METABELIAN, function( datarec ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 14 ], [ " #set metabelian" ]); end ); ############################################################################# ## #F PqSetMetabelian( ) . . . . . . . user version of A p-Q menu option 14 #F PqSetMetabelian() ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to enforce metabelian-ness. ## ## *Note:* ## For those familiar with the `pq' binary, `PqSetMetabelian' performs ## menu item 14 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqSetMetabelian, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_SET_METABELIAN( datarec ); end ); ############################################################################# ## #F PQ_DO_CONSISTENCY_CHECK( , , , ) . A p-Q menu option 15 ## ## inputs data to the `pq' binary for option 15 of the Advanced $p$-Quotient ## menu, to do a consistency check. ## InstallGlobalFunction( PQ_DO_CONSISTENCY_CHECK, function( datarec, c, b, a ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 15 ], [ " #do individual consistency check" ]); ToPQ(datarec, [ c, " ", b, " ", a ], [ " #generator indices"]); end ); ############################################################################# ## #F PqDoConsistencyCheck(, , , ) . user ver of A p-Q menu opt 15 #F PqDoConsistencyCheck( , , ) #F PqJacobi(, , , ) #F PqJacobi( , , ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to do the Jacobi consistency check for the pc generators with ## indices , , which should be non-increasing positive integers, ## i.e.~$ \ge \ge $. For further explanation, see ## `PqDoConsistencyChecks' ("PqDoConsistencyChecks"). ## ## *Note:* ## For those familiar with the `pq' binary, `PqDoConsistencyCheck' and ## `PqJacobi' perform menu item 15 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqDoConsistencyCheck, function( arg ) local len, c, b, a, datarec; len := Length(arg); if not(len in [3, 4]) then Error( "expected 3 or 4 arguments\n" ); fi; c := arg[len - 2]; b := arg[len - 1]; a := arg[len]; arg := arg{[1 .. len - 3]}; datarec := CallFuncList(ANUPQDataRecord, arg); if not IsBound(datarec.setupclass) or datarec.class <> datarec.setupclass then Error( "tables to start next class have not been set up.\n", "Please call `PqSetupTablesForNextClass' first\n" ); fi; if not ForAll([c, b, a], IsPosInt) or datarec.class < c or c < b or b < a then Error( "pc generator indices must be non-increasing ", "integers in [1 .. ],\n", "where is the current class (", datarec.class, ")\n" ); fi; PQ_DO_CONSISTENCY_CHECK( datarec, c, b, a ); end ); ############################################################################# ## #F PQ_COMPACT( ) . . . . . . . . . . . . . . A p-Q menu option 16 ## ## inputs data to the `pq' binary for option 16 of the Advanced $p$-Quotient ## menu, to do a compaction. ## InstallGlobalFunction( PQ_COMPACT, function( datarec ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 16 ], [ " #compact" ]); end ); ############################################################################# ## #F PqCompact( ) . . . . . . . . . . user version of A p-Q menu option 16 #F PqCompact() ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to do a compaction. ## ## *Note:* ## For those familiar with the `pq' binary, `PqCompact' performs menu item ## 16 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqCompact, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_COMPACT( datarec ); end ); ############################################################################# ## #F PQ_ECHELONISE( ) . . . . . . . . . . . . . A p-Q menu option 17 ## ## inputs data to the `pq' binary for option 17 of the Advanced $p$-Quotient ## menu, to echelonise. ## InstallGlobalFunction( PQ_ECHELONISE, function( datarec ) local line, redgen; PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu datarec.match := "Generator"; ToPQ(datarec, [ 17 ], [ " #echelonise" ]); if IsBound(datarec.matchedline) and PositionSublist(datarec.matchedline, "redundant") <> fail then line := SplitString(datarec.matchedline, "", " \n"); redgen := Int( line[2] ); else redgen := fail; fi; PQ_UNBIND(datarec, ["match", "matchedline"]); return redgen; end ); ############################################################################# ## #F PqEchelonise( ) . . . . . . . . user version of A p-Q menu option 17 #F PqEchelonise() ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## program to echelonise the word most recently collected by `PqCollect' or ## `PqCommutator' against the relations of the current pc presentation, and ## return the number of the generator made redundant or `fail' if no ## generator was made redundant. A call to `PqCollect' (see~"PqCollect") or ## `PqCommutator' (see~"PqCommutator") needs to be performed prior to using ## this command. ## ## *Note:* ## For those familiar with the `pq' binary, `PqEchelonise' performs menu ## item 17 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqEchelonise, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); return PQ_ECHELONISE( datarec ); end ); ############################################################################# ## #F PQ_SUPPLY_OR_EXTEND_AUTOMORPHISMS([,]) A p-Q menu opt 18 ## ## inputs data to the `pq' binary for option 18 of the Advanced $p$-Quotient ## menu. If a list of matrices with non-negative integer ## coefficients is supplied it is used to ``supply'' automorphisms; ## otherwise, previously supplied automorphisms are ``extended''. ## InstallGlobalFunction( PQ_SUPPLY_OR_EXTEND_AUTOMORPHISMS, function( arg ) local datarec; datarec := arg[1]; PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu if 1 = Length(arg) then ToPQ(datarec, [ 18 ], [ " #extend auts" ]); else ToPQ(datarec, [ 18 ], [ " #supply auts" ]); CallFuncList(PQ_MANUAL_AUT_INPUT, arg); fi; datarec.hasAuts := true; end ); ############################################################################# ## #F PqSupplyAutomorphisms(, ) . . supply auts via A p-Q menu opt 18 #F PqSupplyAutomorphisms( ) ## ## for the th or default interactive {\ANUPQ} process, supply the ## automorphism data provided by the list of matrices with ## non-negative integer coefficients. Each matrix in must have the ## same dimensions; in particular, the number of rows of each matrix must be ## the number of pc generators of the current $p$-quotient of the group ## associated with the interactive {\ANUPQ} process. ## ## *Note:* ## For those familiar with the `pq' binary, `PqSupplyAutomorphisms' uses ## menu item 18 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqSupplyAutomorphisms, function( arg ) local args; args := PQ_AUT_ARG_CHK(1, arg); args[1] := ANUPQData.io[ args[1] ]; if IsBound(args[1].hasAuts) and args[1].hasAuts then Error("huh! already have automorphisms.\n", "Perhaps you wanted to use `PqExtendAutomorphisms'\n"); fi; CallFuncList( PQ_SUPPLY_OR_EXTEND_AUTOMORPHISMS, args ); end ); ############################################################################# ## #F PqExtendAutomorphisms( ) . . . . . extend auts via A p-Q menu opt 18 #F PqExtendAutomorphisms() ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to extend previously-supplied automorphisms. ## ## *Note:* ## For those familiar with the `pq' binary, `PqExtendAutomorphisms' uses ## menu item 18 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqExtendAutomorphisms, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); if not(IsBound(datarec.hasAuts) and datarec.hasAuts) then Error("huh! don't have any automorphisms to extend.\n", "Perhaps you wanted to use `PqSupplyAutomorphisms'\n"); fi; PQ_SUPPLY_OR_EXTEND_AUTOMORPHISMS( datarec ); end ); ############################################################################# ## #F PQ_CLOSE_RELATIONS( , ) . . . . . . A p-Q menu option 19 ## ## inputs data to the `pq' binary for option 19 of the Advanced $p$-Quotient ## menu, to apply automorphisms. ## InstallGlobalFunction( PQ_CLOSE_RELATIONS, function( datarec, qfac ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 19 ], [ " #close relations" ]); ToPQ(datarec, [ qfac ], [ " #queue factor" ]); end ); ############################################################################# ## #F PqApplyAutomorphisms( , ) . . user ver of A p-Q menu option 19 #F PqApplyAutomorphisms( ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to apply automorphisms; is the queue factor e.g. `15'. ## ## *Note:* ## For those familiar with the `pq' binary, `PqCloseRelations' performs ## menu item 19 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqApplyAutomorphisms, function( arg ) local len, datarec, qfac; len := Length(arg); if not(len in [1, 2]) then Error("expected 1 or 2 arguments\n"); fi; datarec := CallFuncList(ANUPQDataRecord, arg{[1 .. len - 1]}); PQ_CLOSE_RELATIONS( datarec, arg[len] ); end ); ############################################################################# ## #F PQ_DISPLAY( , , , ) . A p-Q menu option 20/21 ## ## inputs data to the `pq' binary for Advanced $p$-Quotient menu option ## ( should be 20 or 21) to display the generator structure (if ## ` = 20' and ` = "structure"') or to display automorphisms (if ## ` = 21' and ` = "automorphisms"'), for the pcp generators ## numbered between the bounds determined by the option `Bounds' or for all ## pcp generators if `Bounds' is not set. ## InstallGlobalFunction( PQ_DISPLAY, function( datarec, opt, type, bnds ) PQ_MENU(datarec, "ApQ"); if VALUE_PQ_OPTION("OutputLevel", datarec) <> fail then PQ_SET_OUTPUT_LEVEL( datarec, datarec.OutputLevel ); fi; ToPQ(datarec, [ opt ], [ " #display ", type ]); ToPQ(datarec, [ bnds[1] ], [ " #no. of first generator" ]); ToPQ(datarec, [ bnds[2] ], [ " #no. of last generator" ]); end ); ############################################################################# ## #F PQ_BOUNDS( , ) . . provide bounds from option or default ## ## extracts a list of two integer bounds from option `Bounds' if set, or ## otherwise uses `[1 .. ]' as default. If `Bounds' is set they are ## checked to lie in the range `[1 .. ]' and an error is generated if ## they are not. If there is no error the list of two bounds determined by ## the above is returned. ## InstallGlobalFunction( PQ_BOUNDS, function( datarec, hibnd ) local bounds; bounds := VALUE_PQ_OPTION("Bounds"); if bounds = fail then return [1, hibnd]; elif bounds[2] > hibnd then # most checking has already been done by VALUE_PQ_OPTION Info(InfoWarning + InfoANUPQ, 1, "2nd bound ", bounds[2], " of `Bounds' can be at most ", hibnd); Info(InfoWarning + InfoANUPQ, 1, "... replacing this bound most with", hibnd); return [bounds[1], hibnd]; else return bounds; fi; end ); ############################################################################# ## #F PqDisplayStructure([: Bounds := ]) . user ver A p-Q menu opt. 20 #F PqDisplayStructure([: Bounds := ]) ## ## for the th or default interactive {\ANUPQ} process, directs the `pq' ## binary to display the structure for the pcp generators numbered ## (inclusively) between the bounds of `Bounds' or for all generators if ## `Bounds' is not given. The value of `Bounds' (assuming the ## interactive process is numbered ) should be a list of two integers ## , satisfying `1 \<= \<= PqNrPcGenerators()' ## (see~"PqNrPcGenerators"). `PqDisplayStructure' also accepts the option ## `OutputLevel' (see e.g.~"Pq" where the option is listed). ## ## *Note:* ## For those familiar with the `pq' binary, `PqDisplayStructure' performs ## option 20 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqDisplayStructure, function( arg ) local datarec; PQ_OTHER_OPTS_CHK("PqDisplayStructure", true); datarec := PQ_DATA_CHK(arg); PQ_DISPLAY( datarec, 20, "structure", PQ_BOUNDS(datarec, datarec.forder[2]) ); end ); ############################################################################# ## #F PqDisplayAutomorphisms([: Bounds := ]) . u ver A p-Q menu opt 21 #F PqDisplayAutomorphisms([: Bounds := ]) ## ## for the th or default interactive {\ANUPQ} process, directs the `pq' ## binary to display the automorphism actions on the pcp generators numbered ## (inclusively) between the bounds of `Bounds' or for all generators if ## `Bounds' is not given. The value of `Bounds' (assuming the ## interactive process is numbered ) should be a list of two integers ## , satisfying $1 \le \le \le ## `PqNrPcGenerators()'$ (see~"PqNrPcGenerators"). `PqDisplayStructure' ## also accepts the option `OutputLevel' (see "option OutputLevel"). ## ## *Note:* ## For those familiar with the `pq' binary, `PqDisplayAutomorphisms' ## performs menu item 21 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqDisplayAutomorphisms, function( arg ) local datarec; PQ_OTHER_OPTS_CHK("PqDisplayAutomorphisms", true); datarec := PQ_DATA_CHK(arg); PQ_DISPLAY( datarec, 21, "automorphisms", PQ_BOUNDS(datarec, datarec.forder[2]) ); end ); ############################################################################# ## #F PQ_COLLECT_DEFINING_GENERATORS( , ) . . A p-Q menu opt 23 ## ## instructs the `pq' binary to do a collection on a string ## representing a word in the weight 1 pc generators, e.g. `"x2^2*x1"', ## using option 23 of the interactive $p$-Quotient menu. ## InstallGlobalFunction( PQ_COLLECT_DEFINING_GENERATORS, function( datarec, word ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 23 ], [ " #collect defining generators" ]); datarec.match := "The result of collection is"; ToPQ(datarec, [ word, ";" ], [ " #word to be collected" ]); return PQ_WORD(datarec); end ); ############################################################################# ## #F PqCollectWordInDefiningGenerators(,) . u ver of A p-Q menu op 23 #F PqCollectWordInDefiningGenerators( ) ## ## for the th or default interactive {\ANUPQ} process, collect a ## user-defined word in the pc generators of the class 1 quotient, i.e.~the ## pc generators that correspond to the original fp or pc group of the ## process, with respect to the current pc presentation, in the context of ## finding the next class (see~"PqNextClass"), and return the result of the ## collection as a list of generator number, exponent pairs. The ## argument may be input in either of the two ways described for `PqCollect' ## (see~"PqCollect"). It is not illegal for to contain pc generators ## of weight larger than 1, but they are intrepreted as representing the ## identity; `PqCollectWordInDefiningGenerators' works exactly like ## `PqCollect' except for this distinction. ## ## *Note:* ## For those familiar with the `pq' program, `PqCollectDefiningGenerators' ## performs menu item 23 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqCollectWordInDefiningGenerators, function( arg ) return CallFuncList( PQ_COLLECT_DEFINING_GENERATORS, PQ_CHK_COLLECT_COMMAND_ARGS(arg) ); end ); ############################################################################# ## #F PqCommutatorDefiningGenerators(,,) . user ver A p-Q opt 24 #F PqCommutatorDefiningGenerators( , ) ## ## for the th or default interactive {\ANUPQ} process, directs the `pq' ## binary to compute the left norm commutator of the list of words ## in the generators raised to the integer power . ## ## *Note:* ## For those familiar with the `pq' binary, `PqCommutatorDefiningGenerators' ## performs option 24 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqCommutatorDefiningGenerators, function( arg ) return CallFuncList( PQ_COMMUTATOR, PQ_COMMUTATOR_CHK_ARGS( Concatenation( arg, [[[24], [" #commutator of defining genrs"]]] ) ) ); end ); ############################################################################# ## #F PQ_WRITE_PC_PRESENTATION( , ) . A p-Q menu option 25 ## ## tells the `pq' binary to write a pc presentation to the file with name ## for group `.group' (option 25 of the interactive ## $p$-Quotient menu). ## InstallGlobalFunction( PQ_WRITE_PC_PRESENTATION, function( datarec, filename ) if not IsBound(datarec.setupfile) then PrintTo(filename, ""); #to ensure it's writable and empty fi; PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 25 ], [ " #set output file" ]); ToPQ(datarec, [ filename ], []); ToPQ(datarec, [ 2 ], [ " #output in GAP format" ]); end ); ############################################################################# ## #F PqWritePcPresentation( , ) . user ver. of A p-Q menu opt 25 #F PqWritePcPresentation( ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to write a pc presentation to the file with name for ## the group of that process for which a pc presentation has been previously ## computed, where the group of a process is the one given as first argument ## when `PqStart' was called to initiate that process (for process the ## group is stored as `ANUPQData.io[].group'). If the first character of ## the string is not `/', is assumed to be the path of ## a writable file relative to the directory in which {\GAP} was started. If ## a pc presentation has not been previously computed by the `pq' binary, ## then `pq' is called to compute it first, effectively invoking ## `PqPcPresentation' (see~"PqPcPresentation"). ## ## *Note:* For those familiar with the `pq' binary, `PqPcWritePresentation' ## performs menu item 25 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqWritePcPresentation, function( arg ) local filename, datarec; if 2 < Length(arg) or IsEmpty(arg) then Error("expected one or two arguments.\n"); fi; datarec := CallFuncList(ANUPQDataRecord, arg{[1..Length(arg) - 1]}); filename := PQ_CHK_PATH( arg[Length(arg)], "w", datarec ); if not( IsBound(datarec.pCover) and datarec.pcoverclass = datarec.class or IsBound(datarec.pQuotient) ) then Error( "no p-quotient or p-cover has been computed\n" ); fi; PQ_WRITE_PC_PRESENTATION( datarec, filename ); end ); ############################################################################# ## #F PQ_WRITE_COMPACT_DESCRIPTION( ) . . . . . A p-Q menu option 26 ## ## tells the `pq' binary to write a compact description to a file. ## InstallGlobalFunction( PQ_WRITE_COMPACT_DESCRIPTION, function( datarec ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 26 ], [ " #write compact description to file" ]); end ); ############################################################################# ## #F PqWriteCompactDescription( ) . . user version of A p-Q menu option 26 #F PqWriteCompactDescription() ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to write a compact description to a file. ## ## *Note:* ## For those familiar with the `pq' binary, `PqWriteCompactDescription' ## performs menu item 26 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqWriteCompactDescription, function( arg ) PQ_WRITE_COMPACT_DESCRIPTION( CallFuncList(ANUPQDataRecord, arg) ); end ); ############################################################################# ## #F PQ_EVALUATE_CERTAIN_FORMULAE( ) . . . . . A p-Q menu option 27 ## ## inputs data to the `pq' binary for option 27 of the Advanced $p$-Quotient ## menu, to evaluate certain formulae. ## InstallGlobalFunction( PQ_EVALUATE_CERTAIN_FORMULAE, function( datarec ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 27 ], [ " #evaluate certain formulae" ]); end ); ############################################################################# ## #F PqEvaluateCertainFormulae( ) . . user version of A p-Q menu option 27 #F PqEvaluateCertainFormulae() ## ## for the th or default interactive {\ANUPQ} process, directs the `pq' ## binary to evaluate certain formulae. ## ## *Note:* ## For those familiar with the `pq' binary, `PqEvaluateCertainFormulae' ## performs option 27 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqEvaluateCertainFormulae, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_EVALUATE_CERTAIN_FORMULAE( datarec ); end ); ############################################################################# ## #F PQ_EVALUATE_ACTION( ) . . . . . . . . . . A p-Q menu option 28 ## ## inputs data to the `pq' binary for option 28 of the Advanced $p$-Quotient ## menu, to evaluate the action. ## InstallGlobalFunction( PQ_EVALUATE_ACTION, function( datarec ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 28 ], [ " #evaluate action" ]); end ); ############################################################################# ## #F PqEvaluateAction( ) . . . . . . user version of A p-Q menu option 28 #F PqEvaluateAction() ## ## for the th or default interactive {\ANUPQ} process, directs the `pq' ## binary to evaluate the action. ## ## *Note:* ## For those familiar with the `pq' binary, `PqEvaluateAction' performs ## option 28 of the Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqEvaluateAction, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_EVALUATE_ACTION( datarec ); end ); ############################################################################# ## #F PQ_EVALUATE_ENGEL_IDENTITY( ) . . . . . . A p-Q menu option 29 ## ## inputs data to the `pq' binary for option 29 of the ## Advanced $p$-Quotient menu. ## InstallGlobalFunction( PQ_EVALUATE_ENGEL_IDENTITY, function( datarec ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 29 ], [ " #evaluate Engel identity" ]); end ); ############################################################################# ## #F PqEvaluateEngelIdentity( ) . . . user version of A p-Q menu option 29 #F PqEvaluateEngelIdentity() ## ## for the th or default interactive {\ANUPQ} process, inputs data ## to the `pq' binary ## ## *Note:* For those familiar with the `pq' binary, ## `PqEvaluateEngelIdentity' performs option 29 of the ## Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqEvaluateEngelIdentity, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_EVALUATE_ENGEL_IDENTITY( datarec ); end ); ############################################################################# ## #F PQ_PROCESS_RELATIONS_FILE( ) . . . . . . . A p-Q menu option 30 ## ## inputs data to the `pq' binary for option 30 of the ## Advanced $p$-Quotient menu. ## InstallGlobalFunction( PQ_PROCESS_RELATIONS_FILE, function( datarec ) PQ_MENU(datarec, "ApQ"); #we need options from the Advanced p-Q Menu ToPQ(datarec, [ 30 ], [ " #process relations file" ]); end ); ############################################################################# ## #F PqProcessRelationsFile( ) . . . user version of A p-Q menu option 30 #F PqProcessRelationsFile() ## ## for the th or default interactive {\ANUPQ} process, inputs data ## to the `pq' binary ## ## *Note:* For those familiar with the `pq' binary, ## `PqProcessRelationsFile' performs option 30 of the ## Advanced $p$-Quotient menu. ## InstallGlobalFunction( PqProcessRelationsFile, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_PROCESS_RELATIONS_FILE( datarec ); end ); ############################################################################# ## #F PqSPComputePcpAndPCover( : ) . . . user ver of SP menu opt. 1 #F PqSPComputePcpAndPCover( : ) ## ## for the th or default interactive {\ANUPQ} process, directs the `pq' ## binary to compute for the group of that process a pc presentation up to ## the $p$-quotient of maximum class or the value of the option `ClassBound' ## and the $p$-cover of that quotient, and sets up tabular information ## required for computation of a standard presentation. Here the group of a ## process is the one given as first argument when `PqStart' was called to ## initiate that process (for process the group is stored as ## `ANUPQData.io[].group'). ## ## The possible are `Prime', `ClassBound', `Relators', `Exponent', ## `Metabelian' and `OutputLevel' (see Chapter~"ANUPQ Options" for detailed ## descriptions of these options). The option `Prime' is normally determined ## via `PrimePGroup', and so is not required unless the group doesn't know ## it's a $p$-group and `HasPrimePGroup' returns `false'. ## ## *Note:* ## For those familiar with the `pq' binary, `PqSPComputePcpAndPCover' ## performs option 1 of the Standard Presentation menu. ## InstallGlobalFunction( PqSPComputePcpAndPCover, function( arg ) local datarec; PQ_OTHER_OPTS_CHK("PqSPComputePcpAndPCover", true); datarec := CallFuncList(ANUPQDataRecord, arg); PQ_PC_PRESENTATION( datarec, "SP" ); end ); ############################################################################# ## #F PQ_SP_STANDARD_PRESENTATION([,] :) SP menu opt 2 ## ## inputs data given by to the `pq' binary to compute a standard ## presentation for group `.group'. If argument is given it ## is assumed to be the automorphism group data required. Otherwise it is ## assumed that `.pQuotient' exists and that {\GAP} can compute its ## automorphism group and the necessary automorphism group data can be ## derived from `.pQuotient'. This uses option 2 of the Standard ## Presentation menu. ## InstallGlobalFunction( PQ_SP_STANDARD_PRESENTATION, function( arg ) local datarec, savefile; datarec := arg[1]; savefile := PQ_CHK_PATH( VALUE_PQ_OPTION( "StandardPresentationFile", Filename( ANUPQData.tmpdir, "SPres" ) ), "w", datarec); PQ_MENU(datarec, "SP"); ToPQ(datarec, [ 2 ], [ " #compute standard presentation" ]); ToPQ(datarec, [ savefile ], [ " #file for saving pres'n" ]); ToPQ(datarec, [ VALUE_PQ_OPTION("ClassBound", 63)], [ " #class bound" ]); if 1 = Length(arg) then PQ_AUT_INPUT( datarec, datarec.pQuotient ); else PQ_MANUAL_AUT_INPUT( datarec, arg[2] ); fi; ToPQ_BOOL(datarec, VALUE_PQ_OPTION("PcgsAutomorphisms", false, datarec), "compute pcgs gen. seq. for auts."); end ); ############################################################################# ## #F PqSPStandardPresentation([,]:) user ver SP menu opt 2 #F PqSPStandardPresentation([] : ) ## ## for the th or default interactive {\ANUPQ} process, inputs data given ## by to compute a standard presentation for the group of that ## process. If argument is given it is assumed to be the ## automorphism group data required. Otherwise it is assumed that a call to ## either `Pq' (see~"Pq!interactive") or `PqEpimorphism' ## (see~"PqEpimorphism!interactive") has generated a $p$-quotient and that ## {\GAP} can compute its automorphism group from which the necessary ## automorphism group data can be derived. The group of the process is the ## one given as first argument when `PqStart' was called to initiate the ## process (for process the group is stored as `ANUPQData.io[].group' ## and the $p$-quotient if existent is stored as ## `ANUPQData.io[].pQuotient'). If is not given and a ## $p$-quotient of the group has not been previously computed a class 1 ## $p$-quotient is computed. ## ## `PqSPStandardPresentation' accepts three options, all optional: ## ## \beginitems ## ## `StandardPresentationFile := '& ## Specifies that the file to which the standard presentation is written has ## name . If the first character of the string is not ## `/', is assumed to be the path of a writable file relative to ## the directory in which {\GAP} was started. If this option is omitted it ## is written to the file with the name generated by the command `Filename( ## ANUPQData.tmpdir, "SPres" );', i.e.~the file with name `"SPres"' in the ## temporary directory in which the `pq' binary executes. ## ## `ClassBound := ' & ## Specifies that the $p$-quotient computed has lower exponent-$p$ class at ## most . If this option is omitted a default of 63 is used. ## ## `PcgsAutomorphisms' & ## Specifies that a polycyclic generating sequence for the automorphism ## group of the group of the process (which must be *soluble*), be computed ## and passed to the `pq' binary. This increases the efficiency of the ## computation; it also prevents the `pq' from calling {\GAP} for ## orbit-stabilizer calculations. See section "Computing Descendants of a ## p-Group" for further explanations. ## ## \enditems ## ## *Note:* For those familiar with the `pq' binary, `PqSPPcPresentation' ## performs option 2 of the Standard Presentation menu. ## InstallGlobalFunction( PqSPStandardPresentation, function( arg ) local args, datarec; args := PQ_AUT_ARG_CHK(0, arg); datarec := ANUPQData.io[ args[1] ]; if 1 = Length(args) and not IsBound(datarec.pQuotient) then PQ_EPI_OR_PCOVER( args[1] : PqEpiOrPCover := "pQuotient"); fi; args[1] := datarec; CallFuncList( PQ_SP_STANDARD_PRESENTATION, args ); end ); ############################################################################# ## #F PQ_SP_SAVE_PRESENTATION( , ) . . . . SP menu option 3 ## ## directs the `pq' binary to save the standard presentation previously ## computed for `.group' to using option 3 of the ## Standard Presentation menu. ## InstallGlobalFunction( PQ_SP_SAVE_PRESENTATION, function( datarec, filename ) PQ_MENU(datarec, "SP"); ToPQ(datarec, [ 3 ], [ " #save standard presentation to file" ]); ToPQ(datarec, [ filename ], [ " #filename" ]); end ); ############################################################################# ## #F PqSPSavePresentation( , ) . . user ver of SP menu option 3 #F PqSPSavePresentation( ) ## ## for the th or default interactive {\ANUPQ} process, directs the `pq' ## binary to save the standard presentation previously computed for the ## group of that process to the file with name , where the group ## of a process is the one given as first argument when `PqStart' was called ## to initiate that process. If the first character of the string ## is not `/' is assumed to be the path of a writable file ## relative to the directory in which {\GAP} was started. ## ## *Note:* For those familiar with the `pq' binary, `PqSPSavePresentation' ## performs option 3 of the Standard Presentation menu. ## InstallGlobalFunction( PqSPSavePresentation, function( arg ) local datarec, filename; PQ_OTHER_OPTS_CHK("PqSPSavePresentation", true); if 0 = Length(arg) or Length(arg) > 2 then Error( "expected 1 or 2 arguments\n" ); fi; datarec := CallFuncList(ANUPQDataRecord, arg{[1..Length(arg) - 1]}); filename := PQ_CHK_PATH( arg[Length(arg)], "w", datarec ); PQ_SP_SAVE_PRESENTATION( datarec, filename ); end ); ############################################################################# ## #F PQ_SP_COMPARE_TWO_FILE_PRESENTATIONS(,,) . SP menu opt 6 ## ## inputs data to the `pq' binary for option 6 of the Standard Presentation ## menu, to compare the presentations in the files with names and ## and returns `true' if they are identical and `false' otherwise. ## InstallGlobalFunction( PQ_SP_COMPARE_TWO_FILE_PRESENTATIONS, function( datarec, f1, f2 ) local line; PQ_MENU(datarec, "SP"); ToPQ( datarec, [ 6 ], [ " #compare two file presentations" ]); ToPQ( datarec, [ f1 ], [ " #1st filename" ]); datarec.match := "Identical"; datarec.filter := ["Identical"]; ToPQ(datarec, [ f2 ], [ " #2nd filename" ]); line := SplitString(datarec.matchedline, "", "? \n"); PQ_UNBIND(datarec, ["match", "matchedline", "filter"]); return EvalString( LowercaseString( line[3] ) ); end ); ############################################################################# ## #F PqSPCompareTwoFilePresentations(,,) user ver of SP menu opt 6 #F PqSPCompareTwoFilePresentations(,) ## ## for the th or default interactive {\ANUPQ} process, directs the `pq' ## binary to compare the presentations in the files with names and ## and returns `true' if they are identical and `false' otherwise. For each ## of the strings and , if the first character is not a `/' then it ## is assumed to be the path of a readable file relative to the directory in ## which {\GAP} was started. ## ## *Notes* ## ## The presentations in files and must have been generated by the ## `pq' binary but they do *not* need to be *standard* presentations. ## ## For those familiar with the `pq' binary, ## `PqSPCompareTwoFilePresentations' performs option 6 of the Standard ## Presentation menu. ## InstallGlobalFunction( PqSPCompareTwoFilePresentations, function( arg ) local len, datarec, f1, f2; len := Length(arg); if not(len in [2, 3]) then Error( "expected 2 or 3 arguments\n" ); fi; datarec := CallFuncList(ANUPQDataRecord, arg{[1..len - 2]}); f1 := PQ_CHK_PATH( arg[len - 1], "r", datarec ); f2 := PQ_CHK_PATH( arg[len], "r", datarec ); return PQ_SP_COMPARE_TWO_FILE_PRESENTATIONS( datarec, f1, f2 ); end ); ############################################################################# ## #F PQ_SP_ISOMORPHISM( ) . . . . . . . . . . . . . SP menu option 8 ## ## computes the mapping from the automorphism group generators to the ## generators of the standard presentation, using option 8 of the main ## Standard Presentation menu. ## InstallGlobalFunction( PQ_SP_ISOMORPHISM, function( datarec ) PQ_MENU(datarec, "SP"); ToPQ(datarec, [ 8 ], [ " #compute isomorphism" ]); end ); ############################################################################# ## #F PqSPIsomorphism( ) . . . . . . . . . user version of SP menu option 8 #F PqSPIsomorphism() ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## program to compute the isomorphism mapping from the $p$-group of the ## process to its standard presentation. This function provides a ## description only; for a {\GAP} object, use ## `EpimorphismStandardPresentation' ## (see~"EpimorphismStandardPresentation!interactive"). ## ## *Note:* For those familiar with the `pq' program, `PqSPIsomorphism' ## performs menu item 8 of the Standard Presentation menu. ## InstallGlobalFunction( PqSPIsomorphism, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_SP_ISOMORPHISM( datarec ); end ); ############################################################################# ## #F PQ_PG_SUPPLY_AUTS( [, ],

) . p-G/A p-G menu opt 1 ## ## defines the automorphism group of `.group', using option 1 of ## the main or Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PQ_PG_SUPPLY_AUTS, function( arg ) local datarec; CallFuncList( PQ_MENU, arg{[1, Length(arg)]}); datarec := arg[1]; if 2 < Length(arg) and VALUE_PQ_OPTION("NumberOfSolubleAutomorphisms", 0, datarec) > 0 and Length(VALUE_PQ_OPTION("RelativeOrders", [], datarec)) <> datarec.NumberOfSolubleAutomorphisms then Error("the number of elements of option \"RelativeOrders\" should equal\n", "the value of option \"NumberOfSolubleAutomorphisms\" (", datarec.NumberOfSolubleAutomorphisms, ")\n"); fi; ToPQ(datarec, [ 1 ], [ " #supply automorphism data" ]); if 2 = Length(arg) then PQ_AUT_INPUT( datarec, datarec.group ); else CallFuncList( PQ_MANUAL_AUT_INPUT, arg{[1 .. 2]} ); fi; end ); ############################################################################# ## #F PqPGSupplyAutomorphisms( [, ] ) . user ver of pG menu option 1 #F PqPGSupplyAutomorphisms([]) ## ## for the th or default interactive {\ANUPQ} process, supply the `pq' ## binary with the automorphism group data needed for the group of that ## process (for process the group is stored as ## `ANUPQData.io[].group'). If the argument is omitted then ## {\GAP} *must* be able to determine the automorphism group of the group of ## the process. Otherwise the automorphism data is provided from ## which should be a list of matrices with non-negative integer ## coefficients, where each matrix must have the same dimensions; in ## particular, the number of rows of each matrix must be the rank of the ## group of the process. ## ## *Note:* ## For those familiar with the `pq' binary, `PqPGSupplyAutomorphisms' ## performs option 1 of the main $p$-Group Generation menu. ## InstallGlobalFunction( PqPGSupplyAutomorphisms, function( arg ) local args; args := PQ_AUT_ARG_CHK(0, arg); args[1] := ANUPQData.io[ args[1] ]; Add(args, "pG"); CallFuncList( PQ_PG_SUPPLY_AUTS, args ); end ); ############################################################################# ## #F PQ_PG_EXTEND_AUTOMORPHISMS( ) . . . . . p-G/A p-G menu option 2 ## ## inputs data to the `pq' binary for option 2 of the main or Advanced ## $p$-Group Generation menu. ## InstallGlobalFunction( PQ_PG_EXTEND_AUTOMORPHISMS, function( datarec ) if not(PQ_MENU(datarec) in ["pG", "ApG"]) then PQ_MENU(datarec, "pG"); fi; ToPQ(datarec, [ 2 ], [ " #extend automorphisms" ]); end ); ############################################################################# ## #F PqPGExtendAutomorphisms( ) . user version of p-G/A p-G menu option 2 #F PqPGExtendAutomorphisms() ## ## for the th or default interactive {\ANUPQ} process, directs the `pq' ## binary to compute the extensions of the automorphisms defined by calling ## `PqPGSupplyAutomorphisms' (see~"PqPGSupplyAutomorphisms"). You may wish ## to set the `InfoLevel' of `InfoANUPQ' to 2 (or more) in order to see the ## output from the `pq' (see~"InfoANUPQ"). ## ## *Note:* ## For those familiar with the `pq' binary, `PqPGExtendAutomorphisms' ## performs option 2 of the main or advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqPGExtendAutomorphisms, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_PG_EXTEND_AUTOMORPHISMS( datarec ); end ); ############################################################################# ## #F PQ_PG_RESTORE_GROUP(, , ) . . . . . p-G/A p-G menu opt 3 ## ## inputs data to the `pq' binary to restore group of class for ## option 3 of the main or Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PQ_PG_RESTORE_GROUP, function( datarec, cls, n ) if not(PQ_MENU(datarec) in ["pG", "ApG"]) then PQ_MENU(datarec, "pG"); fi; ToPQ(datarec, [ 3 ], [ " #restore group from file" ]); if IsString(cls) then ToPQ(datarec, [ cls ], [ " #filename" ]); else ToPQ(datarec, [ datarec.GroupName, "_class", cls ], [ " #filename" ]); fi; ToPQ(datarec, [ n ], [ " #no. of group" ]); if IsInt(cls) then datarec.match := true; PQ_SET_GRP_DATA(datarec); datarec.capable := datarec.class > cls; datarec.pcoverclass := datarec.class; fi; end ); ############################################################################# ## #F PqPGSetDescendantToPcp( , , ) . u ver of p-G/A p-G menu opt 3 #F PqPGSetDescendantToPcp( , ) #F PqPGSetDescendantToPcp( [: Filename := ]) #F PqPGSetDescendantToPcp([: Filename := ]) #F PqPGRestoreDescendantFromFile(, , ) #F PqPGRestoreDescendantFromFile( , ) #F PqPGRestoreDescendantFromFile( [: Filename := ]) #F PqPGRestoreDescendantFromFile([: Filename := ]) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to restore group of class from a temporary file, where ## and are positive integers, or the group stored in . ## `PqPGSetDescendantToPcp' and `PqPGRestoreDescendantFromFile' are ## synonyms; they make sense only after a prior call to construct ## descendants by say `PqPGConstructDescendants' ## (see~"PqPGConstructDescendants") or the interactive `PqDescendants' ## (see~"PqDescendants!interactive"). In the `Filename' option forms, the ## option defaults to the last filename in which a presentation was stored ## by the `pq' binary. ## ## *Note:* ## For those familiar with the `pq' binary, `PqPGSetDescendantToPcp' and ## `PqPGRestoreDescendantFromFile' perform menu item 3 of the main or ## advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqPGSetDescendantToPcp, function( arg ) local len, datarec, cls, n; PQ_OTHER_OPTS_CHK("PqPGSetDescendantToPcp", true); len := Length(arg); if len > 3 or not(ForAll(arg, IsPosInt)) then Error("expected at most 3 positive integer arguments\n"); fi; if len in [2, 3] then cls := arg[len - 1]; n := arg[len]; arg := arg{[1 .. len - 2]}; fi; datarec := CallFuncList(ANUPQDataRecord, arg); if len in [2, 3] then if not( IsBound(datarec.ndescendants) and IsBound( datarec.ndescendants[cls] ) ) then Error( "descendants for class ", cls, " have not been constructed\n" ); elif datarec.ndescendants[cls][1] < n then Error( "there is no group ", n, " saved ( must be <= ", datarec.ndescendants[cls][1], ")\n" ); fi; PQ_PG_RESTORE_GROUP(datarec, cls, n); else PQ_PG_RESTORE_GROUP(datarec, VALUE_PQ_OPTION("Filename", datarec.des), 1); fi; end ); ############################################################################# ## #F PQ_PG_CONSTRUCT_DESCENDANTS( : ) . p-G menu option 5 ## ## inputs data given by to the `pq' binary to construct ## descendants, using option 5 of the main $p$-Group Generation menu. ## InstallGlobalFunction( PQ_PG_CONSTRUCT_DESCENDANTS, function( datarec ) local nodescendants, class, firstStep, expectedNsteps, optrec, line, ngroups, cls, totngroups, onestage; onestage := IsBound(datarec.des) and IsBound(datarec.des.onestage) and datarec.des.onestage; if not onestage then datarec.des := rec(); fi; VALUE_PQ_OPTION("CustomiseOutput", false, datarec.des); if not onestage then # deal with the easy answer if VALUE_PQ_OPTION("OrderBound", 0, datarec.des) <> 0 and HasIsFinite(datarec.group) and IsFinite(datarec.group) and IsPGroup(datarec.group) and datarec.des.OrderBound <= LogInt(Size(datarec.group), PrimePGroup(datarec.group)) then return 0; fi; # We do these here to ensure an error doesn't occur mid-input of the menu # item data if IsBound(datarec.capable) then #group has come from a `PqPGRestoreGroupFromFile' command if not datarec.capable then Info(InfoWarning + InfoANUPQ, 1, "group restored from file is incapable"); return 0; fi; fi; if not IsBound(datarec.pcoverclass) or datarec.pcoverclass <> datarec.class then Error("the p-cover of the last p-quotient has not yet been computed!\n"); fi; # sanity checks if VALUE_PQ_OPTION("ClassBound", datarec.pcoverclass, datarec.des) < datarec.pcoverclass then Error("option `ClassBound' must be at least ", datarec.pcoverclass, "\n"); fi; fi; if VALUE_PQ_OPTION("SpaceEfficient", false, datarec.des) and not VALUE_PQ_OPTION("PcgsAutomorphisms", false, datarec) then Info(InfoWarning + InfoANUPQ, 1, "\"SpaceEfficient\" ignored since \"PcgsAutomorphisms\" is set."); fi; if not onestage then if VALUE_PQ_OPTION("StepSize", datarec.des) <> fail then if datarec.des.OrderBound <> 0 then Error("\"StepSize\" and \"OrderBound\" ", "must not be set simultaneously\n"); fi; expectedNsteps := datarec.des.ClassBound - datarec.pcoverclass + 1; if IsList(datarec.des.StepSize) then firstStep := datarec.des.StepSize[1]; if Length(datarec.des.StepSize) <> expectedNsteps then Error( "the number of step-sizes in the \"StepSize\" list must\n", "equal ", expectedNsteps, " (one more than the difference\n", "of \"ClassBound\" and the class of the p-covering group)\n" ); fi; else firstStep := datarec.des.StepSize; fi; if HasNuclearRank(datarec.group) and firstStep > NuclearRank(datarec.group) then # Error("the first \"StepSize\" element (= ", firstStep, ") must not be\n", # "greater than the \"Nuclear Rank\" (= ", # NuclearRank(datarec.group), ")\n"); return 0; fi; fi; PQ_MENU(datarec, "pG"); datarec.matchlist := [" is an invalid starting group"]; datarec.matchedlines := []; ToPQ(datarec, [ 5 ], [ " #construct descendants" ]); nodescendants := not IsEmpty(datarec.matchedlines); PQ_UNBIND( datarec, ["matchlist", "matchedlines"] ); if nodescendants then return 0; fi; ToPQ(datarec, [ datarec.des.ClassBound ], [ " #class bound" ]); #Construct all descendants? if not IsBound(datarec.des.StepSize) then ToPQ(datarec, [ 1 ], [ " #do construct all descendants" ]); #Set an order bound for descendants? if datarec.des.OrderBound <> 0 then ToPQ(datarec, [ 1 ], [ " #do set an order bound" ]); ToPQ(datarec, [ datarec.des.OrderBound ], [ " #order bound" ]); else ToPQ(datarec, [ 0 ], [ " #do not set an order bound" ]); fi; else ToPQ(datarec, [ 0 ], [ " #do not construct all descendants" ]); if expectedNsteps = 1 then # Input step size ToPQ(datarec, [ firstStep ], [ " #step size" ]); # Constant step size? elif IsInt(datarec.des.StepSize) then ToPQ(datarec, [ 1 ], [ " #set constant step size" ]); ToPQ(datarec, [ datarec.des.StepSize ], [ " #step size" ]); else ToPQ(datarec, [ 0 ], [ " #set variable step size" ]); ToPQ(datarec, [ JoinStringsWithSeparator( List(datarec.des.StepSize, String), " ") ], [ " #step sizes" ]); fi; fi; else PQ_MENU(datarec, "ApG"); ToPQ(datarec, [ 5 ], [ " #single stage" ]); ToPQ(datarec, [ VALUE_PQ_OPTION("StepSize", datarec.des) ], [ " #step size" ]); fi; ToPQ_BOOL(datarec, VALUE_PQ_OPTION("PcgsAutomorphisms", false, datarec), "compute pcgs gen. seq. for auts."); ToPQ_BOOL(datarec, VALUE_PQ_OPTION("BasicAlgorithm", false, datarec.des), "use default algorithm"); if not datarec.des.BasicAlgorithm then ToPQ(datarec, [ VALUE_PQ_OPTION( "RankInitialSegmentSubgroups", 0, datarec.des) ], [ " #rank of initial segment subgrp" ]); if datarec.PcgsAutomorphisms then ToPQ_BOOL(datarec, datarec.des.SpaceEfficient, "be space efficient"); fi; VALUE_PQ_OPTION("AllDescendants", true, datarec.des); ToPQ_BOOL(datarec, not VALUE_PQ_OPTION( "CapableDescendants", not datarec.des.AllDescendants, datarec.des ), "completely process terminal descendants"); ToPQ(datarec, [ VALUE_PQ_OPTION("Exponent", 0, datarec) ], [ " #exponent" ]); # "Exponent" is a `global' option ToPQ_BOOL(datarec, VALUE_PQ_OPTION("Metabelian", false, datarec.des), "enforce metabelian law"); fi; datarec.matchlist := [ "group saved on file", "groups saved on file" ]; datarec.matchedlines := []; if IsRecord(datarec.des.CustomiseOutput) and not IsEmpty( Intersection( RecNames(datarec.des.CustomiseOutput), ["perm", "orbit", "group", "autgroup", "trace"] ) ) then ToPQ(datarec, [ 0 ], [ " #customise output" ]); PQ_CUSTOMISE_OUTPUT( datarec, "perm", "perm. grp output", ["print degree", "print extended auts", "print aut. matrices", "print permutations"] ); PQ_CUSTOMISE_OUTPUT( datarec, "orbit", "orbit output", ["print orbit summary", "print complete orbit listing"] ); PQ_CUSTOMISE_OUTPUT( datarec, "group", "group output", ["print allowable subgp standard matrix", "print pres'n of reduced p-covers", "print pres'n of immediate descendants", "print nuclear rank of descendants", "print p-mult'r rank of descendants"] ); PQ_CUSTOMISE_OUTPUT( datarec, "autgroup", "aut. grp output", ["print commutator matrix", "print aut. grp descriptions of descendants", "print aut. grp orders of descendants"] ); PQ_CUSTOMISE_OUTPUT( datarec, "trace", "provide algorithm trace", [] ); else ToPQ(datarec, [ 1 ], [ " #default output" ]); fi; if onestage then ToPQ(datarec, [ VALUE_PQ_OPTION("Filename", "onestage", datarec.des) ], [ " #output filename" ]); Unbind(datarec.des.onestage); else if not IsBound(datarec.ndescendants) then datarec.ndescendants := []; fi; totngroups := 0; for line in datarec.matchedlines do line := SplitString(line, "", " \n"); ngroups := Int( line[1] ); cls := SplitString( line[ Length(line) ], "", "_" ); cls := Int( cls[2]{[6 .. Length( cls[2] )]} ); datarec.ndescendants[cls] := [ngroups, line[2] = "capable"]; totngroups := totngroups + ngroups; od; PQ_UNBIND(datarec, ["matchlist", "matchedlines"]); return totngroups; fi; end ); ############################################################################# ## #F PqPGConstructDescendants( : ) . user ver. of p-G menu op. 5 #F PqPGConstructDescendants( : ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to construct descendants prescribed by , and return the ## number of descendants constructed. The options possible are `ClassBound', ## `OrderBound', `StepSize', `PcgsAutomorphisms', ## `RankInitialSegmentSubgroups', `SpaceEfficient', `CapableDescendants', ## `AllDescendants', `Exponent', `Metabelian', `BasicAlgorithm', ## `CustomiseOutput'. (Detailed descriptions of these options may be found ## in Chapter~"ANUPQ Options".) ## ## `PqPGConstructDescendants' requires that the `pq' binary has previously ## computed a pc presentation and a $p$-cover for a $p$-quotient of some ## class of the group of the process. ## ## *Note:* ## For those familiar with the `pq' binary, `PqPGConstructDescendants' ## performs menu item 5 of the main $p$-Group Generation menu. ## InstallGlobalFunction( PqPGConstructDescendants, function( arg ) local datarec; PQ_OTHER_OPTS_CHK("PqPGConstructDescendants", true); datarec := CallFuncList(ANUPQDataRecord, arg); return PQ_PG_CONSTRUCT_DESCENDANTS( datarec ); end ); ############################################################################# ## #F PqAPGSupplyAutomorphisms( [, ] ) . user ver of A p-G menu opt 1 #F PqAPGSupplyAutomorphisms([]) ## #T This is implemented, but not documented in the manual. There is one line #T different in the C code between this menu item and the corresponding p-G #T menu item. I don't understand the difference. - GG ## for the th or default interactive {\ANUPQ} process, supply the `pq' ## binary with the automorphism group data needed for the group of that ## process (for process the group is stored as ## `ANUPQData.io[].group'). If the argument is omitted then ## {\GAP} *must* be able to determine the automorphism group of the group of ## the process. Otherwise the automorphism data is provided from ## which should be a list of matrices with non-negative integer ## coefficients, where each matrix must have the same dimensions; in ## particular, the number of rows of each matrix must be the rank of the ## group of the process. ## ## *Note:* ## For those familiar with the `pq' binary, `PqAPGSupplyAutomorphisms' ## performs menu item 1 of the Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGSupplyAutomorphisms, function( arg ) local args; args := PQ_AUT_ARG_CHK(0, arg); args[1] := ANUPQData.io[ args[1] ]; Add(args, "ApG"); CallFuncList( PQ_PG_SUPPLY_AUTS, args ); end ); ############################################################################# ## #F PqAPGSingleStage( : ) . user version of A p-G menu option 5 #F PqAPGSingleStage( : ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to do a single stage of the descendants construction algorithm as ## prescribed by . The possible options are `StepSize', ## `PcgsAutomorphisms', `RankInitialSegmentSubgroups', `SpaceEfficient', ## `CapableDescendants', `AllDescendants', `Exponent', `Metabelian', ## `BasicAlgorithm' and `CustomiseOutput'. (Detailed descriptions of these ## options may be found in Chapter~"ANUPQ Options".) ## ## *Note:* ## For those familiar with the `pq' binary, `PqAPGSingleStage' performs ## option 5 of the Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGSingleStage, function( arg ) local datarec, ngroups; PQ_OTHER_OPTS_CHK("PqAPGSingleStage", true); datarec := CallFuncList(ANUPQDataRecord, arg); PQ_MENU(datarec, "ApG"); datarec.des.onestage := true; PQ_PG_CONSTRUCT_DESCENDANTS(datarec); end ); ############################################################################# ## #F PQ_APG_DEGREE( , , ) . . . . . A p-G menu option 6 ## ## inputs data to the `pq' binary for option 6 of the Advanced $p$-Group ## Generation menu, to compute definition sets and find the degree. ## InstallGlobalFunction( PQ_APG_DEGREE, function( datarec, step, rank ) local expt, line; expt := VALUE_PQ_OPTION("Exponent", 0, datarec); PQ_MENU(datarec, "ApG"); ToPQ(datarec, [ 6 ], [ " #compute defn sets and find degree" ]); ToPQ(datarec, [ step ], [ " #step size" ]); ToPQ(datarec, [ rank ], [ " #rank of initial segment subgroup" ]); datarec.match := "Degree of permutation group"; ToPQ(datarec, [ expt ], [ " #exponent" ]); line := SplitString(datarec.matchedline, "", " \n"); Unbind(datarec.match); return Int( line[6] ); end ); ############################################################################# ## #F PqAPGDegree(,,[: Exponent := ]) . u ver A p-G menu op 6 #F PqAPGDegree( , [: Exponent := ]) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to compute definition sets and return the degree of the ## permutation group. Here the step-size and the rank of the ## initial segment subgroup are positive integers. See~"option Exponent" for ## the one recognised option `Exponent'. ## ## *Note:* For those familiar with the `pq' binary, `PqAPGDegree' performs ## menu item 6 of the Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGDegree, function( arg ) local len, datarec; PQ_OTHER_OPTS_CHK("PqAPGDegree", true); len := Length(arg); if not(len in [2, 3] or ForAll(arg, IsPosInt)) then Error("expected 2 or 3 positive integer arguments\n"); fi; datarec := CallFuncList(ANUPQDataRecord, arg{[1 .. len - 2]}); return PQ_APG_DEGREE( datarec, arg[len - 1], arg[len] ); end ); ############################################################################# ## #F PQ_APG_PERMUTATIONS( ) . . . . . . . . . . A p-G menu option 7 ## ## inputs data to the `pq' binary for option 7 of the Advanced $p$-Group ## Generation menu, to compute permutations of subgroups. ## InstallGlobalFunction( PQ_APG_PERMUTATIONS, function( datarec ) local pcgsauts, efficient, printauts, printperms; pcgsauts := VALUE_PQ_OPTION("PcgsAutomorphisms", false, datarec); efficient := VALUE_PQ_OPTION("SpaceEfficient", false, datarec.des); printauts := VALUE_PQ_OPTION("PrintAutomorphisms", false); printperms := VALUE_PQ_OPTION("PrintPermutations", false); PQ_MENU(datarec, "ApG"); ToPQ(datarec, [ 7 ], [ " #compute permutations" ]); ToPQ_BOOL(datarec, pcgsauts, "compute pcgs gen. seq. for auts."); ToPQ_BOOL(datarec, efficient, "be space efficient"); ToPQ_BOOL(datarec, printauts, "print automorphism matrices"); ToPQ_BOOL(datarec, printperms, "print permutations"); end ); ############################################################################# ## #F PqAPGPermutations( : ) . user version of A p-G menu optn. 7 #F PqAPGPermutations( : ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to compute permutations of subgroups. Here the options ## recognised are `PcgsAutomorphisms', `SpaceEfficient', ## `PrintAutomorphisms' and `PrintPermutations' (see Chapter~"ANUPQ Options" ## for details). ## ## *Note:* For those familiar with the `pq' binary, `PqAPGPermutations' ## performs menu item 7 of the Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGPermutations, function( arg ) local datarec; PQ_OTHER_OPTS_CHK("PqAPGPermutations", true); datarec := CallFuncList(ANUPQDataRecord, arg); PQ_APG_PERMUTATIONS( datarec ); end ); ############################################################################# ## #F PQ_APG_ORBITS( ) . . . . . . . . . . . . . A p-G menu option 8 ## ## inputs data to the `pq' binary for menu item 8 of the Advanced $p$-Group ## Generation menu, to compute orbits. ## InstallGlobalFunction( PQ_APG_ORBITS, function( datarec ) local pcgsauts, efficient, output, summary, listing, line, norbits; pcgsauts := VALUE_PQ_OPTION("PcgsAutomorphisms", false, datarec); efficient := VALUE_PQ_OPTION("SpaceEfficient", false, datarec.des); output := VALUE_PQ_OPTION("CustomiseOutput", rec(orbit := []), datarec.des); if not( IsRecord(output) and IsBound(output.orbit) and IsList(output.orbit) ) then output := rec(orbit := []); fi; summary := IsBound( output.orbit[1] ) and output.orbit[1] in [1, true]; listing := IsBound( output.orbit[2] ) and output.orbit[2] in [1, true]; PQ_MENU(datarec, "ApG"); ToPQ(datarec, [ 8 ], [ " #compute orbits" ]); ToPQ_BOOL(datarec, pcgsauts, "compute pcgs gen. seq. for auts."); ToPQ_BOOL(datarec, efficient, "be space efficient"); if summary then datarec.match := "Number of orbits is"; elif listing then datarec.match := "Orbit "; fi; PQ_APG_CUSTOM_OUTPUT( datarec, "orbit", "orbit output", ["print orbit summary", "print complete orbit listing"] ); if summary or listing then line := SplitString(datarec.matchedline, "", " \n"); if summary then norbits := Int( line[5] ); else norbits := Int( line[2] ); fi; Unbind(datarec.match); else norbits := ""; fi; return norbits; end ); ############################################################################# ## #F PqAPGOrbits( : ) . . . user version of A p-G menu option 8 #F PqAPGOrbits( : ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to compute the orbit action of the automorphism group, and return ## the number of orbits, if either a summary or a complete listing (or both) ## of orbit information was requested. Here the options recognised ## are `PcgsAutomorphisms', `SpaceEfficient', and `CustomiseOutput' (see ## Chapter~"ANUPQ Options" for details). For the `CustomiseOutput' option ## only the setting of the `orbit' is recognised (all other fields if set ## are ignored). ## ## *Note:* For those familiar with the `pq' binary, `PqAPGOrbits' performs ## menu item 8 of the Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGOrbits, function( arg ) local datarec, norbits; PQ_OTHER_OPTS_CHK("PqAPGOrbits", true); datarec := CallFuncList(ANUPQDataRecord, arg); norbits := PQ_APG_ORBITS( datarec ); if norbits <> "" then return norbits; fi; end ); ############################################################################# ## #F PQ_APG_ORBIT_REPRESENTATIVES( ) . . . . . . A p-G menu option 9 ## ## inputs data to the `pq' binary for menu item 9 of the Advanced $p$-Group ## Generation menu, to process orbit representatives. ## InstallGlobalFunction( PQ_APG_ORBIT_REPRESENTATIVES, function( datarec ) local pcgsauts, efficient, exponent, metabelian, alldescend, outputfile; pcgsauts := VALUE_PQ_OPTION("PcgsAutomorphisms", false, datarec); efficient := VALUE_PQ_OPTION("SpaceEfficient", false, datarec.des); exponent := VALUE_PQ_OPTION("Exponent", false, datarec); metabelian := VALUE_PQ_OPTION("Metabelian", false, datarec); alldescend := not VALUE_PQ_OPTION( "CapableDescendants", VALUE_PQ_OPTION("AllDescendants", true), datarec.des); outputfile := VALUE_PQ_OPTION("Filename", "redPCover", datarec.des); VALUE_PQ_OPTION("CustomiseOutput", rec(), datarec.des); PQ_MENU(datarec, "ApG"); ToPQ(datarec, [ 9 ], [ " #process orbit reps" ]); ToPQ_BOOL(datarec, pcgsauts, "compute pcgs gen. seq. for auts."); ToPQ_BOOL(datarec, efficient, "be space efficient"); ToPQ_BOOL(datarec, alldescend, "completely process terminal descendants"); ToPQ(datarec, [ exponent ], [ " #exponent" ]); ToPQ_BOOL(datarec, metabelian, " set metabelian"); PQ_APG_CUSTOM_OUTPUT( datarec, "group", "group output", ["print allowable subgp standard matrix", "print pres'n of reduced p-covers", "print pres'n of immediate descendants", "print nuclear rank of descendants", "print p-mult'r rank of descendants"] ); PQ_APG_CUSTOM_OUTPUT( datarec, "autgroup", "aut. grp output", ["print commutator matrix", "print aut. grp descriptions of descendants", "print aut. grp orders of descendants"] ); ToPQ(datarec, [ outputfile ], [ " #output filename" ]); end ); ############################################################################# ## #F PqAPGOrbitRepresentatives( : ) . user ver of A p-G menu opt 9 #F PqAPGOrbitRepresentatives(: ) ## ## for the th or default interactive {\ANUPQ} process, direct the `pq' ## binary to process the orbit representatives and output the reduced ## $p$-cover to a file. The options may be any of the following: ## are `PcgsAutomorphisms', `SpaceEfficient', `Exponent', `Metabelian', ## `CapableDescendants' (or `AllDescendants'), `CustomiseOutput' (where only ## the `group' and `autgroup' fields are recognised) and `Filename' (see ## Chapter~"ANUPQ Options" for details). If `Filename' is omitted the ## reduced $p$-cover is written to the file `"redPCover"' in the temporary ## directory whose name is stored in `ANUPQData.tmpdir'. ## ## *Note:* ## For those familiar with the `pq' binary, `PqAPGOrbitRepresentatives' ## performs option 9 of the Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGOrbitRepresentatives, function( arg ) local datarec; PQ_OTHER_OPTS_CHK("PqAPGOrbitRepresentatives", true); datarec := CallFuncList(ANUPQDataRecord, arg); PQ_APG_ORBIT_REPRESENTATIVES( datarec ); end ); ############################################################################# ## #F PQ_APG_ORBIT_REPRESENTATIVE( ) . . . . . . A p-G menu option 10 ## ## inputs data to the `pq' binary for option 10 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PQ_APG_ORBIT_REPRESENTATIVE, function( datarec ) end ); ############################################################################# ## #F PqAPGOrbitRepresentative( ) . . user version of A p-G menu option 10 #F PqAPGOrbitRepresentative() ## ## for the th or default interactive {\ANUPQ} process, inputs data ## to the `pq' binary ## ## *Note:* For those familiar with the `pq' binary, ## `PqAPGOrbitRepresentative' performs option 10 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGOrbitRepresentative, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_APG_ORBIT_REPRESENTATIVE( datarec ); end ); ############################################################################# ## #F PQ_APG_STANDARD_MATRIX_LABEL( ) . . . . . A p-G menu option 11 ## ## inputs data to the `pq' binary for option 11 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PQ_APG_STANDARD_MATRIX_LABEL, function( datarec ) end ); ############################################################################# ## #F PqAPGStandardMatrixLabel( ) . . user version of A p-G menu option 11 #F PqAPGStandardMatrixLabel() ## ## for the th or default interactive {\ANUPQ} process, inputs data ## to the `pq' binary ## ## *Note:* For those familiar with the `pq' binary, ## `PqAPGStandardMatrixLabel' performs option 11 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGStandardMatrixLabel, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_APG_STANDARD_MATRIX_LABEL( datarec ); end ); ############################################################################# ## #F PQ_APG_MATRIX_OF_LABEL( ) . . . . . . . . A p-G menu option 12 ## ## inputs data to the `pq' binary for option 12 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PQ_APG_MATRIX_OF_LABEL, function( datarec ) end ); ############################################################################# ## #F PqAPGMatrixOfLabel( ) . . . . . user version of A p-G menu option 12 #F PqAPGMatrixOfLabel() ## ## for the th or default interactive {\ANUPQ} process, inputs data ## to the `pq' binary ## ## *Note:* For those familiar with the `pq' binary, ## `PqAPGMatrixOfLabel' performs option 12 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGMatrixOfLabel, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_APG_MATRIX_OF_LABEL( datarec ); end ); ############################################################################# ## #F PQ_APG_IMAGE_OF_ALLOWABLE_SUBGROUP( ) . . A p-G menu option 13 ## ## inputs data to the `pq' binary for option 13 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PQ_APG_IMAGE_OF_ALLOWABLE_SUBGROUP, function( datarec ) end ); ############################################################################# ## #F PqAPGImageOfAllowableSubgroup( ) user version of A p-G menu option 13 #F PqAPGImageOfAllowableSubgroup() ## ## for the th or default interactive {\ANUPQ} process, inputs data ## to the `pq' binary ## ## *Note:* For those familiar with the `pq' binary, ## `PqAPGImageOfAllowableSubgroup' performs option 13 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGImageOfAllowableSubgroup, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_APG_IMAGE_OF_ALLOWABLE_SUBGROUP( datarec ); end ); ############################################################################# ## #F PQ_APG_RANK_CLOSURE_OF_INITIAL_SEGMENT( ) A p-G menu option 14 ## ## inputs data to the `pq' binary for option 14 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PQ_APG_RANK_CLOSURE_OF_INITIAL_SEGMENT, function( datarec ) end ); ############################################################################# ## #F PqAPGRankClosureOfInitialSegment( ) user version of A p-G menu option 14 #F PqAPGRankClosureOfInitialSegment() ## ## for the th or default interactive {\ANUPQ} process, inputs data ## to the `pq' binary ## ## *Note:* For those familiar with the `pq' binary, ## `PqAPGRankClosureOfInitialSegment' performs option 14 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGRankClosureOfInitialSegment, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_APG_RANK_CLOSURE_OF_INITIAL_SEGMENT( datarec ); end ); ############################################################################# ## #F PQ_APG_ORBIT_REPRESENTATIVE_OF_LABEL( ) . A p-G menu option 15 ## ## inputs data to the `pq' binary for option 15 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PQ_APG_ORBIT_REPRESENTATIVE_OF_LABEL, function( datarec ) end ); ############################################################################# ## #F PqAPGOrbitRepresentativeOfLabel( ) user version of A p-G menu option 15 #F PqAPGOrbitRepresentativeOfLabel() ## ## for the th or default interactive {\ANUPQ} process, inputs data ## to the `pq' binary ## ## *Note:* For those familiar with the `pq' binary, ## `PqAPGOrbitRepresentativeOfLabel' performs option 15 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGOrbitRepresentativeOfLabel, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_APG_ORBIT_REPRESENTATIVE_OF_LABEL( datarec ); end ); ############################################################################# ## #F PQ_APG_WRITE_COMPACT_DESCRIPTION( ) . . . A p-G menu option 16 ## ## inputs data to the `pq' binary for option 16 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PQ_APG_WRITE_COMPACT_DESCRIPTION, function( datarec ) end ); ############################################################################# ## #F PqAPGWriteCompactDescription( ) user version of A p-G menu option 16 #F PqAPGWriteCompactDescription() ## ## for the th or default interactive {\ANUPQ} process, inputs data ## to the `pq' binary ## ## *Note:* For those familiar with the `pq' binary, ## `PqAPGWriteCompactDescription' performs option 16 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGWriteCompactDescription, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_APG_WRITE_COMPACT_DESCRIPTION( datarec ); end ); ############################################################################# ## #F PQ_APG_AUTOMORPHISM_CLASSES( ) . . . . . . A p-G menu option 17 ## ## inputs data to the `pq' binary for option 17 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PQ_APG_AUTOMORPHISM_CLASSES, function( datarec ) end ); ############################################################################# ## #F PqAPGAutomorphismClasses( ) . . user version of A p-G menu option 17 #F PqAPGAutomorphismClasses() ## ## for the th or default interactive {\ANUPQ} process, inputs data ## to the `pq' binary ## ## *Note:* For those familiar with the `pq' binary, ## `PqAPGAutomorphismClasses' performs option 17 of the ## Advanced $p$-Group Generation menu. ## InstallGlobalFunction( PqAPGAutomorphismClasses, function( arg ) local datarec; datarec := CallFuncList(ANUPQDataRecord, arg); PQ_APG_AUTOMORPHISM_CLASSES( datarec ); end ); #E anupqi.gi . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupqopt.gd000644 000766 000024 00000011371 14355420571 016072 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqopt.gd ANUPQ package Werner Nickel #W Greg Gamble ## ## Declares functions to do with option manipulation. ## #Y Copyright (C) 2001 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #V PQ_FUNCTION . . . . . . . . . internal functions called by user functions ## DeclareGlobalVariable( "PQ_FUNCTION", Concatenation( [ "A record whose fields are (function) names and whose values are\n", "the internal functions called by the functions with those names." ] ) ); ############################################################################# ## #V ANUPQoptions . . . . . . . . . . . . . . . . . . . . admissible options ## DeclareGlobalVariable( "ANUPQoptions", Concatenation( [ "A record of lists of names of admissible ANUPQ options.\n", "Each field is the name of an ANUPQ function and the\n", "corresponding value is the list of names of admissible\n", "for the function." ] ) ); ############################################################################# ## #F AllANUPQoptions() . . . . . . . . lists all options of the ANUPQ package ## DeclareGlobalFunction( "AllANUPQoptions" ); ############################################################################# ## #V ANUPQGlobalOptions . . . . . options that can be set globally by PqStart ## ## A list of the options that `PqStart' can set and thereby make available ## to any function interacting with the {\ANUPQ} process initiated by ## `PqStart'. ## DeclareGlobalVariable( "ANUPQGlobalOptions", Concatenation( [ "A list of the options that PqStart can set and thereby make available\n", "to any function interacting with the ANUPQ process initiated by PqStart." ] ) ); ############################################################################# ## #V ANUPQoptionChecks . . . . . . . . . . . the checks for admissible options ## DeclareGlobalVariable( "ANUPQoptionChecks", Concatenation( [ "A record of lists of names of admissible ANUPQ options.\n", "A record whose fields are the names of admissible ANUPQ options,\n", "and whose values are one-argument functions that return `true' when\n", "given a value that is a valid value for the option, and `false'\n", "otherwise." ] ) ); ############################################################################# ## #V ANUPQoptionTypes . . . . . . the types (in words) for admissible options ## DeclareGlobalVariable( "ANUPQoptionTypes", Concatenation( [ "A record whose fields are the names of admissible ANUPQ options\n", "and whose values are words in angle brackets representing the valid\n", "types of the options." ] ) ); ############################################################################# ## #F PQ_OTHER_OPTS_CHK( , ) . check opts belong to f'n ## DeclareGlobalFunction( "PQ_OTHER_OPTS_CHK" ); ############################################################################# ## #F VALUE_PQ_OPTION( ) . . . . . . . . . enhancement of ValueOption #F VALUE_PQ_OPTION( , ) #F VALUE_PQ_OPTION( , ) #F VALUE_PQ_OPTION( , , ) ## DeclareGlobalFunction( "VALUE_PQ_OPTION" ); ############################################################################# ## #F PQ_OPTION_CHECK(,) . check optns present/setable if nec. ## DeclareGlobalFunction( "PQ_OPTION_CHECK" ); ############################################################################# ## #F PQ_CUSTOMISE_OUTPUT(, , , ) ## DeclareGlobalFunction( "PQ_CUSTOMISE_OUTPUT" ); ############################################################################# ## #F PQ_APG_CUSTOM_OUTPUT(, , , ) ## DeclareGlobalFunction( "PQ_APG_CUSTOM_OUTPUT" ); ############################################################################# ## #F SET_ANUPQ_OPTIONS( , ) . set options from OptionStack ## DeclareGlobalFunction( "SET_ANUPQ_OPTIONS" ); ############################################################################# ## #F ANUPQoptError( , ) . . . . . create an error message ## DeclareGlobalFunction( "ANUPQoptError" ); ############################################################################# ## #F ANUPQextractOptions( , , ) . . . . . extract options ## DeclareGlobalFunction( "ANUPQextractOptions" ); #E anupqopt.gd . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupqxdesc.gd000644 000766 000024 00000004067 14355420571 016402 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqxdesc.gd ANUPQ package Werner Nickel #W Greg Gamble ## ## Declares functions to do recursive development of a descendants tree. ## If ANUPQ is loaded from XGAP the development is seen graphically. ## #Y Copyright (C) 2001 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #O GraphicSheet() . . . . . . . . . . . . . . . . . . . . . dummy operation #O Disc() . . . . . . . . . . . . . . . . . . . . . . . . . dummy operation #O Line() . . . . . . . . . . . . . . . . . . . . . . . . . dummy operation ## ## These dummy operations are declared so that the functions below may be ## defined even for a non-{\XGAP} {\GAP} session, where ## `PqDescendantsTreeCoclassOne' will still work but without displaying the ## tree developed graphically. ## DeclareOperation( "GraphicSheet", [] ); DeclareOperation( "Disc", [] ); DeclareOperation( "Line", [] ); ############################################################################# ## #F PqDescendantsTreeCoclassOne([]) . . . generate a coclass one des. tree ## DeclareGlobalFunction( "PqDescendantsTreeCoclassOne" ); ############################################################################# ## #F PQX_PLACE_NEXT_NODE( , ) . place a node on an XGAP sheet ## DeclareGlobalFunction( "PQX_PLACE_NEXT_NODE" ); ############################################################################# ## #F PQX_MAKE_CONNECTION( , , ) . . join two XGAP sheet nodes ## DeclareGlobalFunction( "PQX_MAKE_CONNECTION" ); ############################################################################# ## #F PQX_RECURSE_DESCENDANTS(,,,) extend des. tree ## DeclareGlobalFunction( "PQX_RECURSE_DESCENDANTS" ); #E anupqxdesc.gd . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anustab.gi000644 000766 000024 00000013724 14355420571 015671 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #A anustab.gi ANUPQ package Eamonn O'Brien #A Werner Nickel ## #Y Copyright 1993-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany #Y Copyright 1993-2001, School of Mathematical Sciences, ANU, Australia ## #W Greg Gamble reformulated the original code as a function and then split #W the original `anustab.g' into the declare/install files anustab.g[di]. ## ## Install file for function to compute the stabiliser of an allowable ## subgroup; description is written to file LINK_output. ## ############################################################################# ## #F PqStabiliserOfAllowableSubgroup( , , , , ## , ) . . compute stabiliser of allowable subgroup ## ## computes stabiliser and writes `LINK_output' output file for the `pq' ## binary. The `LINK_output' file is written to `ANUPQData.tmpdir', but when ## the `pq' binary was started up directly by the user that directory is set ## to the current directory. The argument variables of ## `PqStabiliserOfAllowableSubgroup' are essentially the variables assigned ## to by `GAP_link_via_file.c' in the `pq' source code. ## InstallGlobalFunction( PqStabiliserOfAllowableSubgroup, function( ANUPQglb, F, gens, relativeOrders, ANUPQsize, ANUPQagsize ) local m, n, H, pcgs, aut, NumberAgAutos, i, imgs, NumberGlAutos, p, d, ANUPQMaxDegree, V, elm, baseU, id, baseN, infoLevelAutGrp, LINK_output, soluble, a, mat; # number of generators if Length( ANUPQglb.glAutos ) > 0 then m := Length (ANUPQglb.glAutos[1]); elif Length( ANUPQglb.agAutos ) > 0 then m := Length (ANUPQglb.agAutos[1]); else Error( "Panic: PqStabiliserOfAllowableSubgroup ", "called without automorphisms" ); fi; # get the p-group n := Length (Pcgs(F)); H := F / Subgroup (F, Pcgs(F){[m+1 .. n]}); IsPGroup(H); pcgs := Pcgs(H); # set up automorphism rec aut := rec(); NumberAgAutos := Length (ANUPQglb.agAutos); aut.agAutos := [1..NumberAgAutos]; for i in [1..Length (ANUPQglb.agAutos)] do MakeImmutable( ANUPQglb.genQ[i] ); ConvertToMatrixRep( ANUPQglb.genQ[i], ANUPQglb.F ); imgs := List( ANUPQglb.agAutos[i], x -> PcElementByExponents( pcgs, x ) ); aut.agAutos[i] := PGAutomorphism( H, pcgs, imgs); aut.agAutos[i]!.mat := ANUPQglb.genQ[i]; od; aut.agAutos := Reversed( aut.agAutos ); aut.agOrder := Reversed (relativeOrders); NumberGlAutos := Length( ANUPQglb.glAutos ); aut.glAutos := [1..NumberGlAutos]; for i in [1..NumberGlAutos] do MakeImmutable( ANUPQglb.genQ[i] ); ConvertToMatrixRep( ANUPQglb.genQ[NumberAgAutos + i], ANUPQglb.F ); imgs := List( ANUPQglb.glAutos[i], x -> PcElementByExponents( pcgs, x ) ); aut.glAutos[i] := PGAutomorphism( H, pcgs, imgs); aut.glAutos[i]!.mat := ANUPQglb.genQ[NumberAgAutos+ i]; od; aut.field := ANUPQglb.F; aut.group := H; if ANUPQsize <> fail then aut.size := ANUPQsize; fi; aut.one := IdentityPGAutomorphism( H ); aut.one!.mat := IdentityMat( ANUPQglb.q, aut.field ); # add perm oper p := Size( aut.field ); d := RankPGroup( aut.group ); #compute perm rep having at most this degree ANUPQMaxDegree := 10000; if p^d <= ANUPQMaxDegree or ANUPQsize = fail then V := aut.field^d; if ANUPQsize = fail and p^d > ANUPQMaxDegree then Info(InfoANUPQ + InfoWarning, 1, "no. of elements in vector space V is large (", p^d, ")"); Info(InfoANUPQ + InfoWarning, 1, "... this may take a while, if it succeeds at all!"); fi; elm := AsSet( V ); aut.glOper := []; for i in [1..NumberGlAutos] do a := aut.glAutos[i]; mat := List(a!.baseimgs, x -> ExponentsOfPcElement( pcgs, x ){[1..d]}); mat := mat * One( aut.field ); MakeImmutable( mat ); ConvertToMatrixRep( mat, aut.field ); aut.glOper[i] := Permutation( mat, elm, OnRight ); od; #PrintTo("perms", "aut.glOper := ", aut.glOper,"; \n" ); aut.glOrder := Size( Group( aut.glOper, () ) ); else aut.glOrder := ANUPQsize / Size(ANUPQglb.F)^(ANUPQagsize); fi; Info(InfoANUPQ, 2, "Order of GL subgroup is ", aut.glOrder); Info(InfoANUPQ, 2, "No. of soluble autos is ", Length (aut.agAutos)); # get allowable subgroup and nucleus baseU := gens * One (aut.field); id := IdentityMat( ANUPQglb.q, aut.field); baseN := id{[1..ANUPQglb.r]}; # call stabilizer infoLevelAutGrp := InfoLevel( InfoAutGrp ); if InfoLevel( InfoANUPQ ) >= 2 then SetInfoLevel( InfoAutGrp, 3 ); fi; PGOrbitStabilizer( aut, baseU, baseN, false ); if (Length (aut.glAutos) = 0) then soluble := -1; else soluble := 0; fi; aut.agAutos := Reversed (aut.agAutos); aut.agOrder := Reversed (aut.agOrder); LINK_output := Filename( ANUPQData.tmpdir, "LINK_output" ); PrintTo (LINK_output, soluble); AppendTo (LINK_output, "\n"); AppendTo (LINK_output, Length (aut.agAutos)); AppendTo (LINK_output, "\n"); for i in [1..Length (aut.agOrder)] do AppendTo (LINK_output, aut.agOrder[i]); AppendTo (LINK_output, "\n"); od; AppendTo (LINK_output, Length (aut.agAutos) + Length (aut.glAutos) ); AppendTo (LINK_output, "\n"); for a in aut.agAutos do mat := List( a!.baseimgs, x -> ExponentsOfPcElement( pcgs, x ) ); mat := Flat( mat ); for m in mat do AppendTo (LINK_output, m, " " ); od; AppendTo (LINK_output, "\n"); od; for a in aut.glAutos do mat := List( a!.baseimgs, x -> ExponentsOfPcElement( pcgs, x ) ); mat := Flat( mat ); for m in mat do AppendTo (LINK_output, m, " " ); od; AppendTo (LINK_output, "\n"); od; SetInfoLevel( InfoAutGrp, infoLevelAutGrp ); end ); #E anustab.gi . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupqprop.gd000644 000766 000024 00000001733 14355420571 016251 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqprop.gd ANUPQ package Werner Nickel ## ## ## Declares properties and attributes needed for ANUPQ. ## #Y Copyright (C) 2001 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #F SET_PQ_PROPS_AND_ATTRS( , ) ## DeclareGlobalFunction( "SET_PQ_PROPS_AND_ATTRS" ); ############################################################################# ## #D Declare properties and attributes ## DeclareProperty( "IsCapable", IsGroup ); DeclareAttribute( "NuclearRank", IsGroup ); DeclareAttribute( "MultiplicatorRank", IsGroup ); DeclareAttribute( "ANUPQIdentity", IsGroup ); DeclareAttribute( "ANUPQAutomorphisms", IsGroup ); DeclareProperty( "IsPcgsAutomorphisms", IsGroup ); #E anupqprop.gd . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupqios.gd000644 000766 000024 00000015412 14355420571 016062 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #W anupqios.gd ANUPQ package Greg Gamble ## ## This file declares core functions used with streams. ## #Y Copyright (C) 2001 Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ############################################################################# ## #F PQ_START( , ) . . . open a stream for a pq process ## DeclareGlobalFunction( "PQ_START" ); ############################################################################# ## #F PqStart(, : ) . Initiate interactive ANUPQ session #F PqStart( : ) #F PqStart( : ) #F PqStart( : ) ## DeclareGlobalFunction( "PqStart" ); ############################################################################# ## #F PqQuit( ) . . . . . . . . . . . . . . . . . User version of PQ_QUIT #F PqQuit() ## DeclareGlobalFunction( "PqQuit" ); ############################################################################# ## #F PqQuitAll() . . . . . . . . . . . . Close all interactive ANUPQ sessions ## DeclareGlobalFunction( "PqQuitAll" ); ############################################################################# ## #F ANUPQ_IOINDEX . . . . the number identifying an interactive ANUPQ session ## DeclareGlobalFunction( "ANUPQ_IOINDEX" ); ############################################################################# ## #F ANUPQ_IOINDEX_ARG_CHK . Checks ANUPQ_IOINDEX has the right no. of arg'ts ## DeclareGlobalFunction( "ANUPQ_IOINDEX_ARG_CHK" ); ############################################################################# ## #F ANUPQDataRecord([]) . . . . . . . returns the data record of a process ## DeclareGlobalFunction( "ANUPQDataRecord" ); ############################################################################# ## #F PqProcessIndex( ) . . . . . . . . . . . User version of ANUPQ_IOINDEX #F PqProcessIndex() ## DeclareGlobalFunction( "PqProcessIndex" ); ############################################################################# ## #F PqProcessIndices() . . . . the list of active interactive ANUPQ processes ## DeclareGlobalFunction( "PqProcessIndices" ); ############################################################################# ## #F IsPqProcessAlive( ) . . checks an interactive ANUPQ process iostream #F IsPqProcessAlive() ## DeclareGlobalFunction( "IsPqProcessAlive" ); ############################################################################# ## #V PQ_MENUS . . . . . . . . . . . data describing the menus of the pq binary ## DeclareGlobalVariable( "PQ_MENUS", "A record containing data describing the tree of menus of the pq binary" ); ############################################################################# ## #F PQ_MENU( , ) . . . . . . change/get menu of pq process #F PQ_MENU( ) ## DeclareGlobalFunction( "PQ_MENU" ); ############################################################################# ## #F IS_PQ_PROMPT( ) . . . . checks whether the line is a prompt of pq ## DeclareGlobalFunction( "IS_PQ_PROMPT" ); ############################################################################# ## #F IS_ALL_PQ_LINE( ) . checks whether line is a complete line from pq ## DeclareGlobalFunction( "IS_ALL_PQ_LINE" ); ############################################################################# ## #F PQ_READ_ALL_LINE . . read a line from a stream until a sentinel character ## DeclareGlobalFunction( "PQ_READ_ALL_LINE" ); ############################################################################# ## #F PQ_READ_NEXT_LINE . read complete line from stream but never return fail ## DeclareGlobalFunction( "PQ_READ_NEXT_LINE" ); ############################################################################# ## #F FLUSH_PQ_STREAM_UNTIL(,,,,) ## . . . . . . . . . . . . . . read lines from a stream until a wanted line ## DeclareGlobalFunction( "FLUSH_PQ_STREAM_UNTIL" ); ############################################################################# ## #V PQ_ERROR_EXIT_MESSAGES . . . error messages emitted by the pq before exit ## ## A list of the error messages the `pq' emits just before exiting. ## DeclareGlobalVariable( "PQ_ERROR_EXIT_MESSAGES", "A list of the error messages the pq emits just before exiting" ); ############################################################################# ## #F FILTER_PQ_STREAM_UNTIL_PROMPT( ) ## DeclareGlobalFunction( "FILTER_PQ_STREAM_UNTIL_PROMPT" ); ############################################################################# ## #F ToPQk( , , ) . . . . . . . writes to a pq stream ## DeclareGlobalFunction( "ToPQk" ); ############################################################################# ## #F ToPQ(, , ) . . write to pq (& for iostream flush) ## DeclareGlobalFunction( "ToPQ" ); ############################################################################# ## #F ToPQ_BOOL( , , ) . . . . pass a boolean to pq ## DeclareGlobalFunction( "ToPQ_BOOL" ); ############################################################################# ## #F PqRead( ) . . . primitive read of a single line from ANUPQ iostream #F PqRead() ## DeclareGlobalFunction( "PqRead" ); ############################################################################# ## #F PqReadAll( ) . . . . . read all current output from an ANUPQ iostream #F PqReadAll() ## DeclareGlobalFunction( "PqReadAll" ); ############################################################################# ## #F PqReadUntil( , ) . read from ANUPQ iostream until a cond'n #F PqReadUntil( ) #F PqReadUntil( , , ) #F PqReadUntil( , ) ## DeclareGlobalFunction( "PqReadUntil" ); ############################################################################# ## #F PqWrite( , ) . . . . . . . primitive write to ANUPQ iostream #F PqWrite( ) ## DeclareGlobalFunction( "PqWrite" ); ############################################################################# ## #F ANUPQ_ARG_CHK( , ) . . . . check args of int/non-int fns ## DeclareGlobalFunction( "ANUPQ_ARG_CHK" ); ############################################################################# ## #F PQ_COMPLETE_NONINTERACTIVE_FUNC_CALL( ) ## DeclareGlobalFunction( "PQ_COMPLETE_NONINTERACTIVE_FUNC_CALL" ); ############################################################################# ## #F ToPQLog([]) . . . . . . log or stop logging pq commands to file ## DeclareGlobalFunction( "ToPQLog" ); #E anupqios.gd . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anupq.gd000644 000766 000024 00000011615 14355420571 015350 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #A anupq.gd ANUPQ package Eamonn O'Brien #A & Frank Celler ## ## Declaration file for ``general'' group functions and variables. ## #Y Copyright 1992-1994, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany #Y Copyright 1992-1994, School of Mathematical Sciences, ANU, Australia ## ############################################################################# ## #F ANUPQDirectoryTemporary( ) . . . . . redefine ANUPQ temp directory ## DeclareGlobalFunction( "ANUPQDirectoryTemporary" ); ############################################################################# ## #F ANUPQerrorPq( ) . . . . . . . . . . . . . . . . . report an error ## DeclareGlobalFunction( "ANUPQerrorPq" ); ############################################################################# ## #F ANUPQextractPqArgs( ) . . . . . . . . . . . . . extract arguments ## DeclareGlobalFunction( "ANUPQextractPqArgs" ); ############################################################################# ## #F ANUPQReadOutput . . . . read pq output without affecting global variables ## DeclareGlobalFunction( "ANUPQReadOutput" ); ############################################################################# ## #F PqEpimorphism( : ) . . . . . epimorphism onto p-quotient ## DeclareGlobalFunction( "PqEpimorphism" ); ############################################################################# ## #F Pq( : ) . . . . . . . . . . . . . . . . . . . p-quotient ## DeclareGlobalFunction( "Pq" ); ############################################################################# ## #F PqPCover( : ) . . . . . . p-covering group of p-quotient ## DeclareGlobalFunction( "PqPCover" ); ############################################################################# ## #F PQ_GROUP_FROM_PCP(,) . extract gp from pq pcp file into GAP ## DeclareGlobalFunction( "PQ_GROUP_FROM_PCP" ); ############################################################################# ## #F TRIVIAL_PQ_GROUP(, ) . . . extract gp when trivial into GAP ## DeclareGlobalFunction( "TRIVIAL_PQ_GROUP" ); ############################################################################# ## #F PQ_EPI_OR_PCOVER(:) . p-quotient, its epi. or its p-cover ## DeclareGlobalFunction( "PQ_EPI_OR_PCOVER" ); ############################################################################# ## #F PqRecoverDefinitions( ) . . . . . . . . . . . . . . . . . definitions ## ## This function finds a definition for each generator of the p-group . ## These definitions need not be the same as the ones used by pq. But ## they serve the purpose of defining each generator as a commutator or ## power of earlier ones. This is useful for extending an automorphism that ## is given on a set of minimal generators of . ## DeclareGlobalFunction( "PqRecoverDefinitions" ); ############################################################################# ## #F PqAutomorphism( , ) . . . . . . . . . . . . definitions ## ## Take an automorphism of the preimage and produce the induced automorphism ## of the image of the epimorphism. ## DeclareGlobalFunction( "PqAutomorphism" ); ############################################################################# ## #F PqLeftNormComm( ) . . . . . . . . . . . . . left norm commutator ## DeclareGlobalFunction( "PqLeftNormComm" ); ############################################################################# ## #F PqParseWord( , ) . . . . . . . . . . . . parse word through GAP #F PqParseWord( , ) ## DeclareGlobalFunction( "PqGAPRelators" ); ############################################################################# ## #F PqParseWord( , ) . . . . . . . . . . . . parse word through GAP ## DeclareGlobalFunction( "PqParseWord" ); ############################################################################# ## #F PQ_EVALUATE( ) . . . . . . . . . evaluate a string emulating GAP ## DeclareGlobalFunction( "PQ_EVALUATE" ); ############################################################################# ## #F PqExample() . . . . . . . . . . execute a pq example or display the index #F PqExample( [, PqStart] ) ## DeclareGlobalFunction( "PqExample" ); ############################################################################# ## #F AllPqExamples() . . . . . . . . . . list the names of all ANUPQ examples ## DeclareGlobalFunction( "AllPqExamples" ); ############################################################################# ## #F GrepPqExamples( ) . . . . . . . grep ANUPQ examples for a string ## DeclareGlobalFunction( "GrepPqExamples" ); #E anupq.gd . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/anusp.gd000644 000766 000024 00000004607 14355420571 015355 0ustar00mhornstaff000000 000000 ############################################################################# #### ## #A anusp.gd ANUPQ package Eamonn O'Brien #A Alice Niemeyer ## #Y Copyright 1993-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany #Y Copyright 1993-2001, School of Mathematical Sciences, ANU, Australia ## ############################################################################# ## #F ANUPQSPerror( ) . . . . . . . . . . . . report illegal parameter ## DeclareGlobalFunction( "ANUPQSPerror" ); ############################################################################# ## #F ANUPQSPextractArgs( ) . . . . . . . . . . . . parse argument list ## DeclareGlobalFunction( "ANUPQSPextractArgs" ); ############################################################################# ## #F PqFpGroupPcGroup( ) . . . . . . corresponding fp group of a pc group #O FpGroupPcGroup( ) ## DeclareGlobalFunction( "PqFpGroupPcGroup" ); DeclareOperation( "FpGroupPcGroup", [ IsPcGroup ] ); ############################################################################# ## #F PQ_EPIMORPHISM_STANDARD_PRESENTATION( ) . (epi. onto) SP for group #F EpimorphismPqStandardPresentation( ) . . . epi. onto SP for p-group #M EpimorphismStandardPresentation( ) . . . . . epi. onto SP for p-group #M EpimorphismStandardPresentation( [] ) ## DeclareGlobalFunction( "PQ_EPIMORPHISM_STANDARD_PRESENTATION" ); DeclareGlobalFunction( "EpimorphismPqStandardPresentation" ); DeclareOperation( "EpimorphismStandardPresentation", [IsObject] ); ############################################################################# ## #F PqStandardPresentation( : ) . . . . . . . SP for p-group #M StandardPresentation( ) . . . . . . . . . . . . . . . SP for p-group #M StandardPresentation( [] ) ## DeclareGlobalFunction( "PqStandardPresentation" ); DeclareOperation( "StandardPresentation", [IsObject] ); ############################################################################# ## #F IsPqIsomorphicPGroup( , ) . . . . . . . . . . . isomorphism test #O IsIsomorphicPGroup( , ) ## DeclareGlobalFunction( "IsPqIsomorphicPGroup" ); DeclareOperation( "IsIsomorphicPGroup", [IsPcGroup, IsPcGroup] ); #E anusp.gd . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here anupq-3.3.0/lib/filter.g000644 000766 000024 00000003142 14355420571 015341 0ustar00mhornstaff000000 000000 ## ## this file contains procedures which can be used to construct ## using p-group generation a list of those groups which satisfy ## the particular property encoded in the procedure GoodGroup ## ## Eamonn O'Brien ## ANU September 1992 ####################################################################### ## ## current definition of good group ## ## those groups which have abundance at most k ## IsGoodGroup := function (H) local NCl, Desired, O, facs, p, m, n, e, k; O := Size (H); facs := Flat (Collected (FactorsInt (O))); p := facs[1]; m := facs[2]; n := Int (m / 2); e := m - n * 2; k := 0; Desired := n * (p^2 - 1) + p^e + k * (p - 1) * (p^2 - 1); Print ("Desired number of classes is ", Desired, "\n"); NCl := Length (ConjugacyClasses (H)); Print ("The number of classes is ", NCl, "\n"); return NCl <= Desired; end; #IsGoodGroup #impose some properties on the descendants GoodDescendants := function (G) local Good, L, H; L := PqDescendants (G, "AllDescendants", "PcgsAutomorphisms"); Print ("There are a total of ", Length (L), " immediate descendants\n"); Good := []; for H in L do if IsGoodGroup (H) then Print ("We have found a good group\n"); Add (Good, H); fi; od; return Good; end; #GoodDescendants #generate the groups which are GoodGroups GenerateGoodGroups := function (G) local L, H, Good; L := GoodDescendants (G); for H in L do Good := GoodDescendants (H); if Good <> [] then Append (L, Good); fi; od; return L; end; #GenerateGoodGroups anupq-3.3.0/examples/Pq-ni000644 000766 000024 00000001100 14355420571 015653 0ustar00mhornstaff000000 000000 #Example: "Pq-ni" . . . based on manual example illustrating `Pq' usage #(demonstrates the alternative ways of passing options non-interactively) #vars: F, a, b, R, H, rels; #options: F := FreeGroup("a", "b"); a := F.1; b := F.2; rels := [ "a^25", "[b, a, a]", "b^5" ]; R := PqGAPRelators(F, rels); H := F / R; ## This demonstrates how the options may be passed as a record argument Pq( H, rec( Prime := 5, ClassBound := 5, Metabelian := true ) ); ## This demonstrates how the options may be passed as additional arguments Pq( H, "Prime", 5, "ClassBound", 5, "Metabelian" ); anupq-3.3.0/examples/PqSupplementInnerAutomorphisms000644 000766 000024 00000000770 14355420571 023127 0ustar00mhornstaff000000 000000 #Example: "PqSupplementInnerAutomorphisms" . . . based on manual example #Illustrates `PqSupplementInnerAutomorphisms' usage #vars: Q, procId, des, S, A; #options: #alt: do #procId := PqStart( FreeGroup(2) ); #alt: sub for Q := Pq( FreeGroup(2) : Prime := 3, ClassBound := 1 ); #alt: do #PqSetPQuotientToGroup( procId );; #alt: sub for des := PqDescendants( Q : StepSize := 1 ); S := PqSupplementInnerAutomorphisms( des[3] ); A := AutomorphismGroupPGroup( des[3] ); anupq-3.3.0/examples/5gp-c-Rel-i000644 000766 000024 00000001136 14355420571 016561 0ustar00mhornstaff000000 000000 #Example: "5gp-c-Rel-i" . . . based on: examples/keyword_5gp #vars: F, rels, procId; #options: OutputLevel, ClassBound F := FreeGroup("a", "b", "c", "d"); rels := ["[a, b, b, c]", "(a * b * c^d * a)^25", "(a * b)^25 * [a, c, c, d]^-2"]; procId := PqStart(F : Prime := 5, Relators := rels); #comment: set a different `ClassBound' by supplying #comment: also set a different print level by supplying #sub for <2> if set and ok PqPcPresentation(procId : ClassBound := 2, #sub for <1> if set and ok OutputLevel := 1);; anupq-3.3.0/examples/3gp-PG-x-i000644 000766 000024 00000004140 14355420571 016366 0ustar00mhornstaff000000 000000 #Example: "3gp-PG-x-i" . . . based on example from Werner #Iterated descendants example #vars: F, procId; #options: OutputLevel F := FreeGroup("a", "b"); procId := PqStart(F : Prime := 3); #comment: set a different print level by supplying PqPcPresentation(procId : ClassBound := 1, #sub for <1> if set and ok OutputLevel := 1);; PqComputePCover(procId);; PqPGSupplyAutomorphisms(procId, [ [[1,1], [0,1]], [[0,1], [1,0]] ]);; PqPGExtendAutomorphisms(procId);; PqPGConstructDescendants(procId : ClassBound := 2, CapableDescendants, BasicAlgorithm); PqPGSetDescendantToPcp(procId, 2, 5); PqPGExtendAutomorphisms(procId);; PqPGConstructDescendants(procId : ClassBound := 3, CapableDescendants, BasicAlgorithm); PqPGSetDescendantToPcp(procId, 3, 2); PqPGExtendAutomorphisms(procId);; PqPGConstructDescendants(procId : ClassBound := 4, CapableDescendants, BasicAlgorithm); PqPGSetDescendantToPcp(procId, 4, 2); PqPGExtendAutomorphisms(procId);; PqPGConstructDescendants(procId : ClassBound := 5, CapableDescendants, BasicAlgorithm); PqPGSetDescendantToPcp(procId, 5, 1); PqPGExtendAutomorphisms(procId);; PqPGConstructDescendants(procId : ClassBound := 6, CapableDescendants, BasicAlgorithm); PqPGSetDescendantToPcp(procId, 6, 1); PqPGExtendAutomorphisms(procId);; PqPGConstructDescendants(procId : ClassBound := 7, CapableDescendants, BasicAlgorithm); PqPGSetDescendantToPcp(procId, 7, 1); PqPGExtendAutomorphisms(procId);; PqPGConstructDescendants(procId : ClassBound := 8, CapableDescendants, BasicAlgorithm); anupq-3.3.0/examples/PqDescendants-2000644 000766 000024 00000001206 14355420571 017571 0ustar00mhornstaff000000 000000 #Example: "PqDescendants-2" . . . based on manual example #(demonstrates `PqDescendants' usage) #We compute all capable descendants of order 27 #of an elementary abelian group of order 9. #vars: F, procId, G, A, des; #options: F := FreeGroup( 2, "g" ); G := PcGroupFpGroup( F / [ F.1^3, F.2^3, Comm(F.1, F.2) ] ); #alt: do #procId := PqStart( G ); #alt: sub for des := PqDescendants( G : OrderBound := 3, ClassBound := 2, CapableDescendants ); List(des, d -> Length( PCentralSeries( d, 3 ) ) - 1 ); ## For comparison let us now compute all descendants PqDescendants( G : OrderBound := 3, ClassBound := 2); anupq-3.3.0/examples/11gp-SP-b-Rel-i000644 000766 000024 00000005137 14355420571 017162 0ustar00mhornstaff000000 000000 #Example: "11gp-SP-b-Rel-i" . . . based on: isom/11gp_b.com #(equivalent to "11gp-SP-b-i" but uses the `Relators' option) #vars: F, rels, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b", "c"); rels := ["a^11", "b^11", "c^11", "[b, a, a, a, b, a]", "[c, a]", "[c, b]", "[b, a, b]"]; procId := PqStart(F : Prime := 11, Relators := rels); #comment: set a different print level by supplying #sub for <0> if set and ok PqSetOutputLevel(procId, 0);; PqSPComputePcpAndPCover(procId : ClassBound := 3);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[1,0,0,0,0], [0,1,0,0,1], [0,0,1,0,0]], [[1,0,0,0,0], [0,1,0,0,0], [0,0,1,0,1]], [[1,0,9,0,0], [0,1,0,0,0], [0,0,1,0,0]], [[1,7,8,0,0], [0,1,0,0,0], [0,0,1,0,0]], [[10,0,0,0,0], [0,1,0,0,0], [0,0,1,0,0]], [[2,0,0,0,0], [0,1,0,0,0], [0,0,1,0,0]], [[1,0,8,0,0], [0,1,3,0,0], [0,0,1,0,0]], [[1,0,9,0,0], [0,1,0,0,0], [0,0,3,0,0]], [[1,0,2,0,0], [0,1,0,0,0], [0,0,10,0,0]], [[1,9,10,0,0], [0,3,7,0,0], [0,0,6,0,0]], [[1,5,9,0,0], [0,7,4,0,0], [0,0,10,0,0]]] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <8> if set ClassBound := 8, PcgsAutomorphisms);; anupq-3.3.0/examples/7gp-SP-Rel-i000644 000766 000024 00000003117 14355420571 016664 0ustar00mhornstaff000000 000000 #Example: "7gp-SP-Rel-i" . . . based on: isom/7gp.com #vars: F, rels, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b"); rels := ["a^7", "b^7 * [b, a, a]^-1", "[b, a, b, b, b, b, b]"]; procId := PqStart(F : Prime := 7, Relators := rels); #comment: set a different print level by supplying #add for if set and ok #PqSetOutputLevel(procId, value);; PqSPComputePcpAndPCover(procId : ClassBound := 3);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[1,0,0,0,1], [0,1,0,0,0]], [[1,0,0,0,0], [0,1,0,0,1]], [[1,0,0,0,0], [0,1,0,0,1]], [[1,0,0,0,0], [6,1,0,0,0]], [[6,0,0,0,0], [2,1,0,0,0]], [[6,0,0,0,0], [0,6,0,0,0]], [[6,0,0,0,0], [4,5,0,0,0]] ] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <10> if set ClassBound := 10, PcgsAutomorphisms);; anupq-3.3.0/examples/PqDescendantsTreeCoclassOne-25-i000644 000766 000024 00000000627 14355420571 022704 0ustar00mhornstaff000000 000000 #Example: "PqDescendantsTreeCoclassOne-25-i" . based on manual example #(demonstrates usage of `PqDescendantsTreeCoclassOne', by generating # all descendants of the elementary abelian group of order 25 of # 5-coclass 1 up to 5-class 15. Most effective in XGAP.) #vars: G, procId; #options: G := ElementaryAbelianGroup( 25 ); procId := PqStart( G ); PqDescendantsTreeCoclassOne( procId : TreeDepth := 15 );; anupq-3.3.0/examples/3gp-PG-4-i000644 000766 000024 00000001616 14355420571 016267 0ustar00mhornstaff000000 000000 #Example: "3gp-PG-4-i" . . . based on: examples/pga_4-3.com #All descendants of C3 x C3 x C3 x C3 #vars: F, procId; #options: OutputLevel F := FreeGroup("a", "b", "c", "d"); procId := PqStart(F : Prime := 3); #comment: set a different print level by supplying PqPcPresentation(procId : ClassBound := 1, #sub for <1> if set and ok OutputLevel := 1);; PqComputePCover(procId);; PqPGSupplyAutomorphisms(procId, [ [[2,0,0,0], [0,1,0,0], [0,0,1,0], [0,0,0,1]], [[2,0,0,1], [2,0,0,0], [0,2,0,0], [0,0,2,0]] ]);; PqPGConstructDescendants(procId : ClassBound := 2, OrderBound := 5);; anupq-3.3.0/examples/2gp-PG-4-i000644 000766 000024 00000001700 14355420571 016260 0ustar00mhornstaff000000 000000 #Example: "2gp-PG-4-i" . . . based on: examples/pga_4-2.com #All descendants of C2 x C2 x C2 x C2 #vars: F, procId; #options: OutputLevel F := FreeGroup("a", "b", "c", "d"); procId := PqStart(F : Prime := 2); #comment: set a different print level by supplying PqPcPresentation(procId : ClassBound := 1, #sub for <1> if set and ok OutputLevel := 1);; PqComputePCover(procId);; PqPGSupplyAutomorphisms(procId, [ [[1,1,0,0], [0,1,0,0], [0,0,1,0], [0,0,0,1]], [[0,0,0,1], [1,0,0,0], [0,1,0,0], [0,0,1,0]] ]);; PqPGConstructDescendants(procId : ClassBound := 4, OrderBound := 8, BasicAlgorithm);; anupq-3.3.0/examples/Pq000644 000766 000024 00000003235 14355420571 015262 0ustar00mhornstaff000000 000000 #Example: "Pq" . . . based on manual example illustrating `Pq' usage #vars: F, a, b, procId1, procId2, procId3, procId4, G, R, H, rels; #options: F := FreeGroup("a", "b"); a := F.1; b := F.2; #alt: do #procId1 := PqStart( F ); #alt: sub for Pq( F : Prime := 2, ClassBound := 3 ); ## Now let us get a p-quotient of an fp group G := F / [a^4, b^4]; #alt: do #procId2 := PqStart( G ); #alt: sub for Pq( G : Prime := 2, ClassBound := 3 ); ## Now let's get a different p-quotient of the same group #alt: sub for Pq( G : Prime := 2, ClassBound := 3, #alt: do # RedoPcp, Exponent := 4 ); ## Now we'll get a p-quotient of another fp group ## which we will redo using the `Relators' option R := [ a^25, Comm(Comm(b, a), a), b^5 ]; H := F / R; #alt: do #procId3 := PqStart( H ); #alt: sub for Pq( H : Prime := 5, ClassBound := 5, Metabelian ); ## Now we redo the previous example using the `Relators' option F := FreeGroup("a", "b"); ## `F' was defined for `Relators'. We use the same strings that GAP uses ## for printing the free group generators. It is *not* necessary to ## predefine: a := F.1; etc. (as it was above). rels := [ "a^25", "[b, a, a]", "b^5" ]; R := PqGAPRelators(F, rels); H := F / R; #alt: sub for Pq( H : Prime := 5, ClassBound := 5, Metabelian, #alt: do # RedoPcp, Relators := rels ); ## Above we could have just passed `F' (rather than `H'): F := FreeGroup("a", "b"); rels := [ "a^25", "[b, a, a]", "b^5" ]; #alt: do #procId4 := PqStart( F ); #alt: sub for Pq( F : Prime := 5, ClassBound := 5, Metabelian, Relators := rels ); anupq-3.3.0/examples/B2-8-i000644 000766 000024 00000001301 14355420571 015530 0ustar00mhornstaff000000 000000 #Example: "B2-8-i" . . . based on: examples/B2-8 #Construction of B(2,8) #vars: F, procId; #options: OutputLevel, ClassBound, OutputFile F := FreeGroup("a", "b"); procId := PqStart(F : Prime := 2, Exponent := 8); #comment: set a different `ClassBound' by supplying #comment: also set a different print level by supplying #sub for <10> if set and ok PqPcPresentation(procId : ClassBound := 10, #sub for <1> if set and ok OutputLevel := 1);; #comment: save the presentation to a different file by supplying #sub for if set and ok PqSavePcPresentation(procId, ANUPQData.outfile);; anupq-3.3.0/examples/11gp-SP-a-i000644 000766 000024 00000003154 14355420571 016436 0ustar00mhornstaff000000 000000 #Example: "11gp-SP-a-i" . . . based on: isom/11gp_a.com #vars: F, a, b, R, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b"); a := F.1; b := F.2; R := [a^11, b^11/PqLeftNormComm([b, a, a])^2, PqLeftNormComm([b, a, b, b, b, b])];; procId := PqStart(F/R : Prime := 11); #comment: set a different print level by supplying #sub for <0> if set and ok PqSetOutputLevel(procId, 0);; PqSPComputePcpAndPCover(procId : ClassBound := 3);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[1,0,0,0,1], [0,1,0,0,0]], [[1,0,0,0,0], [0,1,0,1,0]], [[1,0,0,0,0], [0,1,0,0,1]], [[1,0,0,0,0], [3,1,0,0,0]], [[1,0,0,0,0], [9,3,0,0,0]], [[1,0,0,0,0], [6,6,0,0,0]], [[10,0,0,0,0], [2,1,0,0,0]] ] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <19> if set ClassBound := 19, PcgsAutomorphisms);; anupq-3.3.0/examples/2gp-Rel000644 000766 000024 00000000730 14355420571 016107 0ustar00mhornstaff000000 000000 #Example: "2gp-Rel" . . . based on: examples/2gp #Construction of largest quotient of class 6 of a 2-group #vars: F, procId, rels; #options: OutputLevel F := FreeGroup("a", "b"); rels := [ "[b, a, a]", "(a * b * a)^4"]; #alt: do #procId := PqStart( F ); #comment: set a different print level by supplying #alt: sub for Pq( F : Prime := 2, ClassBound := 6, Relators := rels, #sub for <1> if set and ok OutputLevel := 1 ); anupq-3.3.0/examples/PqDescendants-3000644 000766 000024 00000001244 14355420571 017574 0ustar00mhornstaff000000 000000 #Example: "PqDescendants-3" . . . based on manual example #(demonstrates `PqDescendants' usage) #We compute all capable descendants of order 25 which have #exponent-5 class at most 3, exponent 5 and are metabelian. #vars: F, procId, G, des; #options: F := FreeGroup( 2, "g" ); G := PcGroupFpGroup( F / [ F.1^5, F.2^5, Comm(F.2, F.1) ] ); #alt: do #procId := PqStart( G ); #alt: sub for des := PqDescendants( G : Metabelian, ClassBound := 3, Exponent := 5, CapableDescendants ); List(des, d -> Length( PCentralSeries( d, 5 ) ) - 1 ); List(des, d -> Length( DerivedSeries( d ) ) ); List(des, d -> Maximum( List( Elements(d), Order ) ) ); anupq-3.3.0/examples/5gp-SP-b-Rel-i000644 000766 000024 00000003140 14355420571 017075 0ustar00mhornstaff000000 000000 #Example: "5gp-SP-b-Rel-i" . . . based on: isom/5gp_b #vars: F, rels, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b"); rels := ["a^25", "[b, a, a]", "[b, a, a, a, a, a, b]", "[b, a, b, b, b, b]", "b^5 * [b, a, a]^-1"]; procId := PqStart(F : Prime := 5, Relators := rels); #comment: set a different print level by supplying #add for if set and ok #PqSetOutputLevel(procId, value);; PqSPComputePcpAndPCover(procId : ClassBound := 2);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[1,0,0,1], [0,1,0,0]], [[1,0,0,0], [0,1,0,1]], [[1,3,0,0], [0,1,0,0]], [[1,3,0,0], [0,4,0,0]], [[1,2,0,0], [0,3,0,0]], [[4,0,0,0], [0,1,0,0]], [[3,0,0,0], [0,1,0,0]] ] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <27> if set ClassBound := 27, PcgsAutomorphisms);; anupq-3.3.0/examples/5gp-PG-i000644 000766 000024 00000001352 14355420571 016125 0ustar00mhornstaff000000 000000 #Example: "5gp-PG-i" . . . based on: examples/pga_5gp #Descendants of C5 x C5 #vars: F, procId; #options: OutputLevel F := FreeGroup("a", "b"); procId := PqStart(F : Prime := 5); #comment: set a different print level by supplying PqPcPresentation(procId : ClassBound := 1, #sub for <1> if set and ok OutputLevel := 1);; PqComputePCover(procId);; PqPGSupplyAutomorphisms(procId, [ [[2,0], [0,1]], [[4,1], [4,0]] ]);; PqPGConstructDescendants(procId : ClassBound := 2, StepSize := 2, RankInitialSegmentSubgroups := 4);; anupq-3.3.0/examples/5gp-a-Rel-i000644 000766 000024 00000002072 14355420571 016557 0ustar00mhornstaff000000 000000 #Example: "5gp-a-Rel-i" . . . based on: examples/5gpA #vars: F, rels, procId; #options: OutputLevel, OutputFile F := FreeGroup("a", "b"); rels := ["a^5", "b^5", "(a * b)^5", "(a * b^2)^5", "(a * b^-2)^5", "(a * b^-1)^5", "(a^2 * b)^5", "(a^2 * b^2)^5", "(a^2 * b^-2)^5", "(a^2 * b^-1)^5", "(a * b * a^-1 * b^2)^5", "(a * b * a^2 * b^-1)^5", "(a * b * a^2 * b^2)^5", "(a * b * a * b^-1)^5", "(a * b * a^-1 * b)^5", "(a * b * a^-1 * b^-1)^5"]; procId := PqStart(F : Prime := 5, Relators := rels); #comment: also set a different print level by supplying PqPcPresentation(procId : ClassBound := 5, #sub for <1> if set and ok OutputLevel := 1);; PqNextClass(procId);; #class 6 PqNextClass(procId);; #class 7 PqNextClass(procId);; #class 8 PqNextClass(procId);; #class 9 PqNextClass(procId);; #class 10 #comment: save the presentation to a different file by supplying #sub for if set and ok PqSavePcPresentation(procId, ANUPQData.outfile);; anupq-3.3.0/examples/G5-SP-a-Rel-i000644 000766 000024 00000003043 14355420571 016656 0ustar00mhornstaff000000 000000 #Example: "G5-SP-a-Rel-i" . . . based on: isom/G_5A.com #vars: F, rels, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b"); rels := ["[a, b, b, a]", "[a, b, a]", "b^5"]; procId := PqStart(F : Prime := 5, Relators := rels); #comment: set a different print level by supplying #add for if set and ok #PqSetOutputLevel(procId, value);; PqSPComputePcpAndPCover(procId : ClassBound := 2);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[1,0,0,1], [0,1,0,0]], [[1,0,0,0], [0,1,0,1]], [[1,3,0,0], [0,1,0,0]], [[1,3,0,0], [0,4,0,0]], [[1,2,0,0], [0,3,0,0]], [[4,0,0,0], [0,1,0,0]], [[3,0,0,0], [0,1,0,0]] ] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <10> if set ClassBound := 10, PcgsAutomorphisms);; anupq-3.3.0/examples/B2-5000644 000766 000024 00000000667 14355420571 015315 0ustar00mhornstaff000000 000000 #Example: "B2-5" . . . based on: examples/B2-5 #Construction of B(2,5) #i.e. largest finite 2-generator group of exponent 5 #vars: F, procId; #options: OutputLevel F := FreeGroup("a", "b"); #alt: do #procId := PqStart( F ); #comment: set a different print level by supplying #alt: sub for Pq( F : Prime := 5, ClassBound := 14, Exponent := 5, #sub for <1> if set and ok OutputLevel := 1 ); anupq-3.3.0/examples/7gp-PG-i000644 000766 000024 00000001334 14355420571 016127 0ustar00mhornstaff000000 000000 #Example: "7gp-PG-i" . . . based on: examples/pga_7gp #Descendants of C7 x C7 #vars: F, procId; #options: OutputLevel F := FreeGroup("a", "b"); procId := PqStart(F : Prime := 7); #comment: set a different print level by supplying PqPcPresentation(procId : ClassBound := 1, #sub for <1> if set and ok OutputLevel := 1);; PqComputePCover(procId);; PqPGSupplyAutomorphisms(procId, [ [[3,0], [0,1]], [[6,1], [6,0]] ]);; PqPGConstructDescendants(procId : ClassBound := 2, CapableDescendants, StepSize := 1);; anupq-3.3.0/examples/5gp-maxoccur-Rel-i000644 000766 000024 00000001430 14355420571 020155 0ustar00mhornstaff000000 000000 #Example: "5gp-maxoccur-Rel-i" . . . based on: GrpFP_2_pQuotient6 #Demonstrates usage of `PqSetMaximalOccurrences'. #vars: F, rels, procId, class; #options: OutputLevel, OutputFile F := FreeGroup("a", "b"); rels := ["a^5", "b^5"]; procId := PqStart(F : Prime := 5, Relators := rels); #comment: set a different print level by supplying PqPcPresentation(procId : ClassBound := 1, #sub for <1> if set and ok OutputLevel := 1);; PqSetMaximalOccurrences(procId, [3, 2]);; for class in [2 .. 6] do PqNextClass(procId); od; PqDisplayPcPresentation(procId);; #comment: save the presentation to a different file by supplying #sub for if set and ok PqSavePcPresentation(procId, ANUPQData.outfile);; anupq-3.3.0/examples/11gp-a-Rel-i000644 000766 000024 00000001377 14355420571 016643 0ustar00mhornstaff000000 000000 #Example: "11gp-a-Rel-i" . . . based on: examples/11gpA #vars: F, rels, procId; #options: OutputLevel, ClassBound, OutputFile F := FreeGroup("a", "b"); rels := ["[b, a, a, b, b]^11", "[a, b, b, a, b, b]^11", "(a * b)^11"]; procId := PqStart(F : Prime := 11, Relators := rels); #comment: set a different `ClassBound' by supplying #comment: also set a different print level by supplying #sub for <8> if set and ok PqPcPresentation(procId : ClassBound := 8, #sub for <1> if set and ok OutputLevel := 1);; #comment: save the presentation to a different file by supplying #sub for if set and ok PqSavePcPresentation(procId, ANUPQData.outfile);; anupq-3.3.0/examples/5gp-Rel-i000644 000766 000024 00000001356 14355420571 016345 0ustar00mhornstaff000000 000000 #Example: "5gp-Rel-i" . . . based on: examples/5gp #vars: F, rels, procId; #options: OutputLevel, ClassBound, OutputFile F := FreeGroup("a", "b", "c"); rels := ["a^25 * c", "[a, b] * c^-4", "[a, c]^25"]; procId := PqStart(F : Prime := 5, Relators := rels); #comment: set a different `ClassBound' by supplying #comment: also set a different print level by supplying #sub for <27> if set and ok PqPcPresentation(procId : ClassBound := 27, #sub for <1> if set and ok OutputLevel := 1);; #comment: save the presentation to a different file by supplying #sub for if set and ok PqSavePcPresentation(procId, ANUPQData.outfile);; anupq-3.3.0/examples/3gp-a-Rel-i000644 000766 000024 00000001417 14355420571 016557 0ustar00mhornstaff000000 000000 #Example: "3gp-a-Rel-i" . . . based on: examples/3gpA #(exponent 9 group with 2 generators of order 3) #vars: F, rels, procId; #options: OutputLevel, ClassBound, OutputFile F := FreeGroup("a", "b"); rels := ["a^3", "b^3"]; procId := PqStart(F : Prime := 3, Exponent := 9, Relators := rels); #comment: set a different `ClassBound' by supplying #comment: also set a different print level by supplying #sub for <12> if set and ok PqPcPresentation(procId : ClassBound := 12, #sub for <1> if set and ok OutputLevel := 1);; #comment: save the presentation to a different file by supplying #sub for if set and ok PqSavePcPresentation(procId, ANUPQData.outfile);; anupq-3.3.0/examples/2gp-SP-d-Rel-i000644 000766 000024 00000002220 14355420571 017072 0ustar00mhornstaff000000 000000 #Example: "2gp-SP-d-Rel-i" . . . based on: isom/red1.com #vars: F, rels, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b", "c", "d"); rels := ["b^4", "b^2 * [b, a, a]^-1", "d^16", "a^16 * (c * d)^-1", "b^8 * (d * c^4)^-1", "b * (a^2 * b^-1 * a^2)^-1"]; procId := PqStart(F : Prime := 2, Relators := rels); #comment: set a different print level by supplying #add for if set and ok #PqSetOutputLevel(procId, value);; PqSPComputePcpAndPCover(procId : ClassBound := 1);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[0,1], [1,1]], [[0,1], [1,0]] ] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <10> if set ClassBound := 10, PcgsAutomorphisms);; anupq-3.3.0/examples/PqDescendants-treetraverse-i000644 000766 000024 00000007623 14355420571 022402 0ustar00mhornstaff000000 000000 #Example: "PqDescendants-treetraverse-i" . . . based on manual example #(demonstrates how one may use the p-group generation machinery to # traverse a descendants tree, by exploring the 3-groups of rank 2 # and 3-coclass 1 up to 3-class 5.) #vars: G, procId; #options: G := ElementaryAbelianGroup( 9 ); procId := PqStart( G ); ## ## Below, we use the option StepSize in order to construct descendants ## of coclass 1. This is equivalent to setting the StepSize to 1 in ## each descendant calculation. ## ## The elementary abelian group of order 9 has 3 descendants of ## 3-class 2 and 3-coclass 1, as the result of the next command ## shows. ## PqDescendants( procId : StepSize := 1 ); ## ## Now we will compute the descendants of coclass 1 for each of the ## groups above. Then we will compute the descendants of coclass 1 ## of each descendant and so on. Note that the pq program keeps ## one file for each class at a time. For example, the descendants ## calculation for the second group of class 2 overwrites the ## descendant file obtained from the first group of class 2. ## Hence, we have to traverse the descendants tree in depth first ## order. ## PqPGSetDescendantToPcp( procId, 2, 1 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); PqPGSetDescendantToPcp( procId, 3, 1 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); PqPGSetDescendantToPcp( procId, 4, 1 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); ## ## At this point we stop traversing the ``left most'' branch of the ## descendants tree and move upwards. ## PqPGSetDescendantToPcp( procId, 4, 2 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); PqPGSetDescendantToPcp( procId, 3, 2 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); ## ## The computations above indicate that the descendants subtree under ## the first descendant of the elementary abelian group of order 9 ## will have only one path of infinite length. ## PqPGSetDescendantToPcp( procId, 2, 2 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); ## ## We get four descendants here, three of which will turn out to be ## incapable, i.e., they have no descendants and are terminal nodes ## in the descendants tree. ## PqPGSetDescendantToPcp( procId, 2, 3 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); ## ## The third descendant of class three is incapable. Let us return ## to the second descendant of class 2. ## PqPGSetDescendantToPcp( procId, 2, 2 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); PqPGSetDescendantToPcp( procId, 3, 1 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); PqPGSetDescendantToPcp( procId, 3, 2 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); ## ## We skip the third descendant for the moment ... ## PqPGSetDescendantToPcp( procId, 3, 4 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); ## ## ... and look at it now. ## PqPGSetDescendantToPcp( procId, 3, 3 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); ## ## In this branch of the descendant tree we get 6 descendants of class ## three. Of those 5 will turn out to be incapable and one will have ## 7 descendants. ## PqPGSetDescendantToPcp( procId, 4, 1 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); PqPGSetDescendantToPcp( procId, 4, 2 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); PqPGSetDescendantToPcp( procId, 4, 3 );; PqPGExtendAutomorphisms( procId );; PqPGConstructDescendants( procId : StepSize := 1 ); anupq-3.3.0/examples/2gp-SP-Rel-i000644 000766 000024 00000002067 14355420571 016662 0ustar00mhornstaff000000 000000 #Example: "2gp-SP-Rel-i" . . . based on: isom/2gp #vars: F, rels, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b"); rels := ["a^4", "b^4", "[b, a, a]" ]; procId := PqStart(F : Prime := 2, Relators := rels); #comment: set a different print level by supplying #add for if set and ok #PqSetOutputLevel(procId, value);; PqSPComputePcpAndPCover(procId : ClassBound := 1, OutputLevel := 3);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[0,1], [1,1]], [[0,1], [1,0]] ] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <10> if set ClassBound := 10, PcgsAutomorphisms);; anupq-3.3.0/examples/5gp-SP-d-Rel-i000644 000766 000024 00000003132 14355420571 017100 0ustar00mhornstaff000000 000000 #Example: "5gp-SP-d-Rel-i" . . . based on: isom/5gp_d #vars: F, rels, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b"); rels := ["a^25", "[b, a, a, a, b]", "[b, a, b, b, b]", "[b, a, b, a]", "b^5 * [a, b, a]^-1"]; procId := PqStart(F : Prime := 5, Relators := rels); #comment: set a different print level by supplying #add for if set and ok #PqSetOutputLevel(procId, value);; PqSPComputePcpAndPCover(procId : ClassBound := 2);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[1,0,0,1], [0,1,0,0]], [[1,0,0,0], [0,1,0,1]], [[1,3,0,0], [0,1,0,0]], [[1,3,0,0], [0,4,0,0]], [[1,2,0,0], [0,3,0,0]], [[4,0,0,0], [0,1,0,0]], [[3,0,0,0], [0,1,0,0]] ] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <20> if set ClassBound := 20, PcgsAutomorphisms);; anupq-3.3.0/examples/Nott-SP-Rel-i000644 000766 000024 00000002672 14355420571 017120 0ustar00mhornstaff000000 000000 #Example: "Nott-SP-Rel-i" . . . based on: isom/nott.com #vars: F, rels, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b"); rels := ["a^5", "b^5", "[b, a, b]"]; procId := PqStart(F : Prime := 5, Relators := rels); #comment: set a different print level by supplying #add for if set and ok #PqSetOutputLevel(procId, value);; PqSPComputePcpAndPCover(procId : ClassBound := 3);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[1,0,0,0], [0,1,0,1]], [[1,1,0,0], [0,1,0,0]], [[1,0,0,0], [0,4,0,0]], [[1,0,0,0], [0,2,0,0]], [[4,0,0,0], [0,1,0,0]], [[2,0,0,0], [0,1,0,0]] ] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <10> if set ClassBound := 10, PcgsAutomorphisms);; anupq-3.3.0/examples/B2-4000644 000766 000024 00000000410 14355420571 015276 0ustar00mhornstaff000000 000000 #Example: "B2-4" . . . the ``right'' way to generate B(2, 4) #Generates B(2, 4) by using the `Exponent' option #vars: F, procId; #options: F := FreeGroup("a", "b"); #alt: do #procId := PqStart( F ); #alt: sub for Pq( F : Prime := 2, Exponent := 4 ); anupq-3.3.0/examples/3gp-a-x-Rel-i000644 000766 000024 00000002450 14355420571 017022 0ustar00mhornstaff000000 000000 #Example: "3gp-a-x-Rel-i" . . . based on: examples/3gpA #(exponent 9 group with 2 generators of order 3, extended) #vars: F, rels, procId; #options: OutputLevel1, OutputLevel2, OutputLevel3, OutputFile F := FreeGroup("a", "b"); rels := ["a^3", "b^3"]; procId := PqStart(F : Prime := 3, Exponent := 9, Relators := rels); #comment: set a different print level by supplying PqPcPresentation(procId : ClassBound := 4, #sub for <1> if set and ok OutputLevel := 1);; #comment: set a different print level by supplying #sub for <2> if set and ok PqDisplayPcPresentation(procId : OutputLevel := 2);; PqNextClass(procId);; #comment: set a different print level by supplying #sub for <1> if set and ok PqSetOutputLevel(procId, 1);; PqSetupTablesForNextClass(procId);; PqTails(procId, 0);; PqDoConsistencyChecks(procId, 0, 0);; PqCollectDefiningRelations(procId);; PqDoExponentChecks(procId);; PqEliminateRedundantGenerators(procId);; #sub for <2> if set and ok PqDisplayPcPresentation(procId : OutputLevel := 2);; #comment: save the presentation to a different file by supplying #sub for if set and ok PqSavePcPresentation(procId, ANUPQData.outfile);; anupq-3.3.0/examples/11gp-SP-a-Rel-i000644 000766 000024 00000003211 14355420571 017150 0ustar00mhornstaff000000 000000 #Example: "11gp-SP-a-Rel-i" . . . based on: isom/11gp_a.com #(equivalent to "11gp-SP-a-i" but uses the `Relators' option) #vars: F, rels, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b"); rels := ["a^11", "b^11*[b, a, a]^-2", "[b, a, b, b, b, b]"]; procId := PqStart(F : Prime := 11, Relators := rels); #comment: set a different print level by supplying #sub for <0> if set and ok PqSetOutputLevel(procId, 0);; PqSPComputePcpAndPCover(procId : ClassBound := 3);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[1,0,0,0,1], [0,1,0,0,0]], [[1,0,0,0,0], [0,1,0,1,0]], [[1,0,0,0,0], [0,1,0,0,1]], [[1,0,0,0,0], [3,1,0,0,0]], [[1,0,0,0,0], [9,3,0,0,0]], [[1,0,0,0,0], [6,6,0,0,0]], [[10,0,0,0,0], [2,1,0,0,0]] ] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <19> if set ClassBound := 19, PcgsAutomorphisms);; anupq-3.3.0/examples/5gp-SP-Rel-i000644 000766 000024 00000003045 14355420571 016662 0ustar00mhornstaff000000 000000 #Example: "5gp-SP-Rel-i" . . . based on: isom/5gp #vars: F, rels, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b"); rels := ["a^25", "[b, a, a, a]", "b^5*[b, a, a]^-1"]; procId := PqStart(F : Prime := 5, Relators := rels); #comment: set a different print level by supplying #add for if set and ok #PqSetOutputLevel(procId, value);; PqSPComputePcpAndPCover(procId : ClassBound := 2);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[1,0,0,1], [0,1,0,0]], [[1,0,0,0], [0,1,0,1]], [[1,3,0,0], [0,1,0,0]], [[1,3,0,0], [0,4,0,0]], [[1,2,0,0], [0,3,0,0]], [[4,0,0,0], [0,1,0,0]], [[3,0,0,0], [0,1,0,0]] ] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <10> if set ClassBound := 10, PcgsAutomorphisms);; anupq-3.3.0/examples/EpimorphismStandardPresentation-i000644 000766 000024 00000002454 14355420571 023503 0ustar00mhornstaff000000 000000 #Example: "EpimorphismStandardPresentation-i" . . based on manual example #(demonstrates interactive `EpimorphismStandardPresentation' usage) #vars: F, x, y, z, w, a, b, R, Q, procId, G, phi, lev; #options: F := FreeGroup(6, "F"); ## For printing GAP uses the symbols F1, ... for the generators of F x := F.1; y := F.2; z := F.3; w := F.4; a := F.5; b := F.6; R := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b, Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ]; Q := F / R; procId := PqStart( Q ); G := Pq( procId : Prime := 3, ClassBound := 3 ); lev := InfoLevel(InfoANUPQ); # Save current InfoANUPQ level SetInfoLevel(InfoANUPQ, 2);; # To see computation time data ## It is not necessary to pass the `Prime' option to ## `EpimorphismStandardPresentation' since it was previously ## passed to `Pq': phi := EpimorphismStandardPresentation( procId : ClassBound := 3 ); ## Image of phi should be isomorphic to G ... ## let's check the order is correct: Size( Image(phi) ); ## `StandardPresentation' and `EpimorphismStandardPresentation' ## behave like attributes, so no computation is done when ## either is called again for the same process ... StandardPresentation( procId : ClassBound := 3 ); ## No timing data was Info-ed since no computation was done SetInfoLevel(InfoANUPQ, lev);; # Restore previous InfoANUPQ level anupq-3.3.0/examples/11gp-SP-b-i000644 000766 000024 00000005105 14355420571 016435 0ustar00mhornstaff000000 000000 #Example: "11gp-SP-b-i" . . . based on: isom/11gp_b.com #vars: F, a, b, c, R, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b", "c"); a := F.1; b := F.2; c := F.3; R := [a^11, b^11, c^11, PqLeftNormComm([b, a, a, a, b, a]), Comm(c, a), Comm(c, b), PqLeftNormComm([b, a, b])];; procId := PqStart(F/R : Prime := 11); #comment: set a different print level by supplying #sub for <0> if set and ok PqSetOutputLevel(procId, 0);; PqSPComputePcpAndPCover(procId : ClassBound := 3);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[1,0,0,0,0], [0,1,0,0,1], [0,0,1,0,0]], [[1,0,0,0,0], [0,1,0,0,0], [0,0,1,0,1]], [[1,0,9,0,0], [0,1,0,0,0], [0,0,1,0,0]], [[1,7,8,0,0], [0,1,0,0,0], [0,0,1,0,0]], [[10,0,0,0,0], [0,1,0,0,0], [0,0,1,0,0]], [[2,0,0,0,0], [0,1,0,0,0], [0,0,1,0,0]], [[1,0,8,0,0], [0,1,3,0,0], [0,0,1,0,0]], [[1,0,9,0,0], [0,1,0,0,0], [0,0,3,0,0]], [[1,0,2,0,0], [0,1,0,0,0], [0,0,10,0,0]], [[1,9,10,0,0], [0,3,7,0,0], [0,0,6,0,0]], [[1,5,9,0,0], [0,7,4,0,0], [0,0,10,0,0]]] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <8> if set ClassBound := 8, PcgsAutomorphisms);; anupq-3.3.0/examples/3gp-PG-i000644 000766 000024 00000002157 14355420571 016127 0ustar00mhornstaff000000 000000 #Example: "3gp-PG-i" . . . based on: examples/pga_3gp #All groups with lower exponent-3 series of shape 2-2-3-1 #vars: F, procId; #options: OutputLevel F := FreeGroup("a", "b"); procId := PqStart(F : Prime := 3); #comment: set a different print level by supplying PqPcPresentation(procId : ClassBound := 1, #sub for <1> if set and ok OutputLevel := 1);; PqComputePCover(procId);; PqPGSupplyAutomorphisms(procId, [ [[2,0], [0,2]], [[0,2], [1,0]], [[1,2], [2,2]], [[1,0], [2,1]], [[2,0], [0,1]] ]);; PqPGConstructDescendants(procId : ClassBound := 4, CapableDescendants, StepSize := [2, 3, 1], PcgsAutomorphisms, BasicAlgorithm);; anupq-3.3.0/examples/StandardPresentation-i000644 000766 000024 00000002014 14355420571 021256 0ustar00mhornstaff000000 000000 #Example: "StandardPresentation-i" . . . based on manual example #(demonstrates `StandardPresentation' interactive usage) #vars: F4, a, b, c, d, G4, procId, lev; #options: F4 := FreeGroup( "a", "b", "c", "d" ); a := F4.1; b := F4.2; c := F4.3; d := F4.4; G4 := F4 / [ b^4, b^2 / Comm(Comm (b, a), a), d^16, a^16 / (c * d), b^8 / (d * c^4) ]; procId := PqStart( G4 ); Pq( procId : Prime := 2, ClassBound := 1 ); ## the computed p-quotient is ``remembered'' and supplies the ## `pQuotient' option to `StandardPresentation' ... StandardPresentation( procId : ClassBound := 14 ); ## `StandardPresentation' and `EpimorphismStandardPresentation' ## behave like attributes, so no computation is done when ## either is called again for the same process ... lev := InfoLevel(InfoANUPQ); SetInfoLevel(InfoANUPQ, 2);; # To see computation time EpimorphismStandardPresentation( procId : ClassBound := 14 ); ## No timing data was Info-ed since no computation was done SetInfoLevel(InfoANUPQ, lev);; # Restore previous InfoANUPQ level anupq-3.3.0/examples/2gp-PG-e4-i000644 000766 000024 00000001355 14355420571 016433 0ustar00mhornstaff000000 000000 #Example: "2gp-PG-e4-i" . . . based on: examples/pga_exp4 #All 2-generator exponent 4 2-groups #vars: F, procId; #options: OutputLevel F := FreeGroup("a", "b"); procId := PqStart(F : Prime := 2); #comment: set a different print level by supplying PqPcPresentation(procId : ClassBound := 1, #sub for <1> if set and ok OutputLevel := 1);; PqComputePCover(procId);; PqPGSupplyAutomorphisms(procId, [ [[0,1], [1,1]], [[0,1], [1,0]] ]);; PqPGConstructDescendants(procId : ClassBound := 12, PcgsAutomorphisms, Exponent := 4);; anupq-3.3.0/examples/EpimorphismStandardPresentation000644 000766 000024 00000002403 14355420571 023247 0ustar00mhornstaff000000 000000 #Example: "EpimorphismStandardPresentation" . . . based on manual example #(demonstrates `EpimorphismStandardPresentation' usage) #vars: F, x, y, z, w, a, b, R, Q, procId, G, f1, f2, f3, f4, f5, f6, phi; #options: F := FreeGroup(6, "F"); ## For printing GAP uses the symbols F1, ... for the generators of F x := F.1; y := F.2; z := F.3; w := F.4; a := F.5; b := F.6; R := [x^3 / w, y^3 / w * a^2 * b^2, w^3 / b, Comm (y, x) / z, Comm (z, x), Comm (z, y) / a, z^3 ]; Q := F / R; ## For printing GAP also uses the symbols F1, ... for the generators of Q ## (the same as used for F) ... but the gen'rs of Q and F are different: GeneratorsOfGroup(F) = GeneratorsOfGroup(Q); #alt: do #procId := PqStart( Q ); #alt: sub for G := Pq( Q : Prime := 3, ClassBound := 3 ); #alt: sub for phi := EpimorphismStandardPresentation( Q : Prime := 3, ClassBound := 3 ); Source(phi); # This is the group Q (GAP uses F1, ... for gen'r symbols) Range(phi); # This is the group G (GAP uses f1, ... for gen'r symbols) AssignGeneratorVariables(G);; # so f1, ... are now variables ## Just to see that the images of [F1, ..., F6] do generate G Group([ f1*f2^2*f3, f1*f2*f3*f4*f5^2*f6^2, f3^2, f4, f5, f6 ]) = G; Size( Image(phi) ); anupq-3.3.0/examples/5gp-b-Rel-i000644 000766 000024 00000001063 14355420571 016557 0ustar00mhornstaff000000 000000 #Example: "5gp-b-Rel-i" . . . based on: examples/5gpB #vars: F, rels, procId; #options: OutputLevel, ClassBound F := FreeGroup("x", "y", "z", "w"); rels := ["x^25 * (x^z)^-1", "[x, y] * z^-1", "[x, z]"]; procId := PqStart(F : Prime := 5, Relators := rels); #comment: set a different `ClassBound' by supplying #comment: also set a different print level by supplying #sub for <5> if set and ok PqPcPresentation(procId : ClassBound := 5, #sub for <1> if set and ok OutputLevel := 1);; anupq-3.3.0/examples/7gp-Rel-i000644 000766 000024 00000001371 14355420571 016344 0ustar00mhornstaff000000 000000 #Example: "7gp-Rel-i" . . . based on: examples/7gp #vars: F, rels, procId; #options: OutputLevel, ClassBound, OutputFile F := FreeGroup("a", "b"); rels := ["[b, a, a, b, b]^49", "(a * b * b * a * b * a)^49", "b^7"]; procId := PqStart(F : Prime := 7, Relators := rels); #comment: set a different `ClassBound' by supplying #comment: also set a different print level by supplying #sub for <10> if set and ok PqPcPresentation(procId : ClassBound := 10, #sub for <1> if set and ok OutputLevel := 1);; #comment: save the presentation to a different file by supplying #sub for if set and ok PqSavePcPresentation(procId, ANUPQData.outfile);; anupq-3.3.0/examples/5gp-SP-a-Rel-i000644 000766 000024 00000003057 14355420571 017103 0ustar00mhornstaff000000 000000 #Example: "5gp-SP-a-Rel-i" . . . based on: isom/5gp_a #vars: F, rels, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b"); rels := ["a^25", "[b, a, a]", "[b, a, b, b, b, b]", "b^5"]; procId := PqStart(F : Prime := 5, Relators := rels); #comment: set a different print level by supplying #add for if set and ok #PqSetOutputLevel(procId, value);; PqSPComputePcpAndPCover(procId : ClassBound := 2);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[1,0,0,1], [0,1,0,0]], [[1,0,0,0], [0,1,0,1]], [[1,3,0,0], [0,1,0,0]], [[1,3,0,0], [0,4,0,0]], [[1,2,0,0], [0,3,0,0]], [[4,0,0,0], [0,1,0,0]], [[3,0,0,0], [0,1,0,0]] ] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <27> if set ClassBound := 27, PcgsAutomorphisms);; anupq-3.3.0/examples/2gp-PG-3-i000644 000766 000024 00000001516 14355420571 016264 0ustar00mhornstaff000000 000000 #Example: "2gp-PG-3-i" . . . based on: examples/pga_3-2.com #All descendants of C2 x C2 x C2 #vars: F, procId; #options: OutputLevel F := FreeGroup("a", "b", "c"); procId := PqStart(F : Prime := 2); #comment: set a different print level by supplying PqPcPresentation(procId : ClassBound := 1, #sub for <1> if set and ok OutputLevel := 1);; PqComputePCover(procId);; PqPGSupplyAutomorphisms(procId, [ [[1,1,0], [0,1,0], [0,0,1]], [[0,0,1], [1,0,0], [0,1,0]] ]);; PqPGConstructDescendants(procId : ClassBound := 5, OrderBound := 7, BasicAlgorithm);; anupq-3.3.0/examples/11gp-SP-c-Rel-i000644 000766 000024 00000005105 14355420571 017156 0ustar00mhornstaff000000 000000 #Example: "11gp-SP-c-Rel-i" . . . based on: isom/11gp_c.com #vars: F, rels, procId; #options: OutputLevel, ClassBound, StandardPresentationFile F := FreeGroup("a", "b", "c"); rels := ["a^11", "b^11", "c^11", "[b, a, a, a, b]", "[c, a]", "[c, b]", "[b, a, b]"]; procId := PqStart(F : Prime := 11, Relators := rels); #comment: set a different print level by supplying #add for if set and ok #PqSetOutputLevel(procId, value);; PqSPComputePcpAndPCover(procId : ClassBound := 3);; #comment: set a different `ClassBound' by supplying #comment: also save the presentation to a file by supplying PqSPStandardPresentation(procId, [ [[1,0,0,0,0], [0,1,0,0,1], [0,0,1,0,0]], [[1,0,0,0,0], [0,1,0,0,0], [0,0,1,0,1]], [[1,0,9,0,0], [0,1,0,0,0], [0,0,1,0,0]], [[1,7,8,0,0], [0,1,0,0,0], [0,0,1,0,0]], [[10,0,0,0,0], [0,1,0,0,0], [0,0,1,0,0]], [[2,0,0,0,0], [0,1,0,0,0], [0,0,1,0,0]], [[1,0,8,0,0], [0,1,3,0,0], [0,0,1,0,0]], [[1,0,9,0,0], [0,1,0,0,0], [0,0,3,0,0]], [[1,0,2,0,0], [0,1,0,0,0], [0,0,10,0,0]], [[1,9,10,0,0], [0,3,7,0,0], [0,0,6,0,0]], [[1,5,9,0,0], [0,7,4,0,0], [0,0,10,0,0]]] : # options #add for if set and ok # StandardPresentationFile := value, #sub for <8> if set ClassBound := 8,#for 9 perm.deg.>2^31, pq dies PcgsAutomorphisms);; anupq-3.3.0/examples/B2-5-i000644 000766 000024 00000001301 14355420571 015525 0ustar00mhornstaff000000 000000 #Example: "B2-5-i" . . . based on: examples/B2-5 #Construction of B(2,5) #vars: F, procId; #options: OutputLevel, ClassBound, OutputFile F := FreeGroup("a", "b"); procId := PqStart(F : Prime := 5, Exponent := 5); #comment: set a different `ClassBound' by supplying #comment: also set a different print level by supplying #sub for <15> if set and ok PqPcPresentation(procId : ClassBound := 15, #sub for <1> if set and ok OutputLevel := 1);; #comment: save the presentation to a different file by supplying #sub for if set and ok PqSavePcPresentation(procId, ANUPQData.outfile);; anupq-3.3.0/examples/PqDescendants-1-i000644 000766 000024 00000000652 14355420571 020022 0ustar00mhornstaff000000 000000 #Example: "PqDescendants-1-i" . . . based on manual example #(demonstrates `PqSetPQuotientToGroup' usage) #vars: F, procId, G, des; #options: F := FreeGroup( "a", "b" ); procId := PqStart( F : Prime := 2 ); Pq( procId : ClassBound := 1 ); PqSetPQuotientToGroup( procId );; des := PqDescendants( procId : OrderBound := 6, ClassBound := 5 ); Length(des); List(des, Size); List(des, d -> Length( PCentralSeries( d, 2 ) ) - 1 ); anupq-3.3.0/examples/11gp-3-Engel-Id-i000644 000766 000024 00000001610 14355420571 017415 0ustar00mhornstaff000000 000000 #Example: "11gp-3-Engel-Id-i" . . . 3-Engel grp for prime 11 #Variation of "11gp-3-Engel-Id" broken down into its lower-level component #command parts. #vars: F, a, b, G, f, procId, Q; #options: F := FreeGroup("a", "b"); a := F.1; b := F.2; G := F/[ a^11, b^11 ]; ## All word pairs u, v in the pc generators of the 11-quotient Q of G ## must satisfy the Engel identity: [u, v, v, v] = 1. f := function(u, v) return PqLeftNormComm( [u, v, v, v] ); end; procId := PqStart( G : Prime := 11 ); PqPcPresentation( procId : ClassBound := 1);; PqEvaluateIdentities( procId : Identities := [f] );; for c in [2 .. 4] do PqNextClass( procId : Identities := [] ); #reset `Identities' option PqEvaluateIdentities( procId : Identities := [f] ); od; Q := PqCurrentGroup( procId ); ## We do a ``sample'' check that pairs of elements of Q do satisfy ## the given identity: f( Random(Q), Random(Q) ); f( Q.1, Q.2 ); anupq-3.3.0/examples/B5-5-Engel3-Id000644 000766 000024 00000000747 14355420571 016764 0ustar00mhornstaff000000 000000 #Example: "B5-5-Engel3-Id" . . . Burnside group satisfying 2 identities #Generates largest Burnside group of exponent 5 that also satisfies #a 3-Engel identity. Demonstrates the usage of the `Identities' option. #vars: F, Burnside5, Engel3, procId; #options: F := FreeGroup(2); Burnside5 := x->x^5; Engel3 := function( x,y ) return PqLeftNormComm( [x,y,y,y] ); end; #alt: do #procId := PqStart( F ); #alt: sub for Pq( F : Prime := 5, Identities := [ Burnside5, Engel3 ] ); anupq-3.3.0/examples/Nott-PG-Rel-i000644 000766 000024 00000002756 14355420571 017107 0ustar00mhornstaff000000 000000 #Example: "Nott-PG-Rel-i" . . . based on: examples/pga_nott #Start point for Nottingham group #vars: F, rels, procId; #options: OutputLevel, OutputFile F := FreeGroup("a", "b"); rels := ["a^5", "b^5", "[b, a, b]"]; procId := PqStart(F : Prime := 5, Relators := rels); #comment: set a different print level by supplying PqPcPresentation(procId : ClassBound := 3, #sub for <1> if set and ok OutputLevel := 1);; PqComputePCover(procId);; #comment: save the presentation to a different file by supplying #sub for if set and ok PqSavePcPresentation(procId, ANUPQData.outfile);; PqPGSupplyAutomorphisms(procId, [ [[1,0,0,0], [0,1,0,1]], [[1,1,0,0], [0,1,0,1]], [[1,0,0,0], [0,4,0,0]], [[1,0,0,0], [0,2,0,0]], [[4,0,0,0], [0,1,0,0]], [[2,0,0,0], [0,1,0,0]] ]);; PqPGConstructDescendants(procId : ClassBound := 4, CapableDescendants, StepSize := 1, PcgsAutomorphisms, RankInitialSegmentSubgroups := 4);; anupq-3.3.0/examples/B4-4-a-i000644 000766 000024 00000002011 14355420571 015743 0ustar00mhornstaff000000 000000 #Example: "B4-4-a-i" . . . based on: examples/B4-4A #Construction of B(4,4) #vars: F, procId, class; #options: OutputLevel, OutputFile F := FreeGroup("a", "b", "c", "d"); procId := PqStart(F : Prime := 2, Exponent := 4); #comment: set a different print level by supplying PqPcPresentation(procId : ClassBound := 6, #sub for <1> if set and ok OutputLevel := 1);; PqSupplyAutomorphisms(procId, [ [[0,0,0,1], [1,0,0,0], [0,1,0,0], [0,0,1,0]], [[1,1,0,0], [0,1,0,0], [0,0,1,0], [0,0,0,1]] ]);; for class in [7 .. 11] do PqNextClass(procId : QueueFactor := 20); od; #comment: save the presentation to a different file by supplying #sub for if set and ok PqSavePcPresentation(procId, ANUPQData.outfile);; anupq-3.3.0/examples/PqEpimorphism000644 000766 000024 00000000407 14355420571 017475 0ustar00mhornstaff000000 000000 #Example: "PqEpimorphism" . . . based on `PqEpimorphism' manual example #vars: F, procId, phi; #options: F := FreeGroup (2, "F"); #alt: do #procId := PqStart( F ); #alt: sub for phi := PqEpimorphism( F : Prime := 5, ClassBound := 2 ); Image( phi ); anupq-3.3.0/examples/2gp-a-Rel-i000644 000766 000024 00000001114 14355420571 016550 0ustar00mhornstaff000000 000000 #Example: "2gp-a-Rel-i" . . . based on: examples/keyword_2gp #vars: F, rels, procId; #options: OutputLevel, ClassBound F := FreeGroup(3, "x"); rels := ["x1^x2 * x3", "[x2, x1, x1]", "[x2 * [x2, x1] * x1^2, x1 * x2 ]"]; procId := PqStart(F : Prime := 2, Relators := rels); #comment: set a different `ClassBound' by supplying #comment: also set a different print level by supplying #sub for <3> if set and ok PqPcPresentation(procId : ClassBound := 3, #sub for <1> if set and ok OutputLevel := 1);; anupq-3.3.0/examples/README000644 000766 000024 00000014513 14355420571 015640 0ustar00mhornstaff000000 000000 Here we describe the format of the examples. Firstly, each file *can* be read using `Read', but `PqExample' does a little more (by echoing to the screen) and requires the following: 0. Blank lines are ok, but must consist of only a new-line (and no other white-space. 1. The file can start with any number of commented out lines followed by a line of form: #Example . . . where is the name of the file in a pair of double-quotes and should say something like `based on ...'. This line can be followed by any number of commented out lines followed by: #vars: ; where is a comma (and/or blank) separated list of variables used in the example. Missing one will cause the possible over-writing of a user variable. This line should be no longer than 72 characters. A number of examples have a stating `based on /...' where is `examples' or `isom' which are sub-directories of the `standalone' directory. 2. The next line must be of form: #options: (like 1. except should contain a list of the options of the example that the user can provide, to change the behaviour of the example). 3. Any statement for which GAP does not produce output should terminate with a double-;. `PqExample' tries to emulate a user typing the commands and when executing a line of input displays all the output a user would normally see. A double-; tells `PqExample' not to try to get output from the command on executing it. All statements terminating with a double-; are displayed with a single ;. 4. Comments that you want the user to see should appear after a double-#. On execution/printing of the example the user only sees one #. All other lines beginning with # are special: 5. A line of form: #comment: set a different ... by supplying <...> is ignored when the example is executed but Info-ed at `InfoANUPQ' level 1 when printed as: #I In the next command, you may set a different ... by #I supplying to `PqExample' the option: `...' where the ... is anything in each case but every other word should be something that makes sense in a similarly substituted sentence. The word `supplying' and a pair of angle brackets (<>) enclosing an option *must* be present. 6. A line of form: #sub <