Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  userpref.g   Sprache: unbekannt

 
#############################################################################
##
#W  userpref.g           GAP 4 package AtlasRep                 Thomas Breuer
##
##  This file contains the declarations of the user preferences for the
##  AtlasRep package.
##


#############################################################################
##
#U  AtlasRepAccessRemoteFiles
##
##  <#GAPDoc Label="AtlasRepAccessRemoteFiles">
##  <Subsection Label="subsect:AtlasRepAccessRemoteFiles">
##  <Heading>User preference <C>AtlasRepAccessRemoteFiles</C></Heading>
##  <Index Key="AtlasRepAccessRemoteFiles"><C>AtlasRepAccessRemoteFiles</C></Index>
##  <Index>local access</Index>
##  <Index>remote access</Index>
##
##  The value <K>true</K> (the default) allows the &AtlasRep; package
##  to fetch data files that are not yet locally available.
##  If the value is <K>false</K> then only those data files can be used
##  that are available locally.
##  <P/>
##  If you are working offline then you should set the value to <K>false</K>.
##  <P/>
##  Changing the value in a running &GAP; session does not affect the
##  information shown by <Ref Func="DisplayAtlasInfo"/>,
##  this information depends on the value of the preference at the time
##  when the &AtlasRep; package and its data extensions get loaded.
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "AtlasRepAccessRemoteFiles",
  description:= [
    "The value 'true' (the default) allows the AtlasRep package to fetch \
data files that are not yet locally available.  \
If the value is 'false' then only those data files can be used that are \
available locally.  \
Changing the value in a running GAP session does not affect the \
information shown by 'DisplayAtlasInfo', \
this information depends on the value of the preference at the time \
when the AtlasRep package and its data extensions get loaded."
    ],
  default:= true,
  values:= [ true, false ],
  multi:= false,
  package:= "AtlasRep",
  ) );


#############################################################################
##
#U  AtlasRepDataDirectory
##
##  <#GAPDoc Label="AtlasRepDataDirectory">
##  <Subsection Label="subsect:AtlasRepDataDirectory">
##  <Heading>User preference <C>AtlasRepDataDirectory</C></Heading>
##  <Index Key="AtlasRepDataDirectory"><C>AtlasRepDataDirectory</C></Index>
##
##  The value must be a string that is either empty or the filename of a
##  directory (in the sense of <Ref Func="IsDirectoryPath" BookName="ref"/>)
##  that contains the directories in which downloaded data will be stored.
##  <P/>
##  An empty string means that downloaded data are just kept in the &GAP;
##  session but not saved to local files.
##  <P/>
##  The default depends on the user's permissions for the subdirectories
##  <F>dataext</F>, <F>datagens</F>, <F>dataword</F> of the &AtlasRep;
##  directory:
##  If these directories are writable for the user then the installation path
##  of the &AtlasRep; package (including a trailing slash symbol) is taken.
##  If this is not the case but the currentl &GAP; session is running inside
##  a &Julia; session then a &Julia; scratchspace is taken,
##  otherwise the default is an empty string.
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "AtlasRepDataDirectory",
  description:= [
    "The value must be a string that is either empty or the filename \
of a directory (in the sense of 'IsDirectoryPath') \
that contains the directories in which downloaded data will be stored. \
An empty string means that downloaded data are just kept in the GAP session \
but not saved to local files. \
The default depends on the user's permissions for the subdirectories \
'dataext', 'datagens', 'dataword' of the AtlasRep directory: \
If these directories are writable for the user then the installation path \
of the AtlasRep package (including a trailing slash symbol) is taken. \
If this is not the case but the current GAP session is running inside a \
Julia session then a Julia scratchspace is taken, \
otherwise the default is an empty string."
    ],
  default:= function()
      local val, dir, julia, Scratch, subdir, file;

      # In general, the default of a user preference gets computed
      # also if a value is already stored.
      # (This can be regarded as a bug in the handling of user preferences.)
      # Here we return a stored value without running the computation.
      val:= UserPreference( "AtlasRep", "AtlasRepDataDirectory" );
      if val <> fail then
        return val;
      fi;

      dir:= DirectoriesPackageLibrary( "atlasrep", "" );
      if ForAll( [ "dataext", "datagens", "dataword" ],
                 subdir -> IsWritableFile( Filename( dir, subdir ) ) ) then
        # The package directory is the first default.
        return Filename( dir, "" );
      elif IsPackageLoaded( "JuliaInterface" ) then
        # Create/fetch a Julia scratchspace.
        julia:= ValueGlobal( "Julia" );
        Scratch:= julia.GAP.eval( ValueGlobal( "JuliaEvalString" )(
                      ":(import Scratch; Scratch)" ) );
        val:= julia.GAP.GapObj( Scratch.( "get_scratch!" )( julia.GAP,
                  julia.String( "atlasrep_cache" ) ) );
        if not IsDirectoryPath( val ) then
          # Something went wrong.
          return "";
        fi;

        # Create writable subdirectories if necessary.
        dir:= Directory( val );
        for subdir in [ "datagens", "dataword", "dataext" ] do
          file:= Filename( dir, subdir );
          if not IsDirectoryPath( file ) then
            CreateDir( file );
          fi;
        od;

        return Concatenation( val, "/" );
      else
        return "";
      fi;
    end,
  package:= "AtlasRep",
  check:= function( val )
    if val = "" then
      return true;
    elif not ( IsString( val ) and IsDirectoryPath( val ) ) then
      Info( InfoWarning, 1,
            "the value of the preference 'AtlasRepDataDirectory' must be\n",
            "#W  an empty string or a directory path" );
      return false;
    elif Last( val ) <> '/' then
      Info( InfoWarning, 1,
            "the value of the preference 'AtlasRepDataDirectory' must end ",
            "with '/'" );
      return false;
    elif ForAny( [ "datagens", "dataword", "dataext" ],
             name -> not IsDirectoryPath( Concatenation( val, name ) ) ) then
      Info( InfoWarning, 1,
            "the directory given by the preference ",
            "'AtlasRepDataDirectory'\n",
            "#W  must contain subdirectories 'datagens', 'dataword', ",
            "'dataext'" );
      return false;
    fi;

    return true;
  end,
  ) );


