ELISA (Extending LIfting Subgroup Algorithms) Authors: Septimiu Crivei, Gabriela Olteanu and Stefan Suteu Szollosi Email addresses: crivei at math.ubbcluj.ro, golteanu at um.es, szollosi at gmail.com Date: 06-11-2006 I. Introduction --------------- ELISA is a collection of functions able to determine some properties of finite abelian (sub)groups, namely those listed at II. As it can be seen, the notions below involve heavily (alongside the obviously required inclusion relation) operations like subgroup intersection and addition. These functions work at the level of readily built subgroup lattice and (in most of the cases) they avoid computing directly with the subgroups (via their elements). The subgroup lattice is regarded instead as a directed graph and the computations are carried out only based on the information retrievable from the constructed subgroup lattice (i.e. the maximal subgroup and minimal supergroup relations). II. List of notions treated, related to a finite abelian group: ---------------------------------------------------------------------------- - direct summand - essential subgroup - superfluous subgroup - coessential subgroup - complement subgroup - closed subgroup - supplement subgroup - coclosed subgroup - closure of a subgroup - coclosure of a subgroup - uniform group - hollow group - extending group - lifting group In the sequel G denotes a finite abelian group, A and B are subgroups of G. III. List of implemented functions: ----------------------------------- III. 1. Helper functions (used in implementation of other functions) * NullIntersectors( G, A ) Returns a list of subgroups of G such that their intersection with A is the trivial subgroup. File: NullIntersectors.g * FullSummands( G, A ) Returns a list of subgroups of G such that their sum with A gives G. File: FullSummands.g III. 2. Functions related to the notions listed at II. * IsDirectSummand( G, A ) Returns true if A is a direct summand of G, false otherwise. File: IsDirectSummand.g * DirectSummands( G ) Returns a list of pairs of the form [[A1, B1], [A2, B2], ..., [An, Bn]], where the subgroups Ai and Bi are pairwise direct summands of G, i = 1..n If one wants to get a simple list of all direct summands (for example to visualize them in XGAP), can proceed as follows: ------- gap> ds := DirectSummands(G);; gap> Union(ds{[1..Size(ds)]}[1], ds{[1..Size(ds)]}[2]); ------- File: DirectSummands.g * IsUniform( G ) Returns true if G is uniform, false otherwise. Note: Using this function one can check also if G is hollow, since in the case of a finite abelian group G, G is uniform iff G is hollow. File: IsUniform.g * IsEssential( G, A ) Returns true if A is an essential subgroup of G, false otherwise. File: IsEssential.g * EssentialSubgroups( G ) Returns a list of all essential subgroups of G. File: EssentialSubgroups.g * IsSuperfluous( G, A ) Returns true if A is a superfluous subgroup of G, false otherwise. File: IsSuperfluous.g * SuperfluousSubgroups( G ) Returns a list of all superfluous subgroups of G. File: SuperfluousSubgroups.g * IsCoessential( G, A, B ) Returns true if B is a coessential subgroup of A in G, false otherwise. Note: B must be a subgroup of A. File: IsCoessential.g * CoessentialSubgroups( G, A ) Returns a list of all coessential subgroups of A in G. Note: CoessentialSubgroups(G,A) uses the functions SuperfluousSubgroups(G) and FullSummands(G), so these must be loaded first in order for CoessentialSubgroups to work. File: CoessentialSubgroups.g * IsClosed( G, A ) Returns true if A is a closed subgroup in G, false otherwise. Note: One can use this same function for checking if A is closed, complement, coclosed, or supplement. (In case of finite abelian groups the notions of closed, complement, coclosed and supplement are equivalent.) File: IsClosed.g * ClosedSubgroups( G ) Returns a list of all closed subgroups of G. Note: The list returned by this function is also the list of all complement, coclosed and supplement subgroups. File: ClosedSubgroups.g * Complements( G, A ) Returns a list of complement subgroups of A in G. Note: This function uses NullIntersectors( G, A ), so this must be loaded first. File: Complements.g * Supplements( G, A ) Returns a list of supplement subgroups of A in G. Note: This function uses FullSummands( G, A ), so this must be loaded first. File: Supplements.g * Closures( G, A ) Returns a list of closures (in the sense of maximal essential extensions) of A in G. File: Closures.g * Coclosures( G, A ) Returns a list of coclosures of A in G. File: Coclosures.g * IsExtending( G ) Returns true if G is an extending group, false otherwise. Note: This function can be used also for checking whether G is lifting or not, since in the case of finite abelian groups these notions are equivalent. File: IsExtending.g As it can be seen, there are functions requiring other functions to be loaded. For your convenience there is the file named "elisa.g" which contains all the forementioned functions. Read this file in GAP if you plan to use many (or all the) functions. IV. Feedback, bug reports ------------------------- Please note that this is a work in progress and changes or completions might appear in the future. Any feedback, questions or bug reports are welcome; contact szollosi@gmail.com V. License ---------- This collection of functions (ELISA) is distributed under GNU GPL license. Copyright (C) 2006 S. Crivei, G. Olteanu, S. Szollosi This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA