# Documentation for undocumented packages

Ignoring the self-contradiction in the title, is there documentation for packages such as Algebra, which probably contains lots of useful functions? (The only one whose functionality I'm familiar with from other question is MatrixPowerMod).

Also, is there a list of other such undocumented packages anywhere?

Finally, at least for Algebra, how can I load it? The usual Needs["Algebra"] fails.

I assume these things are undocumented because Wolfram doesn't promise to support them in future releases.

• That is not a package, just a context. These functions are built-in and are used in the implementation of other, public functions. Think about what would happen if you yourself wrote a package for other people to use. You would implement a few functions and document them. But these functions would very likely rely on multiple other subroutines which are simply part of their implementation, but you did not mean them to be used or seen by your end users. Due to the nature of Mathematica, it is not really possible to fully hide these implementation details. This is what you are seeing here. – Szabolcs Apr 16 at 7:46
• That said, Wolfram does have the habit of only exposing very high level, fully automatic functions. All methods are crammed into one fuction, the method to use for a problem is chosen automatically, and often it is not explained how this is done. Personally I do not agree with this philosophy, and I would very much like to see some of the building blocks, so I can use them to build something else myself. Recently, the situation is getting slightly better (see e.g. reference.wolfram.com/language/LowLevelLinearAlgebra/guide/… ) but there's still a very long way to go. – Szabolcs Apr 16 at 7:49
• One of the more annoying examples of this is FindGraphCommunities. The problem that this function solves is not very well defined mathematically, so one can't practically draw conclusions from the result of the function without knowing what it did precisely. The methods are not documented. I can make a guess at what they might do, but important implementation details are still a mystery. Furthermore, the individual methods do generate useful (sometimes critical) ancillary data, which the main function doesn't expose. – Szabolcs Apr 16 at 8:23

So first off in general, no. But for some packages this can be circumvented via autogeneration (e.g. what I post here).

This is about the best I can offer:

<< https://raw.githubusercontent.com/b3m2a1/mathematica-tools/master/DocFind.wl
DocFind["*", "Algebra"]


If you click on any of those links you'll see that this is all done at the kernel level without ::usage messages:

and so autogeneration won't even help here

• That seems truly unfortunate. Clearly there are people here who know what's in those package; I wonder how they found out? – rogerl Apr 16 at 0:34
• @rogerl the classic way we figure out what an undocumented function does when we can't read the source is via lots of informed guessing. Either that or having a developer provide some manna from heaven. Everything I've discovered here comes via one of these. – b3m2a1 Apr 16 at 0:37