#############################################################################
##
#U  AtlasRepTOCData
##
##  <#GAPDoc Label="AtlasRepTOCData">
##  <Subsection Label="subsect:AtlasRepTOCData">
##  <Heading>User preference <C>AtlasRepTOCData</C></Heading>
##  <Index Key="AtlasRepTOCData"><C>AtlasRepTOCData</C></Index>
##
##  The value must be a list of strings of the form <C>"ID|address"</C>
##  where <C>ID</C> is the id of a part of the database
##  and <C>address</C> is an URL or a file path
##  (as an absolute path or relative to the user's home directory,
##  cf. <Ref Func="Directory" BookName="ref"/>) of a readable
##  JSON format file that contain the table of contents of this part,
##  see <Ref Func="StringOfAtlasTableOfContents"/>.
##  <P/>
##  The default lists four entries:
##  the core database, the data distributed with the &AtlasRep; package,
##  and the data that belong to the packages
##  <Package>MFER</Package> and <Package>CTBlocks</Package>.
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "AtlasRepTOCData",
  description:= [
    "The value must be a list of strings of the form \"<ID>|<address>\" \
where <ID> is the id of a part of the database \
and <address> is an URL or a file path \
(as an absolute path or relative to the user's home directory) of a readable \
JSON format file that contain the table of contents of this part. \
The default lists four entries: \
the core database, the data distributed with the AtlasRep package, \
and the data that belong to the packages MFER and CTBlocks."
    ],
  default:= function()
    local res, file;

    # the two files from the AtlasRep package
    if IsBoundGlobal( "HexSHA256" ) then
      res:= [ Concatenation( "core|",
                  Filename( DirectoriesPackageLibrary( "atlasrep", "" ),
                            "atlasprm_SHA.json" ) ),
              Concatenation( "internal|",
                  Filename( DirectoriesPackageLibrary( "atlasrep", "" ),
                            "datapkg/toc_SHA.json" ) ) ];
    else
      res:= [ Concatenation( "core|",
                  Filename( DirectoriesPackageLibrary( "atlasrep", "" ),
                            "atlasprm.json" ) ),
              Concatenation( "internal|",
                  Filename( DirectoriesPackageLibrary( "atlasrep", "" ),
                            "datapkg/toc.json" ) ) ];
    fi;

    # the MFER file
    if IsBoundGlobal( "HexSHA256" ) then
      file:= Filename( DirectoriesPackageLibrary( "mfer", "" ),
                       "mfertoc_SHA.json" );
      if file <> fail then
        Add( res, Concatenation( "mfer|", file ) );
      else
        Add( res, "mfer|http://www.math.rwth-aachen.de/~mfer/mfertoc_SHA.json" );
      fi;
    else
      file:= Filename( DirectoriesPackageLibrary( "mfer", "" ),
                       "mfertoc.json" );
      if file <> fail then
        Add( res, Concatenation( "mfer|", file ) );
      else
        Add( res, "mfer|http://www.math.rwth-aachen.de/~mfer/mfertoc.json" );
      fi;
    fi;

    # the CTBlocks file
    if IsBoundGlobal( "HexSHA256" ) then
      file:= Filename( DirectoriesPackageLibrary( "ctblocks", "" ),
                       "ctblockstoc_SHA.json" );
      if file <> fail then
        Add( res, Concatenation( "ctblocks|", file ) );
      else
        Add( res, "ctblocks|http://www.math.rwth-aachen.de/~Thomas.Breuer/ctblocks/ctblockstoc_SHA.json" );
      fi;
    else
      file:= Filename( DirectoriesPackageLibrary( "ctblocks", "" ),
                       "ctblockstoc.json" );
      if file <> fail then
        Add( res, Concatenation( "ctblocks|", file ) );
      else
        Add( res, "ctblocks|http://www.math.rwth-aachen.de/~Thomas.Breuer/ctblocks/ctblockstoc.json" );
      fi;
    fi;

    return res;
  end,

  package:= "AtlasRep",
  check:= function( val )
    local ok, entry, suffix;

    ok:= true;
    if not IsList( val ) then
      ok:= false;
    else
      for entry in val do
        if not ( IsString( entry ) and '|' in entry ) then
          ok:= false;
          break;
        else
          suffix:= entry{ [ Position( entry, '|' )+1 .. Length( entry ) ] };
          if not ( StartsWith( suffix, "http" ) or
                   IsReadableFile( suffix ) ) then
            ok:= false;
            break;
          fi;
        fi;
      od;
    fi;
    if not ok then
      Info( InfoWarning, 1,
            "the value of the preference 'AtlasRepTOCData' must be ",
            "a list of strings of the form \"<ID>|<address>\" ",
            "where <address> is an URL or a file path of a readable file" );
      return false;
    fi;

    return true;
  end,
  ) );


