My question here is about a process.
I have been researching a numeric algorithm for a computer program. The idea is not difficult to grasp, and every part of the study — be it proof of termination, or complexity analysis, whatever — is well within my reach. But at some point into it, I started losing the vision of the way all the pieces fit together. So now I have this notebook filled with page upon a page of mathematics, and I am drowning in it, I cannot get it done. I have a simpler algorithm that I can check the numbers against, and I remember having developed a clear understanding of all the separate parts of the work some time ago, so at this point there should not be anything to block my work. Yet my progress stopped.
My hypothesis is that this inability to progress is due to the complexity of recovering the meaning that was discovered, put on a page and forgotten. At some point the time and effort that has to be spent to bring knowledge back to memory has become so large that the thought process throttled.
My further inference is that I need to compartmentalize the knowledge base accumulated so far, so that I need not remember how this proof or that analysis proceeds in order to integrate it into the whole of the research, and also that I could put some effort into making every individual compartment more accessible in case I do need to look into it again. Moreover, it would then be preferable to compartmentalize and make accessible as I go, to make this type of activity a part of the research process, on par with the more prominently mathematical activities such as imaginative discovery and proof composition.
In computer programming, we have these tools such as programming languages, file systems and version control repositories. A program would be written in a well specified, highly readable language that is also easy to write and verify, it would be compartmentalized into individual modules, stored in files, and every change made to it would be recorded in the version control. This way, one does not ever need to understand the whole program at once. In the meantime, for mathematics I still use a paper notebook and a pen, and there is nothing to keep the heaps of notes from becoming an unmanageable mess.
Two ways to improvement.
Concerning accessibility, I could rewrite selected parts into Latex, but it is a tedious, mentally taxing task, and I am not sure if it is worth the effort. I actually tried taking notes directly in Latex, but I would then spend more time battling with the markup than making mathematical progress. The other option is to use a cleaner paper, a finer pen, and to write more neatly, but there is a human limit to that.
Concerning compartmentalization, I understand that one can use theorems and lemmas to structure the theory, but I do not understand exactly how to do that. For instance, should I consider every complexity analysis of an algorithmic part a separate theorem? How do I decide what deserves a separate theorem title? How do I connect the pieces and make sure they fit?
Am I thinking in the right direction?
What can be done?