############################################################################# ## ## This file is part of GAP, a system for computational discrete algebra. ## This file's authors include Thomas Breuer. ## ## Copyright of GAP belongs to its developers, whose names are too numerous ## to list here. Please refer to the COPYRIGHT file for details. ## ## SPDX-License-Identifier: GPL-2.0-or-later ## ## This file contains the declaration of operations to calculate ## automorphisms of matrices, #T better in `matrix.gd'? ## e.g., the character matrices of character tables, ## and functions to calculate permutations transforming the rows of a matrix ## to the rows of another matrix. ##
############################################################################# ## #F FamiliesOfRows( <mat>, <maps> ) ## ## <#GAPDoc Label="FamiliesOfRows"> ## <ManSection> ## <Func Name="FamiliesOfRows" Arg='mat, maps'/> ## ## <Description> ## distributes the rows of the matrix <A>mat</A> into families, as follows. ## Two rows of <A>mat</A> belong to the same family if there is ## a permutation of columns that maps one row to the other row. ## Each entry in the list <A>maps</A> is regarded to form a family ## of length 1. ## <P/> ## <Ref Func="FamiliesOfRows"/> returns a record with the components ## <List> ## <Mark><C>famreps</C></Mark> ## <Item> ## the list of representatives for each family, ## </Item> ## <Mark><C>permutations</C></Mark> ## <Item> ## the list that contains at position <M>i</M> a list of permutations ## that map the members of the family with representative ## <C>famreps</C><M>[i]</M> to that representative, ## </Item> ## <Mark><C>families</C></Mark> ## <Item> ## the list that contains at position <M>i</M> the list of positions ## of members of the family of representative <C>famreps</C><M>[i]</M>; ## (for the element <A>maps</A><M>[i]</M> the only member of the family ## will get the number <C>Length( <A>mat</A> ) + </C><M>i</M>). ## </Item> ## </List> ## </Description> ## </ManSection> ## <#/GAPDoc> ##
DeclareGlobalFunction( "FamiliesOfRows" );
############################################################################# ## #O MatrixAutomorphisms( <mat>[, <maps>, <subgroup>] ) ## ## <#GAPDoc Label="MatrixAutomorphisms"> ## <ManSection> ## <Oper Name="MatrixAutomorphisms" Arg='mat[, maps, subgroup]'/> ## ## <Description> ## For a matrix <A>mat</A>, ## <Ref Oper="MatrixAutomorphisms"/> returns the group of those ## permutations of the columns of <A>mat</A> that leave the set of rows of ## <A>mat</A> invariant. ## <P/> ## If the arguments <A>maps</A> and <A>subgroup</A> are given, ## only the group of those permutations is constructed that additionally ## fix each list in the list <A>maps</A> under pointwise action ## <Ref Func="OnTuples"/>, ## and <A>subgroup</A> is a permutation group that is known to be a subgroup ## of this group of automorphisms. ## <P/> ## Each entry in <A>maps</A> must be a list of same length as the rows of ## <A>mat</A>. ## For example, if <A>mat</A> is a list of irreducible characters of a group ## then the list of element orders of the conjugacy classes ## (see <Ref Attr="OrdersClassRepresentatives"/>) may be an entry in ## <A>maps</A>. ## </Description> ## </ManSection> ## <#/GAPDoc> ##
DeclareOperation( "MatrixAutomorphisms", [ IsMatrix ] );
DeclareOperation( "MatrixAutomorphisms", [ IsMatrix, IsList, IsPermGroup ] );
############################################################################# ## #O TableAutomorphisms( <tbl>, <characters>[, <info>] ) ## ## <#GAPDoc Label="TableAutomorphisms"> ## <ManSection> ## <Oper Name="TableAutomorphisms" Arg='tbl, characters[, info]'/> ## ## <Description> ## <Ref Oper="TableAutomorphisms"/> returns the permutation group of those ## matrix automorphisms (see <Ref Oper="MatrixAutomorphisms"/>) of the ## list <A>characters</A> that leave the element orders ## (see <Ref Attr="OrdersClassRepresentatives"/>) ## and all stored power maps (see <Ref Attr="ComputedPowerMaps"/>) ## of the character table <A>tbl</A> invariant. ## <P/> ## If <A>characters</A> is closed under Galois conjugacy ## –this is always fulfilled for the list of all irreducible ## characters of ordinary character tables– the string <C>"closed"</C> ## may be entered as the third argument <A>info</A>. ## Alternatively, a known subgroup of the table automorphisms ## can be entered as the third argument <A>info</A>. ## <P/> ## The attribute <Ref Attr="AutomorphismsOfTable"/> ## can be used to compute and store the table automorphisms for the case ## that <A>characters</A> equals the ## <Ref Attr="Irr" Label="for a character table"/> value of <A>tbl</A>. ## <P/> ## <Example><![CDATA[ ## gap> tbld8:= CharacterTable( "Dihedral", 8 );; ## gap> irrd8:= Irr( tbld8 ); ## [ Character( CharacterTable( "Dihedral(8)" ), [ 1, 1, 1, 1, 1 ] ), ## Character( CharacterTable( "Dihedral(8)" ), [ 1, 1, 1, -1, -1 ] ), ## Character( CharacterTable( "Dihedral(8)" ), [ 1, -1, 1, 1, -1 ] ), ## Character( CharacterTable( "Dihedral(8)" ), [ 1, -1, 1, -1, 1 ] ), ## Character( CharacterTable( "Dihedral(8)" ), [ 2, 0, -2, 0, 0 ] ) ] ## gap> orders:= OrdersClassRepresentatives( tbld8 ); ## [ 1, 4, 2, 2, 2 ] ## gap> MatrixAutomorphisms( irrd8 ); ## Group([ (4,5), (2,4) ]) ## gap> MatrixAutomorphisms( irrd8, [ orders ], Group( () ) ); ## Group([ (4,5) ]) ## gap> TableAutomorphisms( tbld8, irrd8 ); ## Group([ (4,5) ]) ## ]]></Example> ## </Description> ## </ManSection> ## <#/GAPDoc> ##
DeclareOperation( "TableAutomorphisms",
[ IsNearlyCharacterTable, IsList ] );
DeclareOperation( "TableAutomorphisms",
[ IsNearlyCharacterTable, IsList, IsString ] );
DeclareOperation( "TableAutomorphisms",
[ IsNearlyCharacterTable, IsList, IsPermGroup ] ); #T use `AutomorphismsOfTable' for that #T (the distinction stems from the times where attributes were not allowed #T to have non-unary methods!)
############################################################################# ## #O TransformingPermutations( <mat1>, <mat2> ) ## ## <#GAPDoc Label="TransformingPermutations"> ## <ManSection> ## <Oper Name="TransformingPermutations" Arg='mat1, mat2'/> ## ## <Description> ## Let <A>mat1</A> and <A>mat2</A> be matrices. ## <Ref Oper="TransformingPermutations"/> tries to construct ## a permutation <M>\pi</M> that transforms the set of rows of the matrix ## <A>mat1</A> to the set of rows of the matrix <A>mat2</A> ## by permuting the columns. ## <P/> ## If such a permutation exists, ## a record with the components <C>columns</C>, <C>rows</C>, ## and <C>group</C> is returned, otherwise <K>fail</K>. ## For <C>TransformingPermutations( <A>mat1</A>, <A>mat2</A> ) ## = <A>r</A></C> <M>\neq</M> <K>fail</K>, ## we have <C><A>mat2</A> = ## Permuted( List( <A>mat1</A>, x -> Permuted( x, <A>r</A>.columns ) ), ## <A>r</A>.rows )</C>. ## <P/> ## <A>r</A><C>.group</C> is the group of matrix automorphisms of <A>mat2</A> ## (see <Ref Oper="MatrixAutomorphisms"/>). ## This group stabilizes the transformation in the sense that applying any ## of its elements to the columns of <A>mat2</A> ## preserves the set of rows of <A>mat2</A>. ## </Description> ## </ManSection> ## <#/GAPDoc> ##
DeclareOperation( "TransformingPermutations", [ IsMatrix, IsMatrix ] );
############################################################################# ## #O TransformingPermutationsCharacterTables( <tbl1>, <tbl2> ) ## ## <#GAPDoc Label="TransformingPermutationsCharacterTables"> ## <ManSection> ## <Oper Name="TransformingPermutationsCharacterTables" Arg='tbl1, tbl2'/> ## ## <Description> ## Let <A>tbl1</A> and <A>tbl2</A> be character tables. ## <Ref Oper="TransformingPermutationsCharacterTables"/> tries to construct ## a permutation <M>\pi</M> that transforms the set of rows of the matrix ## <C>Irr( <A>tbl1</A> )</C> to the set of rows of the matrix ## <C>Irr( <A>tbl2</A> )</C> by permuting the columns ## (see <Ref Oper="TransformingPermutations"/>), such that ## <M>\pi</M> transforms also the power maps and the element orders. ## <P/> ## If such a permutation <M>\pi</M> exists then a record with the components ## <C>columns</C> (<M>\pi</M>), ## <C>rows</C> (the permutation of <C>Irr( <A>tbl1</A> )</C> corresponding ## to <M>\pi</M>), and <C>group</C> (the permutation group of table ## automorphisms of <A>tbl2</A>, ## see <Ref Attr="AutomorphismsOfTable"/>) is returned. ## If no such permutation exists, <K>fail</K> is returned. ## <P/> ## <Example><![CDATA[ ## gap> tblq8:= CharacterTable( "Quaternionic", 8 );; ## gap> irrq8:= Irr( tblq8 ); ## [ Character( CharacterTable( "Q8" ), [ 1, 1, 1, 1, 1 ] ), ## Character( CharacterTable( "Q8" ), [ 1, 1, 1, -1, -1 ] ), ## Character( CharacterTable( "Q8" ), [ 1, -1, 1, 1, -1 ] ), ## Character( CharacterTable( "Q8" ), [ 1, -1, 1, -1, 1 ] ), ## Character( CharacterTable( "Q8" ), [ 2, 0, -2, 0, 0 ] ) ] ## gap> OrdersClassRepresentatives( tblq8 ); ## [ 1, 4, 2, 4, 4 ] ## gap> TransformingPermutations( irrd8, irrq8 ); ## rec( columns := (), group := Group([ (4,5), (2,4) ]), rows := () ) ## gap> TransformingPermutationsCharacterTables( tbld8, tblq8 ); ## fail ## gap> tbld6:= CharacterTable( "Dihedral", 6 );; ## gap> tbls3:= CharacterTable( "Symmetric", 3 );; ## gap> TransformingPermutationsCharacterTables( tbld6, tbls3 ); ## rec( columns := (2,3), group := Group(()), rows := (1,3,2) ) ## ]]></Example> ## </Description> ## </ManSection> ## <#/GAPDoc> ##
DeclareOperation( "TransformingPermutationsCharacterTables",
[ IsNearlyCharacterTable, IsNearlyCharacterTable ] );
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.