#############################################################################
##
#U  CompressDownloadedMeatAxeFiles
##
##  <#GAPDoc Label="CompressDownloadedMeatAxeFiles">
##  <Subsection Label="subsect:CompressDownloadedMeatAxeFiles">
##  <Heading>User preference <C>CompressDownloadedMeatAxeFiles</C></Heading>
##  <Index Key="CompressDownloadedMeatAxeFiles"><C>CompressDownloadedMeatAxeFiles</C></Index>
##
##  <Index Key="compress"><C>compress</C></Index>
##  <Index Key="gzip"><F>gzip</F></Index>
##  When used with UNIX, &GAP; can read <F>gzip</F>ped files,
##  see <Ref Sect="Saving and Loading a Workspace" BookName="ref"/>.
##  If the package's user preference <C>CompressDownloadedMeatAxeFiles</C>
##  has the value <K>true</K>
##  then each &MeatAxe; format text file that is downloaded from the internet
##  is afterwards compressed with <F>gzip</F>.
##  The default value is <K>false</K>.
##  <P/>
##  Compressing files saves a lot of space if many &MeatAxe; format files
##  are accessed.
##  (Note that data files in other formats are very small.)
##  For example, at the time of the release of version 2.0 the core
##  database contained about <M>8\,400</M> data files in &MeatAxe; format,
##  which needed about <M>1\,400</M> MB in uncompressed text format
##  and about <M>275</M> MB in compressed text format.
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "CompressDownloadedMeatAxeFiles",
  description:= [
    "When  used with UNIX, GAP can read 'gzip'ped files.  \
If this preference has the value 'true' then each MeatAxe format text file \
that is downloaded from a remote server \
is afterwards compressed with 'gzip'.  \
The default value is 'false'."
    ],
  default:= false,
  values:= [ true, false ],
  multi:= false,
  package:= "AtlasRep",
  ) );


