[GAP Forum] Is it possible to step through the program, like GNU GDB debugger, against built-in functions(ex. DerivedSubgroup, ClosureSubgroupNC )?

buynnnmmm1 at yahoo.co.jp buynnnmmm1 at yahoo.co.jp
Thu Sep 18 21:08:49 BST 2014


Dear Alexander Konovalov,


Thank you very much for your help!

> Yes, precisely! This is dynamic polymorphism. The method selected depends on 
> types of all arguments, and objects may change their type during their lifetime.
> 
> For example, if there is a faster algorithm for a group for which it is known 
> that is has some attribute X, you may install a generic method for IsGroup and
> a specific for IsGroup and HasX. Then for a group without X a generic method 
> will be called, while for the group for which X is known a specific method will
> be called. This will not automatically enforce the calculation of X which may 
> be expensive. 
> 
> This may be seen in the method that implements the Feit–Thompson theorem from
> my mail yesterday:
> 
> InstallImmediateMethod( IsSolvableGroup, IsGroup and HasSize, 10,
>    function( G )
>    G:= Size( G );
>    if IsInt( G ) and G mod 2 = 1 then
>      return true;
>    fi;
>    TryNextMethod();
>    end );
> 
> - it will be applied (automatically, since it is *immediate*) only if the Size
> is already known, what is checked with HasSize.

Thank you very much for explanation, I can understand it because your explanation is great.

I am re-createing the myIsSolvable for practice. 

$ grep IsSolvable /usr/share/gap/lib/* | grep Declare

There was codes of IsSolvable family also in "lib/overload.g" and "lib/ctbl.gd".
And,I made a myIsSolvable with the Feit-Thompson theorem. 
But, I do not write the source code here, because It has some bugs.


> You might be interested in the following paper which describes this in more 
> details:
> 
> @inproceedings{Breuer:1998:GTS:281508.281540,
> author = {Breuer, Thomas and Linton, Steve},
> title = {The GAP 4 Type System: Organising Algebraic Algorithms},
> booktitle = {Proceedings of the 1998 International Symposium on Symbolic and 
> Algebraic Computation},
> series = {ISSAC '98},
> year = {1998},
> isbn = {1-58113-002-3},
> location = {Rostock, Germany},
> pages = {38--45},
> numpages = {8},
> url = {http://doi.acm.org/10.1145/281508.281540},
> doi = {10.1145/281508.281540},
> acmid = {281540},
> publisher = {ACM},
> address = {New York, NY, USA},
> }

Thank you very much for this information.


With best regards
buynnnmmm1


----- Original Message -----
> From: Alexander Konovalov <alexk at mcs.st-andrews.ac.uk>
> To: buynnnmmm1 at yahoo.co.jp
> Cc: GAP Forum <forum at gap-system.org>
> Date: 2014/9/18, Thu 19:27
> Subject: Re: [GAP Forum] Is it possible to step through the program, like GNU GDB debugger, against built-in functions(ex. DerivedSubgroup, ClosureSubgroupNC )?
> 
> 
> On 18 Sep 2014, at 02:47, buynnnmmm1 at yahoo.co.jp wrote:
> 
>>  Dear Alexander Konovalov,
>> 
>>  Thank you very much for  your description with some execution examples!
>> 
>>  I tried to run Copy and paste the example of you.It's very interesting.
>> 
>>  I have not read the document you taught me yet, but I understand the point.
>>  I think that is similar to polymorphism of object-oriented programming 
> languages.
> 
> Yes, precisely! This is dynamic polymorphism. The method selected depends on 
> types of all arguments, and objects may change their type during their lifetime.
> 
> For example, if there is a faster algorithm for a group for which it is known 
> that is has some attribute X, you may install a generic method for IsGroup and
> a specific for IsGroup and HasX. Then for a group without X a generic method 
> will be called, while for the group for which X is known a specific method will
> be called. This will not automatically enforce the calculation of X which may 
> be expensive. 
> 
> This may be seen in the method that implements the Feit–Thompson theorem from
> my mail yesterday:
> 
> InstallImmediateMethod( IsSolvableGroup, IsGroup and HasSize, 10,
>    function( G )
>    G:= Size( G );
>    if IsInt( G ) and G mod 2 = 1 then
>      return true;
>    fi;
>    TryNextMethod();
>    end );
> 
> - it will be applied (automatically, since it is *immediate*) only if the Size
> is already known, what is checked with HasSize.
> 
> You might be interested in the following paper which describes this in more 
> details:
> 
> @inproceedings{Breuer:1998:GTS:281508.281540,
> author = {Breuer, Thomas and Linton, Steve},
> title = {The GAP 4 Type System: Organising Algebraic Algorithms},
> booktitle = {Proceedings of the 1998 International Symposium on Symbolic and 
> Algebraic Computation},
> series = {ISSAC '98},
> year = {1998},
> isbn = {1-58113-002-3},
> location = {Rostock, Germany},
> pages = {38--45},
> numpages = {8},
> url = {http://doi.acm.org/10.1145/281508.281540},
> doi = {10.1145/281508.281540},
> acmid = {281540},
> publisher = {ACM},
> address = {New York, NY, USA},
> } 
> 
> Best wishes
> Alexander
> 



More information about the Forum mailing list