On 11/3/07, Barton Willis <willisb at unk.edu> wrote:
> Does anybody know something about 'nobjects'? All I know about 'nobjects'
> is that reset() sets nobjects to nil -- I haven't tried to understand
> the problem (yet).
>
> The reason I ask: I've been working on code that does Fourier elimination.
> After testing this code a few dozen times or more, I sometimes get (GCL) a
> "Bind stack overflow" error. If I either "reset()" or set 'nobjects' to
> nil, Maxima can continue.
nobjects appears to be a circular list which stores assumptions;
the initial content is stuff like pi = 3.14, e = 2.72, pi > e, etc.
and assume(foo > 1) is stored there as well.
:lisp (setq *print-circle* t) seems to be necessary so that just
inspecting via :lisp nobjects doesn't cause Maxima to barf.
Does the Fourier elimination code make use of assume ?
What is the content of nobjects after running the code?
Does it help any to call forget after assume?
nobjects is defined in src/db.lisp (and used only within DINTNUM).
db.lisp has this helpful version of "Lasciate ogne speranza, voi ch'intrate":
;; This file uses its own special syntax which is set up here. The function
;; which does it is defined in LIBMAX;MRGMAC. It sets up <, >, and : for
;; structure manipulation. A major bug with this package is that the code is
;; almost completely uncommented. Someone with nothing better to do should go
;; through it, figure out how it works, and write it down.
best
Robert