#############################################################################
##
#U  FileAccessFunctions
##
##  <#GAPDoc Label="FileAccessFunctions">
##  <Subsection Label="subsect:FileAccessFunctions">
##  <Heading>User preference <C>FileAccessFunctions</C></Heading>
##  <Index Key="FileAccessFunctions"><C>FileAccessFunctions</C></Index>
##
##  This preference allows one to customize what actually happens
##  when data are requested by the interface functions:
##  Is it necessary to download some files?
##  If yes then which files are downloaded?
##  If no then which files are actually read into &GAP;?
##  <P/>
##  Currently one can choose among the following features.
##  <P/>
##  <Enum>
##  <Item>
##    Download/read &MeatAxe; text files.
##  </Item>
##  <Item>
##    Prefer downloading/reading &MeatAxe; binary files.
##  </Item>
##  <Item>
##    Prefer reading locally available data files.
##  </Item>
##  </Enum>
##  <P/>
##  (Of course files can be downloaded only if the user preference
##  <C>AtlasRepAccessRemoteFiles</C> has the value <K>true</K>,
##  see Section <Ref Subsect="subsect:AtlasRepAccessRemoteFiles"/>.)
##  <P/>
##  This feature could be used more generally,
##  see Section <Ref Sect="sect:How to Customize the Access to Data files"/>
##  for technical details and the possibility to add other features.
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "FileAccessFunctions",
  description:= [
    "This preference allows one to customize what actually happens \
when data are requested by the interface functions. \
(Of course files can be downloaded only if the user preference \
'AtlasRepAccessRemoteFiles' has the value 'true'.)"
    ],
  default:= [ "download/read MeatAxe text files (default)" ],
  values:= [ "download/read MeatAxe text files (default)",
             "prefer downloading/reading MeatAxe binary files",
#            "prefer downloading/reading GAP format files",
             "prefer reading files available from a local server" ],
  multi:= true,
  package:= "AtlasRep",
  ) );


#############################################################################
##
#U  AtlasRepMarkNonCoreData
##
##  <#GAPDoc Label="AtlasRepMarkNonCoreData">
##  <Subsection Label="subsect:AtlasRepMarkNonCoreData">
##  <Heading>User preference <C>AtlasRepMarkNonCoreData</C></Heading>
##  <Index Key="AtlasRepMarkNonCoreData"><C>AtlasRepMarkNonCoreData</C></Index>
##
##  The value is a string (the default is a star '*')
##  that is used in <Ref Func="DisplayAtlasInfo"/> to mark data that do not
##  belong to the core database,
##  see Section  <Ref Sect="sect:Effect of Private Extensions"/>.
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "AtlasRepMarkNonCoreData",
  description:= [
    "The value is a string (the default is a star '*') \
that is used in 'DisplayAtlasInfo' to mark data that do not \
belong to the core database."
    ],
  default:= "*",
  package:= "AtlasRep",
  check:= IsString,
  ) );


#############################################################################
##
#U  AtlasRepLocalServerPath
##
##  <#GAPDoc Label="AtlasRepLocalServerPath">
##  <Subsection Label="subsect:AtlasRepLocalServerPath">
##  <Heading>User preference <C>AtlasRepLocalServerPath</C></Heading>
##  <Index Key="AtlasRepLocalServerPath"><C>AtlasRepLocalServerPath</C></Index>
##
##  If the data of the core database are available locally
##  (for example because one has access to a local mirror of the data)
##  then one may prefer reading these files instead of downloading data.
##  In order to achieve this, one can set the user preference
##  <C>AtlasRepLocalServerPath</C> and add
##  <C>"direct access to a local server"</C> to the user preference
##  <C>FileAccessFunctions</C>,
##  see Section <Ref Subsect="subsect:FileAccessFunctions"/>.
##  <P/>
##  The value must be a string that is the filename of a directory
##  (in the sense of <Ref Func="IsDirectoryPath" BookName="ref"/>)
##  that contains the data of the &ATLAS; of Group Representations,
##  in the same directory tree structure as on the &ATLAS; server.
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "AtlasRepLocalServerPath",
  description:= [
    "The value must be a string that is the filename of a directory \
(in the sense of 'IsDirectoryPath') \
that contains the data of the Atlas of Group Representations, \
in the same directory tree structure as on the Atlas server. \
This preference needs to be set only if \
\"direct access to a local server\" is an entry in the value of the \
user preference \"FileAccessFunctions\" of the AtlasRep package."
    ],
  default:= "",
  package:= "AtlasRep",
  check:= function( val )
    local name;

    if not ( "direct access to a local server" in
             UserPreference( "AtlasRep", "FileAccessFunctions" ) ) then
      # The value of this user preference is irrelevant.
      return true;
    elif not ( IsString( val ) and IsDirectoryPath( val ) ) then
      Info( InfoWarning, 1,
            "the value of the preference 'AtlasRepLocalServerPath' must be ",
            "a directory path" );
      return false;
    elif val[ Length( val ) ] <> '/' then
      Info( InfoWarning, 1,
            "the value of the preference 'AtlasRepLocalServerPath' must end ",
            "with '/'" );
      return false;
    fi;

    return true;
  end,
  ) );


