Am Freitag, den 22.01.2010, 00:19 +0100 schrieb Dieter Kaiser:
> Am Donnerstag, den 21.01.2010, 15:34 -0500 schrieb Raymond Toy:
> > On 1/18/10 12:18 PM, Camm Maguire wrote:
> > > Greetings!
> > >
> > > Raymond Toy <toy.raymond at gmail.com> writes:
> > >
> > >
> > >> Camm Maguire wrote:
> > >>
> > >>> Greetings again!
> > >>>
> > >>> Sigh -- one other query. A long time ago I asked whether the
> > >>> run_testsuite() command could be invoked more than once in a session,
> > >>> and at the time, I think I was told there needed to be an intervening
> > >>> kill(all); or something. Should there be any problem with multiple
> > >>> invocations of run_testsuite()?
> > >>>
> > >>>
> > >> I think it's ok to call run_testsuite() more than once now. I do it all
> > >> the time.
> > >>
> > >>
> > > Thanks!
> > >
> > > I have one small issue here with which I'd most appreciate a few
> > > pointers. All goes well for me too on the second run_testsuite() but
> > > for the following:
> > >
> > Hmm. Maybe you can't do run_testsuite more than once; it fails for me
> > now using the CVS sources. But I'm pretty sure this used to work.
> >
> > Perhaps some missing resetting of some state or functions or variables.
>
> I think we might have a bug related to the dot operator which causes the
> problem. I am looking at the problem.
A first observation:
When we execute the testsuite a second time the dot operator is killed.
This can be seen with a look at the property list:
This is the property list of 'mnctimes in a fresh maxima:
(%i5) :lisp (symbol-plist 'mnctimes)
(TEXSYM (\cdot ) TEX TEX-NARY DISTRIBUTE_OVER (MEQUAL) RBP 129 LBP 130
GRIND
MSIZE-NARY DISSYM ( . ) DIMENSION DIMENSION-NARY TRANSLATE
#<FUNCTION (LAMBDA #) {964094D}> OPERATORS SIMPNCT MSIMPIND
(MNCTIMES SIMP) ASSOCIATIVE T OP .)
When we run the testsuite the first time we get all is correct:
(%i1) (1 . x), dotconstrules:false, dot1simp:false;
(%o1) 1 . x
(%i2) :lisp (symbol-plist 'mnctimes)
(ASSOCIATIVE T VERB %MNCTIMES TEXSYM (\cdot ) TEX TEX-NARY
DISTRIBUTE_OVER
(MEQUAL) RBP 129 LBP 130 GRIND MSIZE-NARY DISSYM ( . ) DIMENSION
DIMENSION-NARY TRANSLATE #<FUNCTION (LAMBDA #) {964094D}> OPERATORS
SIMPNCT
MSIMPIND (MNCTIMES SIMP) OP .)
But after the second execution of the testsuite we get
(%i1) (1 . x), dotconstrules:false, dot1simp:false;
(%o1) mnctimes(1, x)
(%i2) :lisp (symbol-plist 'mnctimes)
(ASSOCIATIVE T VERB %MNCTIMES TEXSYM (\cdot ) TEX TEX-NARY
DISTRIBUTE_OVER
(MEQUAL) TRANSLATE #<FUNCTION (LAMBDA #) {964094D}> OPERATORS SIMPNCT
MSIMPIND
(MNCTIMES SIMP))
Maxima now longer knows the operator properties of the dot operator.
These properties are killed. I have traced the function kill-operator
and I have found one call from the file rtest16.mac:
0: (KILL-OPERATOR MNCTIMES)
But it is very strange. It is not enough to execute the file rtest16.mac
a second time. There is another testfile which has to be executed too.
At this time I have no idea why the function kill-operator is called for
the dot operator when we execute the testsuite a second time.
Dieter Kaiser