1#############################################################################
2##
3##                             orb package
4##  search.gd
5##                                                          Juergen Mueller
6##                                                          Max Neunhoeffer
7##                                                             Felix Noeske
8##
9##  Copyright 2005-2008 by the authors.
10##  This file is free software, see license information at the end.
11##
12##  Declaration stuff for searching in groups.
13##
14#############################################################################
15
16# Making lists of random vectors:
17DeclareGlobalFunction( "MakeRandomVectors" );
18DeclareGlobalFunction( "MakeRandomLines" );
19
20
21######################
22# Product replacers: #
23######################
24
25BindGlobal( "ProductReplacersFamily", NewFamily( "ProductReplacersFamily" ) );
26DeclareCategory( "IsProductReplacer", IsComponentObjectRep);
27DeclareGlobalVariable( "ProductReplacersType" );
28
29# The constructors:
30DeclareOperation( "ProductReplacer", [IsList, IsRecord] );
31DeclareOperation( "ProductReplacer", [IsList] );
32DeclareOperation( "ProductReplacer", [IsGroup, IsRecord] );
33DeclareOperation( "ProductReplacer", [IsGroup] );
34
35# Usage:
36DeclareOperation( "Next", [IsProductReplacer] );
37DeclareOperation( "Reset", [IsProductReplacer] );
38DeclareOperation( "AddGeneratorToProductReplacer",
39                  [IsProductReplacer,IsObject] );
40
41
42#####################
43# Random searchers: #
44#####################
45
46BindGlobal( "RandomSearchersFamily", NewFamily( "RandomSearchersFamily" ) );
47DeclareCategory( "IsRandomSearcher", IsComponentObjectRep);
48DeclareGlobalVariable( "RandomSearchersType" );
49
50# The constructors:
51DeclareOperation( "RandomSearcher", [IsList, IsFunction, IsRecord] );
52DeclareOperation( "RandomSearcher", [IsList, IsFunction] );
53
54# Usage:
55DeclareOperation( "Search", [IsRandomSearcher] );
56DeclareOperation( "Reset", [IsRandomSearcher] );
57
58
59###################################################
60# Involution centralisers and the dihedral trick: #
61###################################################
62
63DeclareGlobalFunction( "FindInvolution" );
64DeclareGlobalFunction( "FindCentralisingElementOfInvolution" );
65DeclareGlobalFunction( "FindInvolutionCentraliser" );
66DeclareGlobalFunction( "ReduceNumberOfGeneratorsUsingRecog" );
67
68DeclareGlobalFunction( "ClassMaker" );
69
70
71###########################
72# Finding nice quotients: #
73###########################
74
75DeclareGlobalFunction( "OrbitStatisticOnVectorSpace" );
76DeclareGlobalFunction( "OrbitStatisticOnVectorSpaceLines" );
77
78
79############################################
80# Finding short generators of a subgroup : #
81############################################
82
83DeclareGlobalFunction( "ORB_PowerSet" );
84DeclareGlobalFunction( "ORB_SLPLineFromWord" );
85DeclareOperation( "FindShortGeneratorsOfSubgroup",
86  [ IsGroup, IsGroup, IsObject ] );
87DeclareOperation( "FindShortGeneratorsOfSubgroup", [ IsGroup, IsGroup ] );
88
89
90##############################################################
91# Helpers for permutation characters for certain operations: #
92##############################################################
93
94DeclareGlobalFunction( "NumberFixedVectors" );
95DeclareGlobalFunction( "NumberFixedLines" );
96DeclareGlobalFunction( "SpacesOfFixedLines" );
97
98
99##################################################
100# Helpers for making short SLPs from word lists: #
101##################################################
102
103DeclareGlobalFunction( "SLPForWordList" );
104
105
106#############################################################################
107# A generic way to find stabilizers:
108#############################################################################
109
110DeclareGlobalFunction( "ORB_EstimatePermGroupSize" );
111DeclareGlobalFunction( "ORB_FindStabilizerMC" );
112DeclareGlobalFunction( "ORB_FindNeedleMappers" );
113
114############################################################################
115# A method to find transversals in matrix groups:
116############################################################################
117
118DeclareGlobalFunction( "FindWordsForRightTransversal" );
119DeclareGlobalFunction( "FindWordsForLeftTransversal" );
120
121############################################################################
122# Find transforming matrices:
123############################################################################
124
125DeclareGlobalFunction( "TransformingMatsLSE" );
126DeclareGlobalFunction( "TransformingMats" );
127
128##
129##  This program is free software: you can redistribute it and/or modify
130##  it under the terms of the GNU General Public License as published by
131##  the Free Software Foundation, either version 3 of the License, or
132##  (at your option) any later version.
133##
134##  This program is distributed in the hope that it will be useful,
135##  but WITHOUT ANY WARRANTY; without even the implied warranty of
136##  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
137##  GNU General Public License for more details.
138##
139##  You should have received a copy of the GNU General Public License
140##  along with this program.  If not, see <http://www.gnu.org/licenses/>.
141##
142