#############################################################################
##
#U  HowToReadMeatAxeTextFiles
##
##  <#GAPDoc Label="HowToReadMeatAxeTextFiles">
##  <Subsection Label="subsect:HowToReadMeatAxeTextFiles">
##  <Heading>User preference <C>HowToReadMeatAxeTextFiles</C></Heading>
##  <Index Key="HowToReadMeatAxeTextFiles"><C>HowToReadMeatAxeTextFiles</C></Index>
##
##  The value <C>"fast"</C> means that <Ref Func="ScanMeatAxeFile"/> reads
##  text files via <Ref Func="StringFile" BookName="gapdoc"/>.
##  Otherwise each file containing a matrix over a finite field is read
##  line by line via  <Ref Func="ReadLine" BookName="ref"/>,
##  and the &GAP; matrix is constructed line by line,
##  in a compressed representation
##  (see <Ref Sect="Row Vectors over Finite Fields" BookName="ref"/>
##  and <Ref Sect="Matrices over Finite Fields" BookName="ref"/>);
##  this makes it possible to read large matrices in a reasonable amount
##  of space.
##  <P/>
##  The <Ref Func="StringFile" BookName="gapdoc"/> approach is faster
##  but needs more intermediate space when text files containing
##  matrices over finite fields are read.
##  For example, a <M>4\,370</M> by <M>4\,370</M> matrix over the field
##  with two elements
##  (as occurs for an irreducible representation of the Baby Monster)
##  requires less than <M>3</M> MB space in &GAP; but the corresponding
##  &MeatAxe; format text file is more than <M>19</M> MB large.
##  This means that when one reads the file with the fast variant,
##  &GAP; will temporarily grow by more than this value.
##  <P/>
##  Note that this parameter has an effect only when
##  <Ref Func="ScanMeatAxeFile"/> is used.
##  It has no effect for example if &MeatAxe; binary files are read,
##  cf. <Ref Func="FFMatOrPermCMtxBinary"/>.
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "HowToReadMeatAxeTextFiles",
  description:= [
    "The value '\"fast\"' means that 'ScanMeatAxeFile' reads \
MeatAxe text files via 'StringFile'.  \
Otherwise each file containing a matrix over a finite \
field is read line by line via 'ReadLine',  \
and the GAP matrix is constructed line by line, \
in a compressed representation; \
this makes it possible to read large matrices in a reasonable amount of \
space.  \
The 'StringFile' approach is faster but needs more intermediate space \
when text files containing matrices over finite fields are read."
    ],
  default:= "minimizing the space",
  values:= [ "fast", "minimizing the space" ],
  multi:= false,
  package:= "AtlasRep",
  ) );


#############################################################################
##
#U  WriteMeatAxeFilesOfMode2
##
##  <#GAPDoc Label="WriteMeatAxeFilesOfMode2">
##  <Subsection Label="subsect:WriteMeatAxeFilesOfMode2">
##  <Heading>User preference <C>WriteMeatAxeFilesOfMode2</C></Heading>
##  <Index Key="WriteMeatAxeFilesOfMode2"><C>WriteMeatAxeFilesOfMode2</C></Index>
##
##  The value <K>true</K> means that the function <Ref Func="MeatAxeString"/>
##  will encode permutation matrices via mode 2 descriptions, that is,
##  the first entry in the header line is 2, and the following lines contain
##  the positions of the nonzero entries.
##  If the value is <K>false</K> (the default) then
##  <Ref Func="MeatAxeString"/> encodes permutation matrices
##  via mode 1 or mode 6 descriptions, that is,
##  the lines contain the matrix entries.
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "WriteMeatAxeFilesOfMode2",
  description:= [
    "The value 'true' means that the function 'MeatAxeString' \
will encode permutation matrices via mode 2 descriptions, that is, \
the first entry in the header line is 2, and the following lines contain \
the positions of the nonzero entries.  \
If the value is 'false' (the default) then 'MeatAxeString' encodes \
permutation matrices via mode 1 or mode 6 descriptions, that is, \
the lines contain the matrix entries."
    ],
  default:= false,
  values:= [ true, false ],
  multi:= false,
  package:= "AtlasRep",
  ) );


