Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error when calling DTr #98

Open
xHoukakun opened this issue Aug 30, 2024 · 10 comments
Open

Error when calling DTr #98

xHoukakun opened this issue Aug 30, 2024 · 10 comments

Comments

@xHoukakun
Copy link

When i try to call DTr i get the following error message:

Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 1st choice method found for `NullspaceMat' on 1 arguments at /opt/gap-4.13.1/lib/methsel2.g:250 called from
NullspaceMat( matrix ) at /opt/gap-4.13.1/pkg/qpa/lib/functors.gi:152 called from
TransposeOfModule( M ) at /opt/gap-4.13.1/pkg/qpa/lib/functors.gi:327 called from
DTr( i ) at stdin:467 called from
<function "TauModules for a representation of a quiver">( )
called from read-eval loop at stdin:787
type 'quit;' to quit to outer loop

This happens from time to time for no particular reason. Usually after restarting GAP it does not happen again (even when trying it with the same module over the same PathAlgebra).
What sometimes seems to be the reason is the following:
In the first line of my code i have "LoadPackage("QPA");" and then 700 lines of functions are loaded in ( in particular a function that calculates the Auslander Reiten Translate for a list of modules).
When i Load the package myself and then copy in the code after the package is loaded, it seems to work fine.
Every other function seem to be loaded correct.

@sunnyquiver
Copy link
Contributor

I don't think that I can say anything without seeing the code that you are running when these errors occur. Could you please supply the code?

@xHoukakun
Copy link
Author

xHoukakun commented Sep 2, 2024

Error.txt

This is the code that is called before the error appears (I removed everything that is called after the function: TauModules; )
Since it's a rather long and quite involved program.

The reason why i'm doing this is because i didn't found a way to reproduce this error in a systematic way. It seems to appear random. I can run my program and get solutions (keep GAP open) run it the next day with the active session that before had no problems and get this error. Or i start GAP and the function DTr gives me an error, then i restart GAP and it works.
Which makes it a bit weird and hard to figure out what exactly is the reason for the error. There seems to be a hidden dependency on something which is seemingly random.

In this program i calculate all thin modules for a given path algebra and then want to calculate DTr of all those thin modules.

@sunnyquiver
Copy link
Contributor

I have run the code in Error.txt, and I am so far unable to produce any error. When you run it, you also run the code after the function TauModules and then use the functions AllThinModules and TauModules again? If so, what is done after the function TauModules would be relevant. I cannot see any thing wrong in the code, but the CALL_WITH_CATCH function I have no experience with and there is very little documentation (as far as I can see) of this function. So I have no idea what it does. What does that function do?

@xHoukakun
Copy link
Author

xHoukakun commented Sep 2, 2024

Hey this is what i mean with: weird behaviour sometimes it occurs sometimes it doesn't.

Sometimes it occurs when running the code for the first time.
Sometimes it occurs when code has already been ran.
It really is like someone rolls a dice and decides when the code is throwing an error and when it runs without any error.

What my code basically does afterwards is: Calculate Minimal right approximations of those TauModules, with respect to the subcategory generated by thin modules. It then also writes these functions into a .txt file.

I'm afraid i don't really get what you mean by "When you run it, you also run the code after the function TauModules and then use the functions AllThinModules and TauModules again?"
I define every function that i use in my program first and then i run these function and sometimes get an error.
But i sometimes calculate everything and my program is basically finished and then i call TauModules again (without calling AllThinModules) and get an error. So sometimes one can describe it like this:

  1. AllThinModules
  2. TauModules (Works)
  3. Calculates Minimal approximations.
  4. Calculate TauModules again for the same thin Modules get the error.

I cannot emphasize this enough: This occurs really randomly but sometimes an "idle" phase can play a role in it. Sometimes it occurs by first calling the function sometimes it occurs after a bit of run-time. So restarting GAP and trying that exact same Module does not produce this error again which makes it really weird.

About that: CALL_WITH_CATCH function you mentioned, what i've tried there is the following: In other Languages one can call a method with some kind of error handling.
If you look at my program you will notice that this part is where one defines a thin module. This is done by going through every subset of arrows. For a general algebra not every subset defines a module (the relations could be not fitting). This is what i tried to catch there since if the relations aren't fitting it's irrelevant.

I would not try to look very deep into that function because i have this error occuring even before i used this function to calculate thin modules. But i haven't been able to reproduce the error myself so i wasn't sure about posting here. (You could even remove that function completly and just use PathAlgebras). I sometimes get the error with the DTr.

I know this is very frustrating to not have an example when this error occurs or something. It's simply a weird behaviour.

@sunnyquiver
Copy link
Contributor

I am loading the file Error.txt via the command Read("Error.txt"); in a GAP session, and then I have not been able to obtain any error message. After having done this I have tried to run the example after the definitions of all functions again and again, but also here no error message. So I am at a loss what is going on. Only thing I can recommend is to check the local variables when you are in the break loop (i.e. when you have the prompt brk>) and see what values they have. This sometimes would give an idea about what is going on.

@xHoukakun
Copy link
Author

So after testing a bit further i got the error message again. I still have the break loop on, i'm not that experienced with GAP and error handling.
The Quiver i used this time was:
Q:=Quiver( ["v1","v2","v3","v4","v5","v6","v7","v8","v9"], [["v3","v1","a1"],["v3","v2","a2"],["v4","v3","a3"],["v5","v4","a4"],["v5","v6","a5"],["v7","v6","a6"],["v7","v8","a8"],["v9","v8","a9"]] );
A:=PathAlgebra(GF(3),Q);
thin:=AllThinModules(A);
Then on DTr(thin[10]);
I get the error message.

What i think the root cause is: In Line 125 of functors.gi the function: MinimalGeneratingSetOfModule(M); is called.
In the break loop it returns: [];
I opened another session of GAP and called that function and it returned something different.
The reason for this seems to be: TopOfModuleProjection in the MinimalGeneratingSetOfModule function returns the 0 map even if the TopOfModule is non zero. (Both functions return the 0 map or the 0 module).

I took a look at this function and it seems that IncomingArrowsOfVertex(); does not work right since for this session it returns:
[ [ a1 ], [ a2 ], [ a3, a1, a2 ], [ a4, a3 ], [ a4, a5 ], [ a5, a6 ], [ a6, a8 ], [ a8, a9 ], [ a9 ] ].
You can see that this is incorrect since arrows appear multiple times.

Does this help in any way? I still have the session open and could check a few things if you want.

@sunnyquiver
Copy link
Contributor

sunnyquiver commented Sep 9, 2024

I am not able to recreate the error that you are getting. Every time I run your example, there is no error occurring. Which version of QPA are you running? 1.34 or 1.35, or any earlier version? I am at a loss what this can be.

@xHoukakun
Copy link
Author

I'm running version 1.35.
I'm also clueless on what exactly is happening. I mean it only occurs sometimes and i'm not able to recreate the error on purpose. It also seems that noone else is getting that error so there is a slight chance it's because of something with my PC.

Normally one should be able to recreate an error like this. But it seems to be not possible, i can't even reproduce the error myself, even if i do the same commands in GAP/QPA as before.

Note: I had this error in an earlier version as well. I reinstalled GAP already so this seemed not to be the root cause.

I'm also at loss what it can be, is there maybe documentation on how this function: IncomingArrowsOfVertex(); works? Because from the code i can't "see" how it returns the incomming arrows.

@sunnyquiver
Copy link
Contributor

Here is what I get when I enter your quiver and find the incoming arrows for each vertex:

gap> Q := Quiver( ["v1","v2","v3","v4","v5","v6","v7","v8","v9"], [["v3","v1","a1"], ["v3","v2","a2"], ["v4","v3","a3"],["v5","v4","a4"], ["v5","v6","a5"], ["v7","v6","a6"], ["v7","v8","a8"], ["v9","v8","a9"]] );
<quiver with 9 vertices and 8 arrows>
gap> List( vertices, IncomingArrowsOfVertex );
[ [ a1 ], [ a2 ], [ a3 ], [ a4 ], [  ], [ a5, a6 ], [  ], [ a8, a9 ], [  ] ]

This makes me even more confused. The value of the function IncomingArrowsOfVertex is set when the quiver is constructed. You can see it in the file quiver.gi.

@xHoukakun
Copy link
Author

xHoukakun commented Sep 24, 2024

Yes i don't understand how the code works but i think it's not relevant.

But here is the reason why you maybe not able to replicate this error:
I defined a quiver Q:="Q1";
Here the error occurred.
Then i overwrote Q with another Quiver. Q:="Q2";
Here everything was correct.
Then i redefined Q :="Q1";
Now everything is correct.
I think it's not relevant what Q1 and Q2 are exactly they are just quivers. I'm really clueless why this happens, my intuition would suggest that it has something to do how GAP allocates memory? This is just a blind guess. This maybe the reason on why it's difficult to replicate the error as well.

Note:
What i tried next was the following:
Q:="Q1";
A:=PathAlgebra(Q);
Qt:=QuiverOfPathAlgebra(A);
At:=PathAlgebra(Qt);
Qtt:=QuiverOfPathAlgebra(At);

The error occurred for Q,Qt,Qtt. Which probably makes sense so for a copy of a quiver the error still occurs. But overwriting the Variable could fix this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants