I haven't been following this carefully, but I suspect that
what is needed is a command that says:
"everything before this time is supposed to be in the SYSTEM,
not in the USER environment" This command would clear off all
lists of things-to-remove-when-the-user-says-kill-all, and thus
subsequent kill(all) would not remove anything before that
command, including trgsmp stuff etc.
James Amundson wrote:
>On Mon, 2004-03-15 at 21:50, Wolfgang Jenkner wrote:
>
>
>>"Billinghurst, David (CALCRTS)" <david.billinghurst@comalco.riotinto.com.au> writes:
>>
>>
>>
>>>I had noted some time ago that kill(all) broke trigsimp(), but hadn't
>>>followed up. The following Makefile fragment may be of interest, as
>>>it shows some stuff that gets cleaned up by kill().
>>>
>>>
>
>
>
>>Let me just recall that we have this problem because we dump some
>>translated files (e.g., from trigonometry/trgsmp.mac) in the standard
>>image. This puts some info on the lists which are members of
>>$INFOLISTS. Maxima thinks that everything on this lists has been
>>touched by the user in some way and therefore will scrub it. However,
>>even a kill(all) will not completely break these translated and
>>compiled files because of the
>>$dont_kill_symbols_with_lisp_source_files switch (in suprv1.lisp),
>>which is T by default and which preserves function cells containing a
>>compiled function object. It does not preserve other user-defined
>>properties of the corresponding symbols, though.
>>
>>
>
>Yes. This is a good symmary.
>
>
>
>>Now, trgsmp.mac has a number of lines like
>>
>>PUT('SIN,'COS,'COMPLEMENT_FUNCTION)$
>>
>>whose effect on the property lists of the trigonometric and hyperbolic
>>functions doesn't survive a KILL(ALL). It does, however, survive a
>>KILL(ALLBUT(PROPS)). So, my first suggestion would be to kill more
>>selectively in the test suite.
>>
>>
>
>That's probably a good idea for the time being.
>
>
>
>>Obviously, we must also have a means to reset Maxima to the initial
>>state.
>>
>>
>
>Absolutely.
>
>
>
>> This could be accomplished by doing a
>>save("initial-save-maxima.LISP",all) after building the maxima image
>>(we could even prefabricate this file) and writing a RESET() command
>>(or a RESET argument to KILL) which does
>>
>>kill(all);
>>load("initial-save-maxima.LISP");
>>
>>
>
>That's one approach I have also considered. Somehow, it seems more
>appealing to me to keep track of which properties are built in and which
>belong in the user. Your solution may be simplest in the long run,
>however.
>
>I'd like to see a little more discussion on this point before we make
>the change. Are there thoughts from others?
>
>--Jim
>
>