On 16 Sep 2014, at 22:52, buynnnm...@yahoo.co.jp wrote:

> Dear GAP forum,
> 
> Is it possible to set break points against built-in functions (ex. 
> DerivedSubgroup)?  
> 
> Is it possible to step through the program, like GNU GDB debugger, against 
> built-in functions(ex. DerivedSubgroup, ClosureSubgroupNC )?
> 
> Because I am a beginner the group theory , I would to examine in detail what 
> functions are doing in what procedure .
> 
> I check http://www.gap-system.org/Manuals/doc/ref/chap7.html, but I cannot 
> find the function that set break points or step through the function.

No, there is no such functionality, but there are workarounds and alternatives.

First, you can add the line like

Error("Break point some text which you want to display...");

in the code, and then you will be able to investigate local variables from the 
break loop - see http://www.gap-system.org/Manuals/doc/ref/chap6.html

Second, you already know from your previous post how to find the code of the 
function. Since GAP is an interpreted language, you may try to paste the code 
of the function into your session line by line and see what happens. 

Finally, YMMV (your mileage may vary): looking at the method below for 
IsSolvableGroup itself will likely not give an insight into the solvability of 
groups, it will just point to some other procedure: 

> gap> g := SymmetricGroup(5);
> Sym( [ 1 .. 5 ] )
> gap> ApplicableMethod(IsSolvableGroup,[g]);
> function( G ) ... end
> gap> f := last;
> function( G ) ... end
> gap> Print(f);
> function ( G )
>     local  pcgs;
>     pcgs := TryPcgsPermGroup( G, false, false, true );
>     if IsPcgs( pcgs )  then
>         SetIndicesEANormalSteps( pcgs, pcgs!.permpcgsNormalSteps );
>         SetIsPcgsElementaryAbelianSeries( pcgs, true );
>         if not HasPcgs( G )  then
>             SetPcgs( G, pcgs );
>         fi;
>         if not HasPcgsElementaryAbelianSeries( G )  then
>             SetPcgsElementaryAbelianSeries( G, pcgs );
>         fi;
>         return true;
>     else
>         return false;
>     fi;
>     return;
> end


What is does is that it calls TryPcgsPermGroup and then checks if it returns 
the object which is IsPcgs (polycyclic generating system, see 
http://www.gap-system.org/Manuals/doc/ref/chap45.html). If that calculation is 
not successful, the group is not solvable, otherwise it is. Now you may be 
interested to find the (undocumented!) function TryPcgsPermGroup which does the 
actual job, see for any comments in the code, etc. 

Best wishes
Alexander
 



_______________________________________________
Forum mailing list
Forum@mail.gap-system.org
http://mail.gap-system.org/mailman/listinfo/forum

Reply via email to