#############################################################################
##
#U  WriteHeaderFormatOfMeatAxeFiles
##
##  <#GAPDoc Label="WriteHeaderFormatOfMeatAxeFiles">
##  <Subsection Label="subsect:WriteHeaderFormatOfMeatAxeFiles">
##  <Heading>User preference <C>WriteHeaderFormatOfMeatAxeFiles</C></Heading>
##  <Index Key="WriteHeaderFormatOfMeatAxeFiles"><C>WriteHeaderFormatOfMeatAxeFiles</C></Index>
##
##  This user preference determines the format of the header lines of
##  &MeatAxe; format strings created by <Ref Func="MeatAxeString"/>,
##  see the <C>C</C>-&MeatAxe; manual <Cite Key="CMeatAxe"/>
##  for details.
##  The following values are supported.
##  <List>
##  <Mark><C>"numeric"</C></Mark>
##  <Item>
##    means that the header line of the returned string
##    consists of four integers
##    (in the case of a matrix these are mode, row number, column number
##    and field size),
##  </Item>
##  <Mark><C>"numeric (fixed)"</C></Mark>
##  <Item>
##    means that the header line of the returned string
##    consists of four integers as in the case <C>"numeric"</C>,
##    but additionally each integer is right aligned in a substring of
##    length (at least) six,
##  </Item>
##  <Mark><C>"textual"</C></Mark>
##  <Item>
##    means that the header line of the returned string
##    consists of assignments such as <C>matrix field=2</C>.
##  </Item>
##  </List>
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "WriteHeaderFormatOfMeatAxeFiles",
  description:= [
    "This user preference determines the format of the header lines of \
MeatAxe format strings created by MeatAxeString, \
see the C-MeatAxe manual for details. \
The following values are supported. \
\"numeric\" means that the header line of the returned string \
consists of four integers \
(in the case of a matrix these are mode, row number, column number \
and field size), \
\"numeric (fixed)\" means that the header line of the returned string \
consists of four integers as in the case \"numeric\", \
but additionally each integer is right aligned in a substring of \
length (at least) six, \
\"textual\" means that the header line of the returned string \
consists of assignments such as \"matrix field=2\"."
    ],
  default:= "numeric",
  values:= [ "numeric", "numeric (fixed)", "textual" ],
  multi:= false,
  package:= "AtlasRep",
  ) );


#############################################################################
##
#U  BaseOfMeatAxePermutation
##
##  <#GAPDoc Label="BaseOfMeatAxePermutation">
##  <Subsection Label="subsect:BaseOfMeatAxePermutation">
##  <Heading>User preference <C>BaseOfMeatAxePermutation</C></Heading>
##  <Index Key="BaseOfMeatAxePermutation"><C>BaseOfMeatAxePermutation</C></Index>
##
##  The value <M>0</M> means that the function
##  <Ref Func="CMtxBinaryFFMatOrPerm"/> writes zero-based permutations,
##  that is, permutations acting on the points from <M>0</M> to the
##  degree minus one; this is achieved by shifting down all images of the
##  &GAP; permutation by one.
##  The value <M>1</M> (the default) means that the permutation stored in the
##  binary file acts on the points from <M>1</M> to the degree.
##  <P/>
##  Up to version 2.3 of the <C>C</C>-&MeatAxe;, permutations in
##  binary files were always one-based.
##  Zero-based permutations were introduced in version 2.4.
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "BaseOfMeatAxePermutation",
  description:= [
    "The value 0 means that the function 'CMtxBinaryFFMatOrPerm' \
writes zero-based permutations, \
that is, permutations acting on the points from 0 to the \
degree minus one; this is achieved by shifting down all images of the \
GAP permutation by one.  \
The value 1 (the default) means that the permutation stored in the \
binary file acts on the points from 1 to the degree."
    ],
  default:= 1,
  values:= [ 0, 1 ],
  multi:= false,
  package:= "AtlasRep",
  ) );


#############################################################################
##
#U  DisplayFunction
##
##  <#GAPDoc Label="DisplayFunction">
##  <Subsection Label="subsect:DisplayFunction">
##  <Heading>User preference <C>DisplayFunction</C></Heading>
##  <Index Key="DisplayFunction"><C>DisplayFunction</C></Index>
##
##  The way how <Ref Func="DisplayAtlasInfo"/>
##  <!-- and <Ref Func="DisplayBlockInvariants" BookName="ctblocks"/> -->
##  shows the requested overview is controlled by the package
##  &AtlasRep;'s user preference <C>DisplayFunction</C>.
##  The value must be a string that evaluates to a &GAP; function.
##  The default value is <C>"Print"</C>
##  (see <Ref Func="Print" BookName="ref"/>),
##  other useful values are <C>"PrintFormattedString"</C>
##  (see <Ref Func="PrintFormattedString" BookName="gapdoc"/>)
##  and <C>"AGR.Pager"</C>;
##  the latter means that <Ref Func="Pager" BookName="ref"/> is called with
##  the <C>formatted</C> option,
##  which is necessary for switching off &GAP;'s automatic line breaking.
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "DisplayFunction",
  description:= [
    "This preference controls the way how 'DisplayAtlasInfo', \
'DisplayBlockInvariants', and \
'DisplayCTblLibInfo' show the requested overview. \
The value must be a string that evaluates to a GAP function. \
The default value is \"Print\", \
other useful values are \"PrintFormattedString\" and \"AGR.Pager\"; \
the latter calls 'Pager' with the 'formatted' option, \
which is necessary for switching off GAP's automatic line breaking."
    ],
  default:= "Print",
  package:= "AtlasRep",
# check:= function( val ) ... end,
#T BrowseData.TryEval could be used to check this more or less safely.
#T Let us wait until the GAP library provides a function for that.
  ) );


#############################################################################
##
#U  DebugFileLoading
##
##  <#GAPDoc Label="DebugFileLoading">
##  <Subsection Label="subsect:DebugFileLoading">
##  <Heading>User preference <C>DebugFileLoading</C></Heading>
##  <Index Key="DebugFileLoading"><C>DebugFileLoading</C></Index>
##
##  If the value is <K>true</K> then debug messages are printed before and
##  after data files get loaded.
##  The default value is <K>false</K>.
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "DebugFileLoading",
  description:= [
    "If the value is 'true' then debug messages are printed before and \
after data files get loaded. \
The default value is 'false'."
    ],
  default:= false,
  values:= [ true, false ],
  multi:= false,
  package:= "AtlasRep",
  ) );


#############################################################################
##
#U  AtlasRepJsonFilesAddresses
##
##  <#GAPDoc Label="AtlasRepJsonFilesAddresses">
##  <Subsection Label="subsect:AtlasRepJsonFilesAddresses">
##  <Heading>User preference <C>AtlasRepJsonFilesAddresses</C></Heading>
##  <Index Key="AtlasRepJsonFilesAddresses"><C>AtlasRepJsonFilesAddresses</C></Index>
##
##  The value, if set, must be a list of length two,
##  the first entry being an URL describing a directory that contains
##  Json format files of the available matrix representations in
##  characteristic zero,
##  and the second being a directory path where these files shall be
##  stored locally.
##  If the value is set (this is the default) then the functions
##  of the package use the Json format files instead of the GAP format files.
##  </Subsection>
##  <#/GAPDoc>
##
DeclareUserPreference( rec(
  name:= "AtlasRepJsonFilesAddresses",
  description:= [
    "The value, if set, must be a list of length two, \
the first entry being an URL describing a directory that contains \
Json format files of the available matrix representations in \
characteristic zero, \
and the second being a directory path where these files shall be \
stored locally.  \
If the value is set (this is the default) then the functions \
of the package use the Json format files instead of the GAP format files."
    ],
  default:= [
    "http://www.math.rwth-aachen.de/~Thomas.Breuer/atlasrep/datachar0",
    Filename( DirectoriesPackageLibrary( "atlasrep", "datagens" ), "" ) ],
  package:= "AtlasRep",
  ) );


#############################################################################
##
#E


[ Dauer der Verarbeitung: 0.65 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge