11.07.2015 Views

Advanced Programming Guide

Advanced Programming Guide

Advanced Programming Guide

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3.6 Interfaces and Implementations • 139> elt, addElt, gens;>> if nargs > 1 then> gens := args[ 2 ]> else> gens := G:-gens> end if;>> if not type( gens, ’{ set, list }’ ) then> error "no generating set specified"> end if;>> if nops( gens ) = 0 then> # trivial group> return { G:-id }> end if;>> addElt := proc( h )> ord := 1 + ord;> elements[ ord ] := h> end proc;>> elements := table();> ord := 0;> addElt( G:-id );>> # Handle the first cyclic subgroup> s := gens[ 1 ];> g := s;> while not G:-eq( g, G:-id ) do> addElt( g );> g := G:-‘.‘( g, s )> end do;> userinfo( 1, ’Dimino’, "finished first cycle; order is:", ord );>> for i from 2 to nops( gens ) do> userinfo( 1, ’Dimino’, "Adding generator number:", i );> s := gens[ i ];> if not G:-member( s, Entries( elements ) ) then> prev_ord := ord;> addElt( s );> for j from 2 to prev_ord do> addElt( G:-‘.‘( elements[ j ], s ) )> end do;> rep_pos := 1 + prev_ord;> do> for s in gens[ 1 .. i ] do> elt := G:-mul( elements[ rep_pos ], s );> if not G:-member( elt, Entries( elements ) ) then> addElt( elt );> for j from 2 to prev_ord do> addElt( G:-‘.‘( elements[ j ], elt ) )> end do> end if

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!