It seems that there are 2 1/2 solutions to the varlist/genvar problem:
1. Solution
protect all calls of those programs that use the genvars to communicate
internally to *any* exterior program. -- I realised that we would have to
protect all these calls because we cannot know whether the exterior
program will use rat or friends some time in the future.
2. Solution
Of course, this can also done in the programs which are called, i.e.
progbind varlist and genvar at all "entrypoints" to programs that use $rat
or friends.
This is the approach that you took when suggesting to progbind varlist and
genvar in fpolysum.
2 1/2. Solution (well, not really a solution, this leads the idea of
genvars ad absurdum)
change rat and friends so that either the DISREP property agrees with
the varlist or a new symbol is created...
Because this has to be done systematically, I would like to have an answer
like "1" or "2" or "depends on ... "
Thanks, Martin