We have already closed some bugs related to reset() and the assume
database. I have reported another problem, see Bug ID: 2872505 - Assume
database inconsistent after reset().
If I am right reset() should restore global variables to their initial
values. It is not part of the functionality of reset() to clear the
database. Therefore, I think we should never reset variables which are
related to the assume database.
These are the variables of the assume database in db.lisp which are
restored with reset:
;; External specials
(defmvar context 'global)
(defmvar contexts nil)
(defmvar current 'global)
(defmvar dbtrace nil)
(defmvar dobjects nil)
;; Internal specials
(defmvar *nobjects* nil)
(defmvar *dbcheck* nil)
(defmvar +l)
(defmvar -l)
(defmvar *conindex* 0)
(defmvar *connumber* 50)
;; A cell with the high bit turned on.
(defmvar *lab-high-lab* (list +lab-high-bit+))
(defmvar *world*)
(defmvar *db*)
Furthermore the following variables in compar.lisp are defined with
defmvar. These variables have a no-reset flag, but I have got
nevertheless a problem after a reset with the global $activecontexts.
(defmvar $context '$initial
no-reset)
(defmvar $contexts '((mlist) $initial $global)
no-reset)
(defmvar $activecontexts '((mlist))
no-reset)
I would like to suggest to replace all defmvar of global variables
related to the assume database with defvar declarations. I think it does
not make sense to destroy the consistency of the database by reseting
any of these variables.
I have tried this change and I have got no problems with the testsuite.
the reported bug will vanish.
Dieter Kaiser