The
DISCRETA -
GAP Interface
Abstract:
We describe the commands which are available in the DISCRETA-GAP interface.
The interface is available for both versions of GAP (GAP3 and GAP4).
The two versions differ slightly.
The Basic Concept
The DISCRETA-GAP interface shall combine the general purpose
system for computational group theory GAP with the special purpose system DISCRETA
for constructing t-designs with prescribed automorphism group.
Using this interface, it is possible to combine
the huge functionality of the
command line driven system GAP
with
the efficiency of the plain C++ program DISCRETA.
Most of the code for constructing t-designs is written in DISCRETA (in C++).
Using its Motif interface, the DISCRETA program is easy to use.
However, the idea behind the GAP interface was to make everything
available also from the GAP command prompt.
Most of the functionality and all of the data should be available
for the GAP user.
In GAP, one types in plain commands instead of pressing buttons.
This does not seem attractive at first sight but the variety of
group theoretic functions make GAP a very powerful system.
Secondly, one can use the GAP language to perform small programming tasks
on top of DISCRETA. By this we mean that for example
a loop over all possible values of lambda for solving the equations
is no problem in GAP (it can be a problem in the graphical user interface
if the number of different values of lambda becomes large).
The concept of the GAP interface is the following.
We still have DISCRETA running in compiled C++ code,
but now driven by the GAP command prompt.
This means that one has to learn a lot of commands but
on the other hand one is free to combine those function calls
to new powerful programs. The system works as follows:
we have the DISCRETA code compiled into a batch program (called discreta_batch)
which takes all its input from the command line and writes its result
into files readable for GAP. Sometimes, input files in plain ASCII are
provided for the batch program. The syntax of the arguments for
the batch program is complicated and is of no interest for the end-user.
The discreta batch program collaborates with the GAP part
of the interface, which is simply a collection of GAP routines
forming the other end of the discreta_batch-GAP cooperation.
This set of functions is contained in the file "discreta.g".
The Commands (click on the links for detailed informations):
- Read("discreta.g");
- discreta();
- compose_group(string);
- GeneratorsPermGroup(grp, fname, deg);
- calc_delta_lambda(v, t, k);
- compute_KM(g_label, t, k);
- get_KM_matrix(km, t, k);
- get_generators(km);
- get_vtk(km);
- get_orbit_representatives(km);
- get_stabilizer_orders(km);
- calc_orbit_length(stabilizer_order, gg);
- do_LLL(km, lambda);
- do_LLL1(f_with, KM_fname, c0, beta, p, lambda);
- do_McKay(km, lambda);
- get_solutions_from_solver(km, lambda);
- get_number_of_solutions(km, lambda);
- get_solutions(km, lambda, first, number_of_solutions);
- get_designs(km, lambda, first, number_of_solutions);
- span_design(grp, bb);
- design_orbits(solution_vector);
- check_solutions(km, lambda);
- report(km);
- get_plesken_matrix(km, t, k);
- get_plesken_matrix_with_inverse(km, t, k);
- get_intersection_matrix_Iknn(km, label);
- get_intersection_matrix_Iknm(km, label);
- block_intersection_type(design_orbits, orbit_index, intersection_vector, k_min, k_max, orbit_length);
- block_intersection_type_decomposed(design_orbits, orbit_index, intersection_vector, k_min, k_max, orbit_length);
- action_on_blocks(km, i, perm);
- fuse_orbits(km, group_fname, k);
- fuse_orbits_by_representatives(rep, group_fname, k);
- transversal_of_isomorphism_types(km, lambda);
- write_bb_file(KM_fname, bb_fname, lambda, from, len);
- geo_db_build_from_bb(generators_fname, bb_fname, db_prefix, f_create);
- geo_db_get_ids(db_prefix);
- export_magma_designs(fname, t, v, designs, magma_variable);
- build_incidence_matrix(v, blocks);
- export_designs_inc(fname, v, DD);
back
to the DISCRETA homepage
last updated: July 29, 1999, Evi Haberberger