2021-07-12  Steven Eker  <eker2@eker10>

	* pigPug-cycleDetection.cc (PigPug::firstMoveWithCycleDetection):
	use onCycle() rather than arrive()

	* pigPug.hh (class PigPug): arrive() becomes onCycle()

	* pigPug-cycleDetection.cc (PigPug::makeStateKey): try pushing
	upper bounds on stack as well
	(PigPug::arrive): becomes onCycle()

2021-06-08  Steven Eker  <eker2@eker10>

	* wordLevel-normalCase.cc
	(WordLevel::expandAssignmentsToFixedPointNormalCase): added
	comment explained why expanding to fixed point is needed

2021-06-01  Steven Eker  <eker2@eker10>

	* pigPug.hh (class PigPug): changed depthBoundMultiplier from int
	to double
	(PigPug::setDepthBoundMultiplier): take double

2021-05-26  Steven Eker  <eker2@eker10>

	* pigPug.hh (class PigPug): deleted decl for tightenConstraints()

	* pigPug-extract.cc (PigPug::extractUnifier): don't call
	tightenConstraints() since duplicates work that will be done by
	WordLevel::checkAssignmentNormalCase() in the next WordLevel for
	variables that are not eliminated
	(PigPug::tightenConstraints): deleted

2021-05-25  Steven Eker  <eker2@eker10>

	* wordLevel.hh (class WordLevel): deleted decl for
	checkAssignmentsToFixedPointNormalCase(); updated decl for
	checkAssignmentsNormalCase()

	* wordLevel-normalCase.cc (WordLevel::checkAssignmentsNormalCase):
	return true or false because we're no longer iterating to fixed
	point
	(WordLevel::checkAssignmentsToFixedPointNormalCase): deleted
	(WordLevel::expandAssignmentsToFixedPointNormalCase): use
	checkAssignmentsNormalCase() rather than
	checkAssignmentsToFixedPointNormalCase()

2021-05-21  Steven Eker  <eker2@eker10>

	* wordLevel-normalCase.cc
	(WordLevel::expandAssignmentsToFixedPointNormalCase): call
	checkAssignmentsToFixedPointNormalCase() after expansion rather
	than before expansion to make sure any rhs variables assigned
	empty have been removed before we check assignments against
	constraints
	(WordLevel::reallyExpandAssignmentNormalCase): don't call
	checkAssignmentNormalCase() or
	checkAssignmentsToFixedPointNormalCase() - we wait until partial
	solution is fully exanded before we consider constraint
	propagation

2021-05-19  Steven Eker  <eker2@eker10>

	* wordLevel-normalCase.cc (WordLevel::expandAssignmentNormalCase):
	fix bug where we were calling reallyExpandAssignmentCollapseCase()
	rather than reallyExpandAssignmentNormalCase()
	(WordLevel::checkAssignmentNormalCase): add comment to explain why
	we need to handle empty assignment

2021-05-18  Steven Eker  <eker2@eker10>

	* pigPug.hh (class PigPug): added DEFAULT_DEPTH_BOUND_MULTIPLIER =
	1 to enum SpecialValues
	(PigPug::setDepthBoundMultiplier): added

	* pigPug.cc: added def for depthBoundMultiplier
	(PigPug::PigPug): use depthBoundMultiplier

	* pigPug.hh (class PigPug): added static data member
	depthBoundMultiplier

2021-05-13  Steven Eker  <eker2@eker10>

	* wordLevel.cc (WordLevel::makeNewLevel): restructured if
	statement

===================================Maude136===================================

2021-03-16  Steven Eker  <eker2@eker10>

	* rope.cc: use use range-based for loop

2021-03-15  Steven Eker  <eker2@eker10>

	* mpzGcdInit.cc (MpzSystem::swapVariables): use range-based for
	loop
	(MpzSystem::initializeGcd): use range-based for loop

	* intContejeanDevie.cc (IntSystem::scalerProduct): made loop ref
	const
	(IntSystem::initialize): made loop ref const
	(IntSystem::findNextMinimalSolution): made loop ref const (3
	places)

	* mpzContejeanDevie.cc (MpzSystem::scalerProduct): made loop ref
	const
	(MpzSystem::initialize): made loop ref const
	(MpzSystem::findNextMinimalSolution): made loop ref const (3
	places)

	* intSystem.cc (IntSystem::initializeUpperBounds): use range-based
	for loop

	* mpzSystem.cc (MpzSystem::initializeUpperBounds): use range-based
	for loop

	* mpzGcdBasedSolver.cc (MpzSystem::updateResidues): use
	range-based for loop
	(MpzSystem::fillOutStackEntry): use range-based for loop
	(MpzSystem::fillOutLastEntry): use range-based for loop
	(MpzSystem::solveDiagonal): use range-based for loop (2 places)

	* mpzGcdInit.cc (MpzSystem::computeSumBound): use range-based for
	loop (2 places)
	(MpzSystem::initializeGcd): use range-based for loop (2 places)

	* mpzSystem.cc (MpzSystem::dumpEqns): use range-based for loop (2
	places)
	(MpzSystem::minimal): use range-based for loop

	* intSystem.cc (IntSystem::minimal): make iterator variable ref
	const
	(IntSystem::dumpEqns): make iterator ref const

	* mpzSystem.cc (MpzSystem::greaterEqual): use range-based for loop
	(MpzSystem::minimal): use range-based for loop

	* mpzContejeanDevie.cc (MpzSystem::initialize): use range-based
	for loop (2 places)
	(MpzSystem::findNextMinimalSolution): use range-based for loop (3
	places)

	* intContejeanDevie.cc (IntSystem::initialize): use range-based
	for loop

	* mpzContejeanDevie.cc (MpzSystem::scalerProduct): use range-based
	for loop

	* intContejeanDevie.cc (IntSystem::findNextMinimalSolution): use
	range-based for loop (additional place)

2021-03-11  Steven Eker  <eker2@eker10>

	* intContejeanDevie.cc (IntSystem::isZero): use range-based for
	loop
	(IntSystem::scalerProduct): use range-based for loop
	(IntSystem::initialize): use range-based for loop
	(IntSystem::findNextMinimalSolution): use range-based for loop (2
	places)

	* intSystem.cc (IntSystem::greaterEqual): use range-based for loop
	(IntSystem::dumpEqns): use range-based for loop (2 places)
	(IntSystem::minimal): use range-based for loop

	* graph.cc (Graph::colorNode): use range-based for loop (2 places)
	(Graph::visit): use range-based for loop

===================================Maude135===================================

2021-03-03  Steven Eker  <eker2@eker10>

	* timeStuff.hh: added operator<()
	(timespecSubtract): added reference based version
	(timespecCompare): deleted
	(timespecSubtract): deleted pointer based version

===================================Maude133===================================

2021-02-18  Steven Eker  <eker2@eker10>

	* wordLevel-simplifyEquations.cc (WordLevel::simplifyEquation):
	added a DebugInfo() for the case where we can't turn an equation
	into an assignment because the lone variable already has an unsafe
	assignment

2021-02-09  Steven Eker  <eker2@eker10>

	* wordLevel-selections.cc (WordLevel::systemLinear): compute
	pseudo-constrained variables and don't count them for the purpose
	of determining linearity

	* wordLevel.hh (class WordLevel): deleted decl for canPinch();
	added decl for computePinches()

	* wordLevel-selections.cc (WordLevel::computePinches): added
	(WordLevel::determinePinchedVariables): use computePinches()
	(WordLevel::canPinch): deleted

2021-02-05  Steven Eker  <eker2@eker10>

	* wordLevel.hh: deleted

	* wordLevel-feasible.cc: check unsafeAssignments() to determine
	bounds issues with partial solution

	* wordLevel-simplifyEquations.cc (WordLevel::checkForSingleton):
	added DebugInfo()s for where we can't bind to a variable that
	has an unsafe assignment
	(WordLevel::simplifyEquation): added code to dump partial solution
	in debug mode
	(WordLevel::checkForSingleton): added missing return so we don't
	fall into unsafe assignment case

	* pigPug.cc: output sizes in Assert()s

2021-02-04  Steven Eker  <eker2@eker10>

	* wordLevel-selections.cc (WordLevel::determinePinchedVariables):
	use unsafeAssignments to determine which assignments pinch
	variables

2021-02-03  Steven Eker  <eker2@eker10>

	* wordLevel-simplifyEquations.cc (WordLevel::simplifyEquation):
	call handleNullEquations() if checkForNull() made a null equation

	* wordLevel-simplifyAssignments.cc
	(WordLevel::fullyExpandAssignments): don't call
	handleNullEquations() here

	* wordLevel-collapseCase.cc
	(WordLevel::expandAssignmentsToFixedPointCollapseCase): don't call
	handleNullEquations() here

	* wordLevel.cc (WordLevel::simplify): call handleNullEquations()
	here at the beginning of each non-PIGPUG level

	* wordLevel-collapseCase.cc
	(WordLevel::reallyExpandAssignmentCollapseCase): don't call
	handleNullEquations() after resolveOccursCheckFailure()
	(WordLevel::checkAssignmentCollapseCase): call
	handleNullEquations() after unique collapse.
	(WordLevel::checkAssignmentsCollapseCase): don't call
	handleNullEquations() here
	(WordLevel::reallyExpandAssignmentCollapseCase): don't call
	handleNullEquations() here

	* wordLevel-null.cc (WordLevel::resolveOccursCheckFailure): call
	handleNullEquations() instead of returning true

2021-02-02  Steven Eker  <eker2@eker10>

	* wordLevel.hh (class WordLevel): deleted decls for
	checkAssignment(), checkAssignments(),
	checkAssignmentsToFixedPoint()

	* wordLevel-simplifyAssignments.cc
	(WordLevel::fullyExpandAssignments): call handleNullEquations in
	non-PIGPUG levels

	* wordLevel.hh (class WordLevel): delete decls for old versions of
	expandAssignments(), expandAssignment(), reallyExpandAssignment()

	* wordLevel-checkAssignments.cc: deleted

	* wordLevel-simplifyAssignments.cc
	(WordLevel::fullyExpandAssignments): cut out dead code
	(WordLevel::expandAssignments, WordLevel::expandAssignment)
	(WordLevel::reallyExpandAssignment): deleted old versions

2021-02-01  Steven Eker  <eker2@eker10>

	* wordLevel-simplifyEquations.cc: rewritten to respect
	unsafeAssignments and leave constraint checking to the assignment
	checking code
	(WordLevel::makeAssignment): handle equal variables case
	(WordLevel::simplifyEquation): copyBack() the partly simplified
	equation in UNSAFE cases

	* wordLevel.hh (class WordLevel): added UNSAFE to Result

2021-01-29  Steven Eker  <eker2@eker10>

	* wordLevel-simplifyAssignments.cc
	(WordLevel::fullyExpandAssignments): use
	expandAssignmentsToFixedPointNormalCase()

	* wordLevel.hh (class WordLevel): added decls for
	checkAssignmentNormalCase(), checkAssignmentsNormalCase(),
	checkAssignmentsToFixedPointNormalCase(),
	reallyExpandAssignmentNormalCase(),
	expandAssignmentNormalCase(), expandAssignmentsNormalCase(),
	expandAssignmentsToFixedPointNormalCase()

	* wordLevel-normalCase.cc: created

	* wordLevel-simplifyAssignments.cc
	(WordLevel::fullyExpandAssignments): use
	expandAssignmentsToFixedPointCollapseCase()

	* wordLevel.hh (class WordLevel): added decls for
	checkAssignmentCollapseCase(), checkAssignmentsCollapseCase(),
	checkAssignmentsToFixedPointCollapseCase(),
	reallyExpandAssignmentCollapseCase(),
	expandAssignmentCollapseCase(), expandAssignmentsCollapseCase(),
	expandAssignmentsToFixedPointCollapseCase()

	* wordLevel-collapseCase.cc: created

	* wordLevel-null.cc (WordLevel::handleNullEquations): restructured
	to use makeEmptyAssignment()
	(WordLevel::resolveOccursCheckFailure): restructured to use
	makeEmptyAssignment()

	* wordLevel.hh (class WordLevel): added decl for
	makeEmptyAssignment()

	* wordLevel-null.cc (WordLevel::makeEmptyAssignment): added

2021-01-28  Steven Eker  <eker2@eker10>

	* wordLevel-feasible.cc: added Assert() that if we're legal
	without collapse we should not have unsafeAssignments

	* wordLevel-simplifyEquations.cc (WordLevel::expandWord): don't
	substitute in unsafe assignments
	(WordLevel::append): use range-based for loop

	* wordLevel-simplifyAssignments.cc (WordLevel::expandAssignment):
	don't substitute in unsafeAssignments
	(WordLevel::fullyExpandAssignments): call
	checkAssignmentsToFixedPoint() before each expandAssignments()
	call
	(WordLevel::reallyExpandAssignment): don't substitute in
	unsafeAssignments

	* wordLevel.hh (class WordLevel): added decls for
	checkAssignment(), checkAssignments(),
	checkAssignmentsToFixedPoint()
	(class WordLevel): added data member unsafeAssignments

	* wordLevel-checkAssignments.cc: created

2021-01-27  Steven Eker  <eker2@eker10>

	* pigPug-extract.cc (PigPug::checkInvariant): commented out

	* pigPug.hh (class PigPug): commented out decl for
	checkInvariant()

	* pigPug-extract.cc (PigPug::extractUnifier): use
	tightenConstraints()

	* pigPug.hh (class PigPug): added decls for tightenConstraints(),
	checkInvariant()

	* pigPug-extract.cc (PigPug::extractUnifier): added post variable
	renaming pass to see if the constraint on any rhs variable can be
	tightened
	(PigPug::checkInvariant): added
	(PigPug::tightenConstraints): added

2021-01-26  Steven Eker  <eker2@eker10>

	* wordLevel-simplifyEquations.cc (WordLevel::simplifyEquation):
	rearrange if statement and added Assert()s and comments about the
	impossibility of null unificands arising in a PIGPUG level
	(WordLevel::simplifyEquation): don't assign to nrLhsVariables,
	just check for empty()
	(WordLevel::makeAssignment): refactor code with different loops
	for PIGPUG and INITIAL/SELECTION levels

2021-01-22  Steven Eker  <eker2@eker10>

	* wordLevel-selections.cc (WordLevel::systemLinear): only consider
	the linearity of unconstrained variables because these are the
	ones we are relying on to take an extra fresh variable and subsume
	a unifier with an identity assignment
	(WordLevel::determinePinchedVariables): handle the fact that we
	might have null equations after simplification
	(WordLevel::systemLinear): handle the fact that we might have null
	equations after simplification

	* wordLevel.hh (class WordLevel): added decls for systemLinear(),
	canPinch(), determinePinchedVariables()

	* wordLevel-selections.cc (WordLevel::systemLinear)
	(WordLevel::canPinch, WordLevel::determinePinchedVariables): added
	(WordLevel::chooseVariablesToSelectFrom): check for
	identityOptimizations and systemLinear(), and if so, restrict our
	attention to potentially pinched variables

	* wordLevel.hh (class WordLevel): added decl for
	chooseVariablesToSelectFrom()

	* wordLevel-selections.cc
	(WordLevel::chooseVariablesToSelectFrom): added

2021-01-21  Steven Eker  <eker2@eker10>

	* wordLevel.cc (WordLevel::makePigPug): allow equate optimization
	for last equation only

2021-01-19  Steven Eker  <eker2@eker10>

	* pigPug-search.cc (PigPug::nextMove): fix comment on
	equateOptimization

===================================Maude133===================================

2020-12-10  Steven Eker  <eker2@eker10>

	* bddUser.hh (class BddUser): multiplied all the default sizes by 10

2020-12-07  Steven Eker  <eker2@eker10>

	* macros.hh: send Verbose() messages to cerr rather than cout so
	all out-of-band notifications go to stderr

===================================Maude132===================================

2020-10-10  Steven Eker  <eker2@eker10>

	* pigPug-stack.cc (PigPug::checkConstraintMap): updated comment to
	explain why theory constraints don't get messed up

2020-10-09  Steven Eker  <eker2@eker10>

	* macros.hh (pluralize): added Int64 version

===================================Maude131a===================================

2020-10-02  Steven Eker  <eker2@eker10>

	* pigPug-cycleDetection.cc (PigPug::confirmedLive): updated
	comment

	* pigPug-search.cc (PigPug::lhsPeel): check STRICT_RIGHT_LINEAR
	(PigPug::lhsPeel): rearrange if statements

	* pigPug.cc: Assert() for STRICT_RIGHT_LINEAR

	* wordLevel.cc (WordLevel::makePigPug): new calling convention for
	PigPug

	* pigPug.hh (class PigPug): updated decl for ctor
	(class PigPug): added enum Linearity
	(class PigPug): data member linearity replaces strictLeftLinear

	* pigPug-search.cc (PigPug::rhsPeel): use linearity rather than
	strictLeftLinear
	(PigPug::lhsPeel): use linearity rather than strictLeftLinear
	(PigPug::equate): use linearity rather than strictLeftLinear (4
	places)

	* pigPug.cc (PigPug): take linearity rather than strictLeftLinear

	* pigPug.hh (class PigPug): deleted decls for dumpWord(), dump()

	* pigPug.cc (PigPug::variableOccurrencesBoundedBy2): rearranged
	(PigPug::getNextUnifier): updated comment
	(PigPug::dump): deleted
	(PigPug::dumpWord): deleted

2020-09-28  Steven Eker  <eker2@eker10>

	* rope.cc: added missing copyright notice
	(Rope::const_iterator::operator==): deleted commented out code
	(Rope::addFragment): turned commented out code into #ifdef'd code
	(Rope::operator+): turned commented out code into #ifdef'd code
	(Rope::rebalance): turned commented out code into #ifdef'd code

	* rope.hh: added reference to orginal ropes paper

===================================Maude131===================================

2020-08-03  Steven Eker  <eker2@eker10>

	* wordLevel.cc (WordLevel::makePigPug): temporarily disable PigPug
	equateOptimization until more consideration

2020-07-31  Steven Eker  <eker2@eker10>

	* wordSystem.cc (WordSystem::WordSystem): take
	identityOptimizations flag and pass it to WordLevel()

	* wordLevel.cc (WordLevel::makeNewLevel): pass
	identityOptimizations flag to WordLevel()

	* wordLevel-selections.cc (WordLevel::exploreSelections): pass
	identityOptimizations flag to WordLevel()

	* wordLevel.cc: take and init identityOptimizations
	(WordLevel::makePigPug): pass equateOptimization flag to PigPug

	* wordLevel.hh (class WordLevel): updated decl for makePigPug()
	(class WordLevel): added data member identityOptimizations;
	updated decl for ctor; made levelType const

	* wordLevel.cc (WordLevel::chooseEquation): new semantics
	(WordLevel::findNextPartialSolution): new chooseEquation() and
	makePigPug() semantics

	* wordLevel.hh (class WordLevel): added enum Linearity
	(class WordLevel): updated decl for chooseEquation()

	* pigPug.hh (class PigPug): added data member equateOptimization;
	added decl for doublePeelPossible(); updated decl for ctor

	* pigPug.cc: take an init equateOptimization flag

	* pigPug-search.cc (PigPug::doublePeelPossible): added

2020-07-02  Steven Eker  <eker2@eker10>

	* wordLevel-selections.cc (WordLevel::exploreSelections): pass
	this to WordLevel ctor

	* wordLevel.hh (WordLevel::setTheoryConstraint): added decl for
	insertCombination()

	* wordLevel-selections.cc (WordLevel::insertCombination): added

	* wordLevel.cc (WordLevel::WordLevel) : take parent argument
	(WordLevel::findNextPartialSolution): call insertCombination() to
	see if we've already tried this combination of variables set to
	empty

	* wordLevel.hh (class WordLevel): added data members
	finalCombinations, parent
	(class WordLevel): updated decl for ctor

2020-07-01  Steven Eker  <eker2@eker10>

	* wordLevel.cc (WordLevel::findNextPartialSolution): call
	levelFeasibleWithoutCollapse() for INITIAL and SELECTION levels

	* wordLevel-feasible.cc (WordLevel::levelFeasibleWithoutCollapse):
	added

	* wordLevel.hh (class WordLevel): added decl for
	feasibleWithoutCollapse()
	(WordLevel::legalWithoutCollapse): added
	(class WordLevel): added decl for levelFeasibleWithoutCollapse();

	* wordLevel-feasible.cc: created

	* wordLevel-simplifyEquations.cc (WordLevel::simplifyEquation):
	call feasibleWithoutCollapse() for PIGPUG levels

	* wordLevel.cc (WordLevel::makeNewLevel): deleted old commented
	out code for copying constraintMap into new level
	(WordLevel::findNextPartialSolution): expanded comments

	* wordLevel.hh (class WordLevel): updated decl for trySelection()

	* wordLevel.cc (WordLevel::findNextPartialSolution): handle
	preservation of incompleteness flag from final PigPug result
	ourselves; don't pass it to trySelection()

	* wordLevel-selections.cc (WordLevel::trySelection): don't take
	result argument; simplfied return value

2020-06-30  Steven Eker  <eker2@eker10>

	* wordLevel-simplifyEquations.cc (WordLevel::makeAssignment):
	don't check for bounds violations in INITIAL and SELECTION levels;
	don't call resolveOccursCheckFailure() in PIGPUG levels
	(WordLevel::cancel): don't consider canTakeEmpty() in PIGPUG levels
	(WordLevel::makeAssignment): don't bother with checking
	canTakeEmpty() before incrementing needed since we only use needed
	in PIGPUG levels

	* wordLevel-null.cc (WordLevel::handleNullEquations)
	(WordLevel::resolveOccursCheckFailure): Assert() that they are not
	called in PIGPUG level

	* wordLevel-simplifyAssignments.cc
	(WordLevel::reallyExpandAssignment): use isUnbounded() rather than
	checking getUpperBound() against 0

	* wordLevel-simplifyEquations.cc (WordLevel::simplifyEquation):
	don't check for null equations after expansion in PIGPUG levels

	* wordLevel-simplifyAssignments.cc
	(WordLevel::reallyExpandAssignment): allow
	resolveOccursCheckFailure() to be called in SELECTION level

	* wordLevel-selections.cc (WordLevel::trySelection): implemented
	(WordLevel::exploreSelections): implemented

2020-06-29  Steven Eker  <eker2@eker10>

	* wordLevel.hh (class WordLevel): added decls for trySelection(),
	exploreSelections()

	* wordLevel.cc (WordLevel::WordLevel): clear selection
	(WordLevel::findNextPartialSolution): check for active selection;
	try to set up selections if we're INITIAL and we run out of
	solutions

	* wordSystem.cc (WordSystem::findNextSolution): don't qualify
	OutcomeFlags

	* wordLevel.hh (class WordLevel): added date members idVariables,
	selection

2020-06-26  Steven Eker  <eker2@eker10>

	* wordLevel-simplifyAssignments.cc
	(WordLevel::fullyExpandAssignments): don't both with
	handleNullEquations() if levelType is PIGPUG
	(WordLevel::reallyExpandAssignment): only call
	resolveOccursCheckFailure() if levelType is INITIAL
	(WordLevel::reallyExpandAssignment): if we end up mapping a
	variable to another variable, intersect their constraints;
	otherwise check the length of the word against the variables
	upperBound.

	* wordLevel.cc (WordLevel::simplify): only call
	handleInitialOccursCheckFailure() for INITIAL WordLevel

	* wordSystem.cc (WordSystem::WordSystem): pass INTIAL as levelType

	* wordLevel.cc: take levelType
	(WordLevel::makeNewLevel): pass PIGPUG as levelType

	* wordLevel.hh (class WordLevel): added enum LevelType
	(class WordLevel): added data member levelType
	(class WordLevel): updated decl for ctor

	* pigPug-checks.cc (PigPug::feasible): don't check canTakeEmpty()
	- we won't try to deal with identity in PigPug after all
	(PigPug::completed): remove comment about identity case since now
	this will be dealt with outside of PigPug

2020-06-25  Steven Eker  <eker2@eker10>

	* pigPug-extract.cc (PigPug::extractUnifier): handle EQUATE |
	FINAL case

	* pigPug-checks.cc (PigPug::completed): treat variable =? variable
	as an EQUATE move for efficiency
	(PigPug::completed): actually need to use EQUATE | FINAL to avoid
	trying to undo a notional final move during backtracking

	* pigPug.hh (class PigPug): updated decl for composeFinal()

	* pigPug-extract.cc (PigPug::compose): 4 arg version renamed to
	composeFinal()
	(PigPug::extractUnifier): compose() -> composeFinal()

2020-06-24  Steven Eker  <eker2@eker10>

	* wordLevel-simplifyEquations.cc (WordLevel::makeAssignment):
	rewritten to take account of variables in subword being able to
	take identity and therefore not counting against upper sort bound
	and occurs-check failure being resolvable.

2020-06-23  Steven Eker  <eker2@eker10>

	* wordSystem.hh (WordSystem::addNullEquation): added

	* wordLevel.hh (WordLevel::addNullEquation): added

2020-06-22  Steven Eker  <eker2@eker10>

	* wordLevel-simplifyEquations.cc (WordLevel::simplifyEquation):
	check for singleton case after expanding each side

	* wordLevel-simplifyAssignments.cc (WordLevel::expandAssignment):
	remove occurs-check code; Assert() that it doesn't happen

	* wordLevel.cc (WordLevel::simplify): call
	handleInitialOccursCheckFailure()

	* wordLevel.hh (class WordLevel): added decl for
	handleInitialOccursCheckFailure()

	* wordLevel-simplifyAssignments.cc (WordLevel::expandAssignment)
	(WordLevel::reallyExpandAssignment): added DebugEnter()
	(WordLevel::handleInitialOccursCheckFailure): added

	* wordLevel-simplifyEquations.cc (WordLevel::simplifyEquation):
	added DebugEnter()
	(WordLevel::simplifyEquation): added DebugInfo() for after
	expansion
	(WordLevel::checkForNull): added
	(WordLevel::simplifyEquation): call checkForNull() after expansion

	* pigPug.cc: Assert() that lhs and rhs are larger than one
	variable each

2020-06-18  Steven Eker  <eker2@eker10>

	* wordLevel-null.cc (WordLevel::resolveOccursCheckFailure): added
	DebugInfo()s when we bind a variable to empty
	(WordLevel::handleNullEquations): added DebugInfo() when we bind a
	variable to empty
	(WordLevel::resolveOccursCheckFailure): need to deal with the case
	that a variable other than index appears multiple times in
	newValue

	* wordLevel-simplifyAssignments.cc (WordLevel::expandAssignment):
	added DebugInfo() for occur-check failure case

	* wordLevel.hh (class WordLevel): added typedef for
	NullEquationQueue, nullEquations data member

	* wordLevel-simplifyAssignments.cc (WordLevel::expandAssignment):
	call resolveOccursCheckFailure()
	(WordLevel::append): do the append even if there is an
	occurs-check failure
	(WordLevel::fullyExpandAssignments): call handleNullEquations()
	(WordLevel::reallyExpandAssignment): track occurs-check failure
	and call resolveOccursCheckFailure()

	* wordLevel.hh (class WordLevel): added decls for
	handleNullEquations(), resolveOccursCheckFailure()

	* wordLevel-null.cc: created

2020-06-17  Steven Eker  <eker2@eker10>

	* wordLevel-simplifyAssignments.cc (WordLevel::expandAssignment):
	we need to deal with occurs-check failure here after all because
	bad assignments could come in from outside of WordSystem and we
	need the WordLevel complete with constraints to resolve these
	properly

	* wordLevel.cc (WordLevel::findNextPartialSolution): added FIXME
	about adding a Diophantine check - this is a low priority
	enhancement we might add in the future

	* pigPug-checks.cc (PigPug::completed): handle constraints in the
	optimal way using the meet for lastLhsVar =? lastRhsVar case
	(PigPug::completed): replaced FIXME comment for the equal variable
	case with an explanation of why nothing needs to be done

2020-06-16  Steven Eker  <eker2@eker10>

	* pigPug.hh (class PigPug): added decl for unificand version of
	checkConstraintMap()

	* pigPug-search.cc (PigPug::undoMove): handle the case where a
	FINAL move pushed the constraintStack

	* pigPug-checks.cc (PigPug::completed): call checkConstraintMap()
	for variable |-> unificand cases

	* pigPug-stack.cc (PigPug::checkConstraintMap): added version for
	variable vs unificand

	* pigPug.cc: added

	* pigPug.hh: added decl for operator<<()

	* wordLevel.hh (class WordLevel): updated decl for makeNewLevel()

	* pigPug.hh (class PigPug): updated decls for extractUnifier() and
	getNextUnifier()

	* wordLevel.cc (WordLevel::findNextPartialSolution): pass
	constraintMap to getNextUnifier() and makeNewLevel
	(WordLevel::makeNewLevel): take constraintMap; use it to
	initialize next level

	* pigPug-extract.cc (PigPug::extractUnifier): take and fillout
	constraintMap argument

	* pigPug.cc (PigPug::getNextUnifier): take constraintMap argument

2020-06-15  Steven Eker  <eker2@eker10>

	* wordLevel.hh (class WordLevel): updated decl for
	reallyExpandAssignment()

	* wordLevel-simplifyAssignments.cc (WordLevel::expandAssignment):
	added Assert() that we don't have occurs-check issue in assignment
	(WordLevel::expandAssignment): don't handle occurs-check here
	(WordLevel::append): use range-based for loop
	(WordLevel::expandAssignment): use range-based for loop
	(WordLevel::reallyExpandAssignment): simplified by not trying to
	be clever about avoiding repetition of initial scan - the saving
	was neglible in most cases and not worth passing two extra
	arguments

2020-06-09  Steven Eker  <eker2@eker10>

	* macros.hh (DebugOld): added

2020-05-29  Steven Eker  <eker2@eker10>

	* wordSystem.hh (WordSystem::setTakeEmpty): added

	* wordLevel.hh (WordLevel::setTakeEmpty): added

2020-05-20  Steven Eker  <eker2@eker10>

	* vector.hh (Vector): added default ctor without default
	arguments so we can initialize without have a default ctor
	for our elements

2020-04-29  Steven Eker  <eker2@eker10>

	* timeStuff.hh (timespecCompare): added
	(timespecSubtract): added

2020-04-08  Steven Eker  <eker2@eker9>

	* macros.hh: added DebugAlways()

===================================Maude128a===================================

2020-02-28  Steven Eker  <eker@mu>

	* variableConstraint.hh (none): deleted

	* pigPug.cc (variableOccurrencesBoundedBy2): use isUnbounded() rather
	than none()

	* variableConstraint.hh (V): commented out decl for absorb()

	* variableConstraint.cc (absorb): commented out for the
	moment

	* variableConstraint.hh (notNone): deleted
	(element): deleted

2020-02-27  Steven Eker  <eker@mu>

	* pigPug-search.cc (rhsPeel): restructured replacement
	code; added Assert()s
	(lhsPeel): restructured replacement code; added Assert()s

2020-02-26  Steven Eker  <eker@mu>

	* pigPug-search.cc (equate): restructured and simplified

2020-02-25  Steven Eker  <eker@mu>

	* pigPug-search.cc (equate): complete rewrite to fix several
	bugs introduced by using VariableConstraint

2020-02-24  Steven Eker  <eker@mu>

	* pigPug-stack.cc (checkConstraintMap): fix bug where we weren't
	reducing the bound of otherVariable if it was unbounded and
	knownBigVariable had a finite bound

2020-02-18  Steven Eker  <eker@mu>

	* pigPug.cc (getNextUnifier): replace goto with do-while loop

	* pigPug.hh (P): updated decls for compose2()/compose()

	* pigPug-extract.cc (compose): check for upperBound
	being exceeded
	(compose2): return false if upperBound exceeded
	(compose): return false if upperBound exceeded
	(extractUnifier): check for compose2()/compose() returnin
	false

	* pigPug.cc (getNextUnifier): check for extractUnifier()
	returning NONE

	* pigPug-extract.cc (compose2): added test for upperBound
	being exceeded

2020-02-14  Steven Eker  <eker@mu>

	* pigPug-extract.cc (compose): use range-based
	for loop
	(renameVariables): use range-based for loop

2020-02-03  Steven Eker  <eker@mu>

	* pigPug.hh (P): added dummy field to StateInfo

2020-01-31  Steven Eker  <eker@mu>

	* pigPug-search.cc (nextMove): ALL_MOVES -> BASIC_MOVES

	* pigPug.hh (P): deleted BOTH and MOVES from enum Moves
	(P): re-number enum Moves

	* pigPug-cycleDetection.cc (nextMoveWithCycleDetection):
	BOTH -> BASIC_MOVES or EQUATE depending on context

	* pigPug-search.cc (nextMove): MOVES -> ALL_MOVES;

	* pigPug-extract.cc (extractUnifier): MOVES -> ALL_MOVES;
	RHS_PEEL | LHS_PEEL -> EQUATE

	* pigPug.hh (P): added ALL_MOVES to enum Moves

	* pigPug-search.cc (cancel): RHS_PEEL | LHS_PEEL -> EQUATE

	* pigPug.hh (P): added BASIC_MOVES to enum Moves

	* pigPug-search.cc (nextMove): BOTH -> EQUATE
	(equate): RHS_PEEL | LHS_PEEL -> EQUATE

	* pigPug.hh (P): added EQUATE to enum Moves

	* pigPug-cycleDetection.cc (nextMoveWithCycleDetection):
	INC_RHS -> RHS_PEEL

	* pigPug-extract.cc: INC_LHS -> LHS_PEEL, INC_RHS -> RHS_PEEL

	* pigPug-search.cc: INC_LHS -> LHS_PEEL, INC_RHS -> RHS_PEEL

	* pigPug.hh: INC_LHS -> LHS_PEEL, INC_RHS -> RHS_PEEL

2020-01-30  Steven Eker  <eker@mu>

	* pigPug.hh (P): rhsPeelGeneralCase() decl -> rhsPeel();
	lhsPeelGeneralCase() decl -> lhsPeel()

	* pigPug-cycleDetection.cc (firstMoveWithCycleDetection):
	rhsPeelGeneralCase() -> rhsPeel();
	lhsPeelGeneralCase() -> lhsPeel()
	(nextMoveWithCycleDetection): lhsPeelGeneralCase() -> lhsPeel()

	* pigPug-search.cc (rhsPeelGeneralCase): becomes rhsPeel()
	(lhsPeelGeneralCase): becomes lhsPeel()
	(firstMove): rhsPeelGeneralCase() -> rhsPeel();
	lhsPeelGeneralCase() -> lhsPeel()
	(nextMove): lhsPeelGeneralCase() -> lhsPeel()

2020-01-24  Steven Eker  <eker@mu>

	* pigPug-extract.cc (extractUnifier): use range based for loop
	(collectRangeVariables): use range based for loops

	* pigPug.cc (variableOccurrencesBoundedBy2): use range based
	for loops
	(dumpWord): use range based for loop

	* wordLevel.cc (checkUnconstrainedVariables): use range based
	for loop
	(dumpWord): use range based for loop
	(makeNewLevel): use range based for loop

2020-01-23  Steven Eker  <eker@mu>

	* pigPug-extract.cc (extractUnifier): added comments

2020-01-22  Steven Eker  <eker@mu>

	* pigPug.hh (P): deleted declaration for occurs()

	* pigPug-checks.cc (if): deleted
	(completed): rewritten to use feasible()

	* pigPug.hh (P): delete decls for canCancelUnconstrained(),
	feasibleGeneralCase(), fullyConstrained()

	* pigPug-checks.cc (feasible, fullyConstrained)
	(feasibleGeneralCase, canCancelUnconstrained): deleted old code

2020-01-21  Steven Eker  <eker@mu>

	* pigPug-cycleDetection.cc (firstMoveWithCycleDetection): use
	new feasible()

	* pigPug-search.cc (firstMove): use new feasible()

	* pigPug-checks.cc (feasible): added upperbounds > 1 and
	identity aware version

2020-01-17  Steven Eker  <eker@mu>

	* pigPug.hh (P): deleted decls for lhsPeel(), rhsPeel()

	* pigPug-search.cc (rhsPeelGeneralCase, lhsPeelGeneralCase): use
	checkConstraintMap()

	* pigPug.hh (P): added decl for checkConstraintMap()

	* pigPug-stack.cc (checkConstraintMap): added

	* pigPug-search.cc (firstMove): always use rhsPeelGeneralCase(),
	lhsPeelGeneralCase(), now that we can be strictLeftLinear with variables
	shared between lhs and rhs having upperbound > 1
	(nextMove): always use lhsPeelGeneralCase() for same reason
	(rhsPeel, lhsPeel): deleted
	(rhsPeelGeneralCase): use getUpperBound() rather than notNone(); check
	for unbounded lhs variable and non-strictLeftLinear before looking
	for expansions
	(lhsPeelGeneralCase): use getUpperBound rather than notNone(); check
	for unbounded rhs variable and non-strictLeftLinear befor trying to
	expand lhs
	(undoMove): pop constraint map if move contained PUSH_CONSTRAINT_MAP

2020-01-16  Steven Eker  <eker@mu>

	* pigPug.cc (PigPug): added DebugEnter()

	* variableConstraint.hh (V): made canTakeEmpty() public

	* wordLevel-simplifyEquations.cc (cancel): use getUpperBound(); account
	for the possibility of variables that can take identity

	* variableConstraint.hh (V): make hasTheoryConstraint() and
	 getTheoryConstraint() public

	* wordLevel-simplifyEquations.cc (unifyVariables): rewritten to consider
	upperbounds other than 1

2020-01-14  Steven Eker  <eker@mu>

	* variableConstraint.hh (V): make isUnbounded() and getUpperBound() public

	* wordLevel-simplifyEquations.cc (makeAssignment): use getUpperBound()
	rather than notNone() for a precise check of whether the assignment
	is allowed

	* wordLevel.cc (checkUnconstrainedVariables): use isUnbounded()
	rather than none() since we are only worried about nonlinearity
	in variables that don't have any upper-bound; having an upper-bound
	>1 is no longer a concern

2020-01-09  Steven Eker  <eker@mu>

	* pigPug-stack.cc (checkUnificand2): updated comment

2020-01-08  Steven Eker  <eker@mu>

	* pigPug.hh: deleted commented out constraintMap decl.

===================================Maude128 resumed===================================

2019-09-20  Steven Eker  <eker@mu>

	* pigPug-checks.cc (completed): append LHS_TAKES_ALL,
	RHS_TAKES_ALL on path unless we have equal variables or
	incompatible constraints

	* pigPug-extract.cc (extractUnifier): use LHS_TAKES_ALL,
	RHS_TAKES_ALL to do final composition

	* pigPug.hh (P): added FINAL, LHS_TAKES_ALL, RHS_TAKES_ALL
	to enum Moves

	* pigPug-search.cc (undoMove): check for FINAL moves

2019-09-19  Steven Eker  <eker@mu>

	* pigPug.hh (P): added PUSH_CONSTRAINT_MAP to enum Moves

	* variableConstraint.hh (V): added decl for absorb()

	* variableConstraint.cc (absorb): added

2019-09-18  Steven Eker  <eker@mu>

	* variableConstraint.hh (V): added decl for intersect()

	* variableConstraint.cc: added

2019-09-16  Steven Eker  <eker@mu>

	* pigPug.hh (P): deleted data member constraintMap

	* pigPug.cc (PigPug): don't init constraintMap

	* pigPug-search.cc (lhsPeel, lhsPeelGeneralCase, equate):
	use constraintStack

	* pigPug-checks.cc (fullyConstrained, canCancelUnconstrained)
	(completed): use constraintStack

	* pigPug-extract.cc (extractUnifier): use constraintStack

2019-09-13  Steven Eker  <eker@mu>

	* pigPug-search.cc (rhsPeel): use constraintStack
	(rhsPeelGeneralCase): use constraintStack; update comments

	* pigPug.cc (PigPug): initialize constraintStack
	(variableOccurrencesBoundedBy2): use constraintStack

	* pigPug.hh (P): added typedef ConstraintStack
	(P): added data member constraintStack

	* pigPug-stack.cc (checkUnificand, checkUnificand2): moved here

	* pigPug-checks.cc (feasible, fullyConstrained)
	(feasibleGeneralCase, canCancelUnconstrained, completed, occurs):
	moved here

	* pigPug-search.cc (run, firstMove, nextMove, cancel, rhsPeel)
	(rhsPeelGeneralCase, lhsPeelGeneralCase, lhsPeel): moved here
	(cancel): comments and code cleaning
	(run): comments
	(feasible): moved here
	(equate): moved here
	(undoMove): moved here
	(fullyConstrained): moved here
	(feasibleGeneralCase, canCancelUnconstrained): moved here

	* wordLevel-simplifyEquations.cc (cancel): use
	notNone()
	(unifyVariables): use none(), notNone(), element(),
	==
	(makeAssignment): use notNone()

	* wordLevel.cc (checkUnconstrainedVariables): use
	none()

	* pigPug.cc: replace all changes with simpler
	calls to fix mysterious bug

2019-09-11  Steven Eker  <eker@mu>

	* wordLevel-simplifyEquations.cc (cancel): use new
	constraintMap semantics
	(unifyVariables): use new constraintMap semantics
	(makeAssignment): use new constraintMap semantics

	* wordSystem.hh (addConstraint): deleted
	(setUpperBound): added
	(setTheoryConstraint): added

	* pigPug.hh (P): deleted enum Constraints

	* wordLevel.hh (addConstraint): deleted
	(setTheoryConstraint): added
	(setUpperBound): added

	* variableConstraint.cc: created

2019-09-10  Steven Eker  <eker@mu>

	* wordLevel.cc (WordLevel): no need to initialize
	constraintMap
	(makeNewLevel): don't use addConstraint()
	(checkUnconstrainedVariables): use new constraintMap semantics
	(dump): use new constraintMap semantics

	* pigPug.hh (P): ConstraintMap is now Vector<VariableConstraint>

	* pigPug.cc (variableOccurrencesBoundedBy2): use new constraintMap
	semantics
	(rhsPeel): use new constraintMap semantics
	(equate): use new constraintMap semantics
	(lhsPeel): use new constraintMap semantics
	(lhsPeelGeneralCase): use new constraintMap semantics
	(rhsPeelGeneralCase): use new constraintMap semantics
	(fullyConstrained): use new constraintMap semantics
	(canCancelUnconstrained): use new constraintMap semantics
	(extractUnifier): use new constraintMap semantics
	(completed): use new constraintMap semantics

	* variableConstraint.hh: created

===================Maude124 (integrated with Maude128 on 2019-12-18)==================

2019-12-17  Steven Eker  <eker@mu>

	* macros.cc (doubleToString): use ::isnan() and ::isinf() to avoid
	ambiguity with older compilers

===================================Maude128===========================================

2019-12-16  Steven Eker  <eker@mu>

	* bddUser.hh (B): reverted to DEFAULT_NR_VARIABLES = 100 after
	a report of a problem under Linux (though not Darwin)

===================================Maude127a===========================================

2019-12-05  Steven Eker  <eker@mu>

	* macros.hh: added extern decl for returnValueDump

	* macros.cc: added returnValueDump global variable

2019-12-04  Steven Eker  <eker@mu>

	* rope.cc (+): use DebugSave() to avoid warning about unused variable

	* macros.hh (DebugSave): added

2019-12-03  Steven Eker  <eker@mu>

	* macros.hh (safeCastNonNull): added

===================================Maude127===========================================

2019-07-23  Steven Eker  <eker@mu>

	* rope.cc (rebuildStack): Assert() that we're not an iterator to an empty
	Rope and not out of range; don't try to fix out of range error

	* bddUser.cc (~BddUser): deleted; we no longer tear down and reinitialize
	BuDDy to avoid a memory corruption bug
	(BddUser): update buddyInitialized rather than nrUsers

	* bddUser.hh (B): delete decl for ~BddUser()
	(B): deleted static data member nrUsers
	(B): added static data member buddyInitialized
	(B): change DEFAULT_NR_VARIABLES = 10 since we seem to have avoided
	the BuDDy bug

2019-07-17  Steven Eker  <eker@mu>

	* bddUser.hh (B): change DEFAULT_NR_VARIABLES = 100 since it appears
	that increasing the number of variable mid-computation may be breaking
	BuDDy

2019-07-12  Steven Eker  <eker@mu>

	* macros.hh: added macro AlwaysAssert()

	* macros.cc: deleted stuff related to old STL extension
	template rope<>


===================================Maude123===========================================

2019-05-24  Steven Eker  <eker@mu.csl.sri.com>

	* rope.cc (+): reverted change so as not to break Assert()

2019-05-23  Steven Eker  <eker@mu.csl.sri.com>

	* rope.cc (+): remove unused variable len

2019-05-22  Steven Eker  <eker@mu.csl.sri.com>

	* macros.hh (DebugExit, DebugEnter, DebugInfo, DebugNew): define
	NO_ASSERT versions

2019-05-06  Steven Eker  <eker@mu.csl.sri.com>

	* macros.hh: use Tty::REVERSE rather than Tty::BLINK for DebugNew()

2019-05-03  Steven Eker  <eker@mu.csl.sri.com>

	* macros.hh: added DebugNew()

2019-04-10  Steven Eker  <eker@mu.csl.sri.com>

	* macros.hh: added DebugEnter(), DebugExit() and DebugInfo() macros

===================================Maude121===========================================

2017-07-27  Steven Eker  <eker@install.csl.sri.com>

	* macros.hh: forward decl for class Rope

===================================Maude115===========================================

2017-06-21  Steven Eker  <eker@install.csl.sri.com>

	* macros.cc (doubleToString): use isinf() rather than deprecated finite()

===================================Maude114===========================================

2017-04-04  Steven Eker  <eker@install.csl.sri.com>

	* decBuf.hh (insertDigit): fixed bug where Assert() was printing
	the address of cerr

===================================Maude112a===========================================

2017-03-15  Steven Eker  <eker@install.csl.sri.com>

	* natSet.cc (<): fix critical bug where we were putting Words from
	the arrays into ints and losing the top 32 bits on a 64-bit machine

===================================Maude112===========================================

2017-01-11  Steven Eker  <eker@install.csl.sri.com>

	* stack.hh: created

===================================Maude111b===========================================

2016-10-12  Steven Eker  <eker@install.csl.sri.com>

	* intSystem.cc (initializeUpperBounds): fix warning about
	signed/unsigned comparison in Assert()

===================================Maude111===========================================

2016-06-27  Steven Eker  <eker@install.csl.sri.com>

	* pigPug-cycleDetection.cc (arrive): fixed type

	* pigPug.cc (PigPug): fixed two typos
	(firstMove): fixed typo

===================================Maude110b===========================================

2016-05-16  Steven Eker  <eker@install.csl.sri.com>

	* pigPug.cc (firstMove): only print one message per unification
	subproblem about hitting depth bound

2016-05-11  Steven Eker  <eker@install.csl.sri.com>

	* wordLevel.cc (chooseEquation): prefer an equation with disjoint lhs/rhs
	variable sets

	* pigPug.cc (dump): conditional compile
	(dumpWord): conditional compile
	(dump): take stream argument

	* pigPug.hh (P): added declarations for arrive(), depart(),
	confirmedLive()
	(P): added typedefs CombinedWord, WordMap, StateStack and
	struct StateInfo
	(P): added data members wordMap, stateInfo and traversalStack

	* wordDigraph.cc: deleted

	* wordDigraph.hh: deleted

	* pigPug-cycleDetection.cc (arrive, depart, confirmedLive):
	moved here from wordDiagraph.cc

	* macros.hh: Verbose now prints its output in cyan

2016-05-10  Steven Eker  <eker@install.csl.sri.com>

	* pigPug.cc (canCancelUnconstrained): use lastOriginalVariable + 1
	rather than constraintMap.size()

2016-05-09  Steven Eker  <eker@install.csl.sri.com>

	* wordDigraph.cc: rewritten

	* wordDigraph.hh: rewritten

	* pigPug.cc (undoMove): don't mask off flags
	(cancel): use cancel flag
	(nextMove): mask flags

2016-05-06  Steven Eker  <eker@install.csl.sri.com>

	* pigPug.cc (variableOccurrencesBoundedBy2): fixed bug where we were zeroing
	to vector pointer rather than vector entries

	* pigPug.hh (P): added decls for firstMoveWithCycleDetection(),
	nextMoveWithCycleDetection(), runWithCycleDetection()
	(P): added data member wordDigraph

	* pigPug-cycleDetection.cc (runWithCycleDetection): added
	(firstMoveWithCycleDetection, nextMoveWithCycleDetection): added

	* pigPug.hh (P): updated decl for makeStateKey(); deleted typedefs
	StateKey, StateMap; deleted struct StateValue

	* pigPug-cycleDetection.cc (makeStateKey): moved here; use WordDigraph::Word

	* pigPug.cc (getNextUnifier): use runWithCycleDetection()
	(variableOccurrencesBoundedBy2): don't care about constrained variables

	* wordDigraph.hh: created

	* wordDiagraph.cc: created

2016-05-05  Steven Eker  <eker@install.csl.sri.com>

	* pigPug.hh (P): added decl for variableOccurrencesBoundedBy2()

	* pigPug.cc (variableOccurrencesBoundedBy2): added
	(PigPug): use variableOccurrencesBoundedBy2()

	* pigPug.hh (P): added decl for makeStateKey()
	(P): added data member cycleDetection

	* pigPug.cc (makeStateKey): added

	* pigPug.hh (P): added struct StateValue, typedefs StateKey, StateMap

	* pigPug.cc (run): don't do depthBound check here
	(firstMove): do depthBound check here
	(firstMove, nextMove): change order of branching so equate steps
	are done first
	(checkUnificand2): delete Assert() that is no longer true in the
	general case
	(firstMove, nextMove): reverted order of branching; it's currently
	important to have equate come last since it has the same move
	code as cancel, and cancel must not have successors

2016-05-04  Steven Eker  <eker@install.csl.sri.com>

	* pigPug.hh (P): updated decl for getNextUnifier()

	* wordLevel.cc (findNextPartialSolution): handle ReturnPair from
	getNextUnifier()

	* pigPug.cc (PigPug): initialize incompletenessFlag
	(getNextUnifier): return ResultPair rather than int
	(run): set incompletenessFlag if we hit depthBound

	* pigPug.hh (P): added data member incompletenessFlag; added enum
	OutcomeFlags; added typedef ResultPair

	* wordLevel.cc (chooseEquation): clean up

2016-04-27  Steven Eker  <eker@install.csl.sri.com>

	* wordLevel.cc (chooseEquation): return flag to say if chosen equation
	is strict left linear
	(findNextPartialSolution): pass strictLeftLinear flag to makePigPug()

	* wordLevel.hh (W): updated decls for chooseEquation() and makePigPug()

	* wordLevel.cc (makePigPug): take and pass strictLeftLinear flag

	* pigPug.cc: use strictLeftLinear flag rather than using depthBound
	as a proxy throughout code
	(run): check depthBound

	* pigPug.hh (P): made lastOriginalVariable and freshVariableStart
	const; made depthBound non-const; added strictLeftLinear; updated
	decl for ctor

2016-04-22  Steven Eker  <eker@install.csl.sri.com>

	* pigPug.cc (extractUnifier): handle the general case
	(completed): do occur checks in general case
	(completed): X =? X should not be an occur check fail

2016-04-20  Steven Eker  <eker@install.csl.sri.com>

	* pigPug.cc (firstMove, nextMove): rewritten to handle general case

2016-04-15  Steven Eker  <eker@install.csl.sri.com>

	* pigPug.hh (P): added decls for canCancelUnconstrained() and
	feasibleGeneralCase()

	* pigPug.cc (equate): check for and handle the general case
	(canCancelUnconstrained, feasibleGeneralCase): added

	* pigPug.hh (P): updated decl for ctor
	(P): added data member depthBound; made lastOriginalVariable and
	freshVariableStart const

	* pigPug.cc (rhsPeelGeneralCase): added
	(PigPug): take and initialize depthBound

	* pigPug.hh (P): added decl for lhsPeelGeneralCase(); updated decl for
	checkUnificand2()

	* pigPug.cc (undoMove): updated comment to mention general case
	(checkUnificand2): now take offset argument rather than implicitly
	assuming an offset of 1
	(lhsPeelGeneralCase): added

2016-03-11  Steven Eker  <eker@install.csl.sri.com>

	* bddUser.cc (~BddUser): free and clear cachedPairing
	if allocated

	* bddUser.hh (getCachedPairing): added
	(setNrVariables): free and clear cachedPairing if number of
	variables increases
	(B): added data member cachedPairing

===================================Maude110===========================================

2015-12-18  Steven Eker  <eker@ape.csl.sri.com>

	* rope.hh (empty): added

	* rope.cc (compare): added

	* rope.hh (R): addded decls for makeZeroTerminatedString() and
	compare()

	* rope.cc (makeZeroTerminatedString): added

2015-12-17  Steven Eker  <eker@ape.csl.sri.com>

	* rope.cc (dumpForest): use MAX_BALANCED_HEIGHT
	(rebalance): use MAX_BALANCED_HEIGHT

2015-12-16  Steven Eker  <eker@ape.csl.sri.com>

	* rope.cc (insertFragment): test against MAX_BALANCED_HEIGHT

	* rope.hh (R): added constants MAX_BALANCED_HEIGHT and STACK_SIZE

2015-12-11  Steven Eker  <eker@ape.csl.sri.com>

	* rope.hh (operator+=): moved here
	(operator-=): added
	(const_iterator): added decl for rebuildStack
	(<): added

	* rope.cc (const_iterator): clear absolutePosition
	(const_iterator): copy absolutePosition
	(operator=): copy absolutePosition
	(operator==): test absolutePosition
	(operator!=): test absolutePosition
	(++): increment absolutePosition
	(--): decrement absolutePosition
	(rebuildStack): added
	(operator+=): added

	* rope.hh (const_iterator): added data member absolutePosition
	(-): added

2015-12-10  Steven Eker  <eker@ape.csl.sri.com>

	* rope.hh (R): updated decl for substr()

	* rope.cc (substr): was previous called substring()

2015-12-09  Steven Eker  <eker@ape.csl.sri.com>

	* rope.cc (~Rope): call decCount

	* rope.hh (operator): call incCount ()and decCout()

	* rope.cc (addFragment): inc ref counts of balanced nodes
	encountered
	(rebalance): don't inc ref counts here

2015-12-04  Steven Eker  <eker@ape.csl.sri.com>

	* rope.hh (Rope): use new Fragment ctor

	* rope.cc (makeTree, +, rawConcat, substring): use new Fragment
	ctor

	* rope.hh (R): added delc for deepDelete();
	(incCount, decCount): added
	(Fragment): added

	* rope.cc (+, rebalance, substring): added incCount() calls
	(deepDelete): added

2015-11-25  Steven Eker  <eker@ape.csl.sri.com>

	* rope.hh (R): added decls for rebalance(), addFragment(),
	insertFragment(), rawConcat()

	* rope.cc (operator+): check for overflow
	(rebalance, addFragment, insertFragment, rawConcat): added
	(operator+): call rebalance if sum is unbalanced

2015-11-24  Steven Eker  <eker@ape.csl.sri.com>

	* rope.cc (operator--): added
	(operator--): consolidate cases

2015-11-20  Steven Eker  <eker@ape.csl.sri.com>

	* rope.hh (R): added static data member fiboTable

	* rope.cc (copy): added

	* rope.hh (R): added decl for madeTree();

	* rope.cc (makeTree): added

	* rope.hh (operator!= added): added
	(operator>=): added
	(operator<): added
	(operator>): added

	* rope.cc (operator<=): added

2015-11-19  Steven Eker  <eker@ape.csl.sri.com>

	* rope.cc (+): fixed bug where we using the wrong length for the
	right child leaf case

	* rope.hh: added from separate development

	* rope.cc: added from separate development

2015-07-24  Steven Eker  <eker@ape.csl.sri.com>

	* wordSystem.hh (W): updated decl for findNextSolution()

	* wordSystem.cc (findNextSolution): returns int

	* wordSystem.hh (W): incompletenessFlag replaces failureFlag

	* wordSystem.cc (findNextSolution): use incompletenessFlag rather
	than failureFlag

	* wordSystem.hh (W): don't give local name to Outcome
	(W): added enum OutcomeFlags

	* wordLevel.hh (W): enum OutcomeFlags replaces enum Outcome;
	ResultPair now has first component int
	(W): incompletenessFlag replaces failureFlag

	* wordLevel.cc (findNextPartialSolution): use incompletenessFlag
	rather than failureFlag
	(chooseEquation): set incompletenessFlag rather than failureFlag

2015-07-17  Steven Eker  <eker@ape.csl.sri.com>

	* wordLevel.hh (W): added data member failureFlag

	* wordSystem.hh (W): added data member failureFlag

	* wordSystem.cc (WordSystem): initialize failureFlag
	(findNextSolution): handle new WordLevel Outcome value

	* wordLevel.cc (findNextPartialSolution): use enum Outcome
	(chooseEquation): set failureFlag to INCOMPLETE if we have to add
	constraints
	(WordLevel): initialize failureFlag

	* wordLevel.hh (W): added enum Outcome; ResultPair now includes
	Outcome

2015-07-09  Steven Eker  <eker@ape.csl.sri.com>

	* wordLevel.hh (addAssignment): support multiple assignments for
	the same variable by turning subsequent assignments into equations

2015-07-08  Steven Eker  <eker@ape.csl.sri.com>

	* wordSystem.hh (getAssignment): made const
	(getNrVariables): added

	* wordLevel.hh (getNrVariables): added
	(getAssignment): made const

2015-07-01  Steven Eker  <eker@ape.csl.sri.com>

	* pigPug.hh (P): added decl for dumpWord()

	* pigPug.cc (dumpWord): added

	* wordSystem.hh (getAssignment): added

	* wordLevel.hh (getAssignment): added

2015-06-26  Steven Eker  <eker@ape.csl.sri.com>

	* wordLevel.cc (makePigPug): implemented

	* wordLevel.hh (WordLevel): added decls for chooseEquation(),
	checkUnconstrainedVariables(), makePigPug()

	* wordLevel.cc (~WordLevel): added
	(findNextPartialSolution): call getNextUnifier() and
	makeNewLevel()
	(chooseEquation): added
	(checkUnconstrainedVariables): added
	(makePigPug): added stub

2015-06-25  Steven Eker  <eker@ape.csl.sri.com>

	* wordSystem.cc: created

2015-06-19  Steven Eker  <eker@ape.csl.sri.com>

	* wordLevel-simplifyEquations.cc (simplifyEquation): fixed bug
	where we were passing the rhs twice to cancel() rather the lhs and
	rhs

	* wordLevel.cc (dump): handle cancelled equations

2015-06-18  Steven Eker  <eker@ape.csl.sri.com>

	* wordLevel-simplifyEquations.cc (simplifyEquation): newLhs/lhs
	the wrong way around; ditto rhs

	* wordLevel.hh (addAssignment): was addAssignment()

2015-06-17  Steven Eker  <eker@ape.csl.sri.com>

	* wordLevel.cc (dump): added
	(dumpWord): added

	* wordLevel.hh (W): added decl for dump()

	* wordLevel-simplifyAssignments.cc (fullyExpandAssignments):
	missing decl
	(reallyExpandAssignment): missing qualifier

2015-06-12  Steven Eker  <eker@ape.csl.sri.com>

	* wordLevel-simplifyEquations.cc: created

2015-06-05  Steven Eker  <eker@ape.csl.sri.com>

	* wordLevel-simplifyAssignments.cc: created

	* wordLevel.hh: created

	* wordLevel.cc: created

2015-05-01  Steven Eker  <eker@ape.csl.sri.com>

	* wordSystem.hh: created

2015-04-30  Steven Eker  <eker@ape.csl.sri.com>

	* pigPug.cc (run): compare value returned from completed() to fail

===================================Maude108===========================================

2015-02-12  Steven Eker  <eker@ape.csl.sri.com>

	* pigPug.hh (P): remapVariables() -> renameVariables()

	* pigPug.cc (renameVariables): was remapVariables()

2015-02-11  Steven Eker  <eker@ape.csl.sri.com>

	* pigPug.hh (P): added decls for fullyConstrained() and feasible()

	* pigPug.cc (fullyConstrained): added
	(feasible): added

	* pigPug.hh: added decls for remapVariables(),
	collectRangeVariables()
	(P): updated delc for extractUnifier()

	* pigPug.cc (extractUnifier): do variable remapping
	(remapVariables, collectRangeVariables): added

	* pigPug.hh (P): added data member lastOriginalVariable; deleted
	data member linear

	* pigPug.cc (PigPug): take lastOriginalVariable argument

2015-02-10  Steven Eker  <eker@ape.csl.sri.com>

	* pigPug.cc (dump): added
	(compose): (partial replacement version) fixed a nasty bug where
	we were looking at the wrong variable in the existing substitution

	* pigPug.hh (P): adde decl for dump()

	* pigPug.cc (extractUnifier): added

	* pigPug.hh (P): added decls for cancel(), compose(), compose2()

	* pigPug.cc (cancel): added
	(firstMove): use cancel()
	(compose, compose2): added
	(extractUnifier): use compose(), compose2()

2015-02-09  Steven Eker  <eker@ape.csl.sri.com>

	* pigPug.cc: created

	* pigPug.hh: created

===================================Maude107===========================================

2014-11-17  Steven Eker  <eker@ape.csl.sri.com>

	* sequenceAssignment.cc (computeBoundSum): instrumented
	(checkAndMakeMove): instrumented
	(SequenceAssignment): fixed nasty bug: need to start
	lhsCount[0]/rhsCount[0] at 1 since there is already an implicit 1-1
	match before the first move.

===================================Maude106===========================================

2014-04-01  Steven Eker  <eker@ape.csl.sri.com>

	* sequenceAssignment.cc (findNextSolution): fix a bug where we
	were not initializing moveIndex in the findFirst == false case

	* sequenceAssignment.hh (S): updated decl for findNextSolution()

	* sequenceAssignment.cc (findNextSolution): take findFirst and use
	it to determine when to initialize state

2014-03-25  Steven Eker  <eker@ape.csl.sri.com>

	* sequenceAssignment.cc (checkAndMakeMove): fixed bug where we
	were using boundSum rather than bounds

2014-03-24  Steven Eker  <eker@ape.csl.sri.com>

	* sequenceAssignment.cc (findNextSolution): fixed bug where we
	were  using lhsBoundSum.size() rather than rhsBoundSum.size()
	(checkAndMakeMove): added
	(unmakeMove): added

2014-03-20  Steven Eker  <eker@ape.csl.sri.com>

	* sequenceAssignment.cc: rewritten

	* sequenceAssignment.hh: rewritten using "grid move" approach to
	state representation

2014-03-05  Steven Eker  <eker@ape.csl.sri.com>

	* sequenceAssignment.cc: created

	* sequenceAssignment.hh: created

===================================Maude102===========================================

2013-11-21  Steven Eker  <eker@ape.csl.sri.com>

	* natSet.hh (containsSmall): added
	(N): added enum Values

===================================Maude100a===========================================

2013-10-09  Steven Eker  <eker@ape.csl.sri.com>

	* unionFind.hh (clear): added

===================================Maude98===========================================

2013-08-08  Steven Eker  <eker@ape.csl.sri.com>

	* natSet.hh: include "vector.hh" to simplify inclusions

===================================Maude97===========================================

2012-08-06  Steven Eker  <eker@ape.csl.sri.com>

	* ropeStuff.hh: support USE_ROPE_UGLY_HACK

2012-07-03  Steven Eker  <eker@ape.csl.sri.com>

	* mpzSystem.cc (insertEqn, initializeUpperBounds): added
	static_cast<>s to int to keep compiler happy

===================================Maude96a===========================================

2010-07-21  Steven Eker  <eker@rho>

	* allSat.cc (AllSat::nextAssignment): use firstAssignment rather
	than emptiness of assignment to figure out if we are generating
	our first solution so we can handle the degenerate with no
	variables

	* allSat.hh (class AllSat): added data member firstAssignment

===================================Maude94a===========================================

2010-04-16  Steven Eker  <eker@rho>

	* natSet.hh (class NatSet): added decl for getMaskSmall()

	* natSet.cc (NatSet::getMask): fix bug where we were shifting a
	32-bit 1
	(NatSet::topBit): fix symmetric bug
	(NatSet::insert, NatSet::subtract): fix symmetric bugs
	(NatSet::getMaskSmall): added
	(NatSet::topBit, NatSet::getMask, NatSet::insert)
	(NatSet::subtract): use getMaskSmall()

	* natSet.hh (NatSet::swap): fix bug where we were using an int as
	a temporary rather than a Word

	* natSet.cc (NatSet::topBit, NatSet::getShift, NatSet::getMask):
	use BITS_PER_WORD
	(NatSet::arrayMin, NatSet::insert, NatSet::subtract): use
	BITS_PER_WORD
	(NatSet::getWordNr): divide by unsigned value by BITS_PER_WORD
	rather than right shift by LOG_WORD_SIZE

	* natSet.hh (class NatSet): make Word a long; define BITS_PER_WORD
	(NatSet::contains): use BITS_PER_WORD rather than WORD_SIZE
	(NatSet::max): multiply by BITS_PER_WORD rather than shift by
	LOG_WORD_SIZE

===================================Maude93a===========================================

2010-03-11  Steven Eker  <eker@rho>

	* vector.hh: use != rather than < in for loops

===================================Maude93===========================================

2010-03-01  Steven Eker  <eker@rho>

	* natSet.hh (class NatSet): added decl for getShift()

	* natSet.cc (NatSet::arrayContains): changed return type to
	FastBool; use getShift(); shift word left rather than 1 right
	(NatSet::getShift): added

	* natSet.hh: changed return type to FastBool; shift word left
	rather than 1 right

	* macros.hh: added typedef FastBool

2010-02-26  Steven Eker  <eker@rho>

	* macros.hh (setOnLs, setOnGeq): deleted

2010-02-19  Steven Eker  <eker@rho>

	* macros.hh (getSignBit): commented out

===================================Maude92c===========================================

2009-12-02  Steven Eker  <eker@goo.csl.sri.com>

	* pointerSet.cc (findEntry): move call to collision() inside loop

2009-11-30  Steven Eker  <eker@goo.csl.sri.com>

	* pointerSet.hh (class PointerSet): added decl for collision() in
	debug mode

===================================Maude92b===========================================

2009-09-23  Steven Eker  <eker@goo.csl.sri.com>

	* bddUser.cc (err_handler): check and call errorHandler if set

	* bddUser.hh (setErrorHandler): added
	(class BddUser): added typedef ErrorHandler; static variable
	errorHandler

2009-09-22  Steven Eker  <eker@goo.csl.sri.com>

	* bddUser.hh (class BddUser): added decl for err_handler()

	* bddUser.cc (err_handler): added

===================================Maude92a===========================================

2008-09-11  Steven Eker  <eker@goo.csl.sri.com>

	* intContejeanDevie.cc (findNextMinimalSolution): init lastNfnz to
	aviod compiler warning

	* mpzContejeanDevie.cc (findNextMinimalSolution): init lastNfnz to
	aviod compiler warning

	* binBuf.cc (times10): & -> &&

2008-09-04  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: switch order of HAVE_STRING_H and HAVE_STRINGS_H to
	appease gcc 4.3.1

2008-05-09  Steven Eker  <eker@goo.csl.sri.com>

	* mpzContejeanDevie.cc (initialize): update upperbound Assert()
	(findNextMinimalSolution): handle upperbound == NONE case

	* mpzSystem.hh (class MpzSystem): added comments about new
	representation of unbounded

	* mpzSystem.cc (initializeUpperBounds): use NONE rather than
	UNBOUNDED to represent unbounded since UNBOUNDED is actually a
	valid result

2008-05-08  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added forwards decls for classes IntSet, Indent,
	MpzSystem and IntSystem

	* ttyAttributes.hh: deleted - appears to be redundant code

	* intSystem.cc (IntSystem): added
	(insertEqn): allow IntVecs of varying length to be passes and pad
	them with zeros when making a deep copy

	* intSystem.hh (class IntSystem): make nrVariables const; add decl
	for ctor

	* intContejeanDevie.cc: created

	* intSystem.hh: created

	* intSystem.cc: created

===================================Maude91a===========================================

2008-03-13  Steven Eker  <eker@goo.csl.sri.com>

	* graph.cc (Graph, color, colorNode, visit): updated

	* graph.hh (class Graph): convert to adjacency set representation
	(insertEdge): updated

===================================Maude90a===========================================

2007-07-23  Steven Eker  <eker@goo.csl.sri.com>

	* bddUser.hh (setNrVariables): moved here and made inline

===================================Maude89d===========================================

2007-01-22  Steven Eker  <eker@goo.csl.sri.com>

	* bddUser.hh (class BddUser): added decl for gc_handler()

	* bddUser.cc (gc_handler): added
	(BddUser): call bdd_gbc_hook()

2007-01-12  Steven Eker  <eker@goo.csl.sri.com>

	* allSat.cc (nextAssignment): fixed bug where we were not setting
	assignment entry to 1 when we take high branch

2007-01-11  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added class AllSat

	* allSat.cc: created

	* allSat.hh: created

===================================Maude88d===========================================

2005-10-06  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: #if before includes; include <unistd.h>
	(DebugAdvisory): make them blue

	* ropeStuff.hh: fix #if test for g++ major versions > 3

2005-09-07  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem3.hh: deleted

	* diophantineSystem2.cc:  deleted

	* diophantineSystem2.hh:  deleted

	* diophantineSolve.cc:  deleted

	* diophantineSystem3.cc:  deleted

	* mpzGcdInit.cc (integerGaussianElimination, initializeGcd): ifdef
	out analysis code

	* mpzGcdBasedSolver.cc (solveDiagonal): ifdef out analysis code

2005-09-06  Steven Eker  <eker@goo.csl.sri.com>

	* mpzGcdBasedSolver.cc (nextSolution): handle nrFreeVariables == 0
	case; simplified
	(solveDiagonal): check for trivial solution
	(fillOutLastEntry): handle zero coefficient variables

	* mpzGcdInit.cc (initializeGcd): added DebugAdvisory() for all
	positive equation; updated comments
	(initializeGcd): init lastPrediagNeg to NONE in all +ve case

2005-09-01  Steven Eker  <eker@goo.csl.sri.com>

	* mpzGcdBasedSolver.cc (nextSolution): don't use nrEquations
	(solveDiagonal, fillOutLastEntry): don't use nrEquations

	* mpzGcdInit.cc (integerGaussianElimination): initialize nrFreeVariables

	* mpzGcdBasedSolver.cc (findNextMinimalSolutionGcd): moved a lot
	of initialization code

	* mpzGcdInit.cc (initializeGcd): to here

	* mpzSystem.hh (class MpzSystem): data member nrEquations replaced
	by nrFreeVariables

	* mpzGcdInit.cc (initializeGcd): don't init lastPrediagNonzero
	(initializeGcd): added divid thru by final gcd optimization

	* mpzSystem.hh (class MpzSystem): deleted data members
	pruneLastPrediag, lastPrediagNonzero

	* mpzGcdBasedSolver.cc (fillOutStackEntry): initialize base, inc
	and bound to default values
	(solveDiagonal): added optimization for diagonal variables all
	zero case

2005-08-31  Steven Eker  <eker@goo.csl.sri.com>

	* mpzSystem.hh (class MpzSystem): deleted zeroSoFar field from
	struct StackEntry

	* mpzGcdBasedSolver.cc (solveDiagonal): cleaned up
	(fillOutStackEntry): decide if our current partial solution is all
	zero by comparing leftOver to sumBound rather than by using
	zeroSoFar field
	(fillOutLastEntry): symmetric change
	(findNextMinimalSolutionGcd): don't init zeroSoFar field
	(nextSolution): don't clear zeroSoFar field
	(fillOutStackEntry): don't init zeroSoFar field
	(fillOutStackEntry): use updateResidues()
	(fillOutLastEntry): use updateResidues()

	* mpzSystem.hh (class MpzSystem): added decl for updateResidues()

	* mpzGcdBasedSolver.cc (updateResidues): added
	(nextSolution): simplify using updateResidues()
	(nextSolution): restructuring

2005-08-24  Steven Eker  <eker@goo.csl.sri.com>

	* mpzGcdBasedSolver.cc (findNextMinimalSolutionGcd): return
	solutions incrementally; re-permute solutions

	* mpzSystem.hh (class MpzSystem): added decl for computeSumBound()

	* mpzGcdInit.cc (computeSumBound): added
	(initializeGcd): use computeSumBound(); recompute sumBound after
	integerGaussianElimination()

	* mpzSystem.hh (class MpzSystem): added decl for dumpEqns()
	(class MpzSystem): added decls for findConcensus() and
	solveTwoVariableProblem()
	(class MpzSystem): added many gcd solver specific data members
	(class MpzSystem): addded struct StackEntry, decls for
	nextSolution(), fillOutStackEntry(), fillOutLastEntry(),
	solveDiagonal()

	* mpzSystem.cc (dumpEqns): added

	* mpzContejeanDevie.cc (initialize): use initializeUpperBounds()

	* mpzSystem.hh (class MpzSystem): added decl for
	initializeUpperBounds()

	* mpzSystem.cc (initializeUpperBounds): added

2005-08-23  Steven Eker  <eker@goo.csl.sri.com>

	* mpzSystem.hh (class MpzSystem): reorganized to split out solver
	specific stuff

	* mpzContejeanDevie.cc (isZero): moved here

	* mpzSystem.cc (minimal): moved here

	* mpzGcdBasedSolver.cc: created

	* mpzContejeanDevie.cc (findNextMinimalSolution): code cleaning
	(findNextMinimalSolution): use the invariant that variables that
	have reached their upper bounds are frozen to simplify test

2005-08-22  Steven Eker  <eker@goo.csl.sri.com>

	* mpzContejeanDevie.cc (initialize): code cleaning
	(initialize): check for zero upper bound

2005-08-18  Steven Eker  <eker@goo.csl.sri.com>

	* mpzSystem.cc (insertEqn): fixed eqn vs eqns bug

	* mpzSystem.hh: created

	* mpzContejeanDevie.cc: created

	* mpzSystem.cc: created

	* macros.hh (DebugPrint): added
	(DebugPrintNL): added

===================================Maude86c===========================================

2005-03-10  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (enum SpecialConstants): added GARBAGE to enum SpecialConstants

2005-01-11  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (ComplexWarning): added

===================================Maude86===========================================

2004-12-15  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (DebugAdvisory): print debug advisories in red

2004-11-12  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSolve.cc (solveDiagonal): negate the residue before dividing
	(fillOutStackEntry): fix bad zeroSoFar propagation

	* diophantineSystem3.cc (findNextMinimalSolution): initialize
	leftOver, residue, solution, stack

2004-11-11  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem3.hh (class DiophantineSystem3): added decls
	for nextSolution(), fillOutStackEntry(), fillOutLastEntry(),
	solveDiagonal()
	(class DiophantineSystem3): added data members solution and residues
	(class DiophantineSystem3): added struct StackEntry
	(class DiophantineSystem3): added data members stack, leftOver

	* diophantineSystem3.cc (takeStep): fix upper bounds bug

	* diophantineSolve.cc: created

2004-11-08  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem3.cc (initialize): fill out lastPrediagNonzero properly
	(takeStep): implement lastPrediagNeg opt
	(integerGaussianElimination): fixed double increment bug in erase case

2004-11-04  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem3.cc (finalStep): zero out unbound variables;
	check minimality
	(takeStep): added minimality check for partial solution
	(takeStep): put minimality check in search loop

	* diophantineSystem3.hh (class DiophantineSystem3): added decls
	for greaterEqual() and minimal()

	* diophantineSystem3.cc (findNextMinimalSolution): zero solution
	to allow minimality testing on partial solutions
	(takeStep): zero out variable once we are done
	(greaterEqual): added
	(minimal): added

2004-11-03  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem3.cc (takeStep): handle zeroSoFar arg
	(finalStep): handle zeroSoFar arg

	* diophantineSystem3.hh (class DiophantineSystem3): replaced
	pruneLastPrediag with firstPrunablePrediag; added data member
	lastPrediagNonzero

2004-11-02  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem3.cc (initialize): do sign calculations for
	prediagonal columns
	(finalStep): avoid trivial solution; pruneLastPrediag optimization

	* diophantineSystem3.hh (class DiophantineSystem3): added data
	members lastPrediagNeg and pruneLastPrediag

2004-11-01  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem3.cc (finalStep): added

2004-10-29  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem3.cc: init gcds
	(takeStep): added
	(concensus): added
	(findNextMinimalSolution): call takeStep()

	* diophantineSystem3.hh (class DiophantineSystem3): added decl fo
	solve(); added data member gcds

	* diophantineSystem3.cc (solve): added

2004-10-28  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem3.cc (integerGaussianElimination): added
	DebugAdvisory() for all zero equations

2004-10-27  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem3.cc (integerGaussianElimination): rewritten

2004-10-26  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem3.cc: created

	* diophantineSystem3.hh: created

	* diophantineSystem2.cc (solve): handle the case where a gets
	negated on its own properly
	(takeStep): rewrite to handle g = 0 properly

2004-10-25  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem2.hh (class DiophantineSystem2): added decls
	for finalStep() and takeStep()

	* diophantineSystem2.cc (concensus): got args to solve() the wrong
	way arround
	(solve): x_base vs x_start conflict
	(finalStep): added
	(takeStep): added

2004-10-22  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem2.hh (class DiophantineSystem2): added decl for concensus()

	* diophantineSystem2.cc (concensus): added

	* diophantineSystem2.hh (class DiophantineSystem2): added decls
	for newSolve() and gcd()

	* diophantineSystem2.cc (gcd): added
	(newSolve): added

2004-10-21  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem2.hh (class DiophantineSystem2): added data
	member sumBound

	* diophantineSystem2.cc (initialize): added sum bound computation

2004-10-20  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem2.hh (class DiophantineSystem2): updated decl
	for solve()

	* diophantineSystem2.cc (solve): rewritten to allow the option of
	allowing -ve values for y and also of placing upper bounds on x
	and y

2004-10-18  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem2.cc (dumpMatrix): added
	(integerGaussianElimination): added
	(initialize): use integerGaussianElimination()

2004-10-08  Steven Eker  <eker@goo.csl.sri.com>

	* checkedConstIterator.hh (operator++, operator--, operator+)
	(operator-): added typename to pacify g++ 2.4.2

	* checkedIterator.hh (operator++): added typename to pacify g++ 2.4.2
	(operator--): added extra typename to pacify g++ 2.4.2
	(operator-): added extra typename to pacify g++ 2.4.2
	(operator+): added extra typename to pacify g++ 2.4.2

2004-10-07  Steven Eker  <eker@goo.csl.sri.com>

	* indexedSet.hh (insert): added extra typename to pacify g++ 2.4.2

2004-09-24  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem2.cc (findNextMinimalSolution): added variable
	forcing code
	(findNextMinimalSolution): freeze variable when we hit bounds
	(initialize): freeze variable in its start vector if it has bound 1

2004-09-20  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem2.hh (class DiophantineSystem2): deleted decl
	for product()

	* diophantineSystem2.cc (initialize): rewritten
	(findNextMinimalSolution): rewritten
	(findNextMinimalSolution): avoid copying residue
	(product): deleted
	(greaterEqual): made local_inline
	(minimal): made local_inline
	(isZero): made local_inline
	(scalerProduct): made local_inline

	* diophantineSystem2.hh (class DiophantineSystem2): added struct
	State; changed many data members

2004-09-17  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem2.hh (class DiophantineSystem2): leaves becomes
	list<int>; added data member current

	* diophantineSystem2.cc (initialize): clear residue and current
	(findNextMinimalSolution): rewritten using new stack structure

	* diophantineSystem2.hh (class DiophantineSystem2): decl for
	greater() becomes greaterEqual()

	* diophantineSystem2.cc (greater): become greaterEqual() since
	this is a faster computation
	(minimal): use greaterEqual() in place of greater

2004-09-09  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem2.hh (class DiophantineSystem2): adde decls for
	setUpperBounds, initialize and residue

	* diophantineSystem2.cc (setUpperBounds): added
	(initialize): added

	* diophantineSystem2.hh (class DiophantineSystem2): updated decl
	for scalerProduct(); added VecList

	* diophantineSystem2.cc (scalerProduct): rewritten to be specific
	to system
	(DiophantineSystem2): deleted
	(product): don't resize result; use new rows type
	(scalerProduct): use new rows type
	(findNextMinimalSolution): rewritten

2004-09-08  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem2.cc (greater): fixed bug where j was not being
	incremented

2004-09-07  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem2.cc (findNextMinimalSolution): rewritten to
	avoid explicit frozen flags and start with a set of vectors

2004-08-27  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem2.cc: created

2004-08-26  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem2.hh: created

===================================Maude85===========================================

2004-03-16  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (DebugAdvisoryCheck): allow to be switched off with
	globalAdvisoryFlag
	(DebugAdvisory): allow to be switched off with globalAdvisoryFlag

===================================Maude84===========================================

2003-10-01  Steven Eker  <eker@goo.csl.sri.com>

	* macros.cc (stringToDouble): work around for versions of atof()
	that don't handle Infinity

===================================Maude82===========================================

2003-07-29  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: don't do Darwin fix here

	* mathStuff.hh: moved Darwin fix here

2003-07-25  Steven Eker  <eker@goo.csl.sri.com>

	* macros.cc: use mathStuff.hh

	* mathStuff.hh: created

2003-07-24  Steven Eker  <eker@goo.csl.sri.com>

	* macros.cc: added explicit template for crope for old g++ versions

2003-07-22  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: cleaned up LOCAL_INLINES

	* timer.hh: use timeStuff.hh

	* timeStuff.hh: created

2003-07-21  Steven Eker  <eker@goo.csl.sri.com>

	* ropeStuff.hh: rewritten using tests from
	http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html
	in an effort to get more portability

2003-07-16  Steven Eker  <eker@goo.csl.sri.com>

	* ropeStuff.hh: created

===================================Maude81===========================================

2003-07-15  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: use long in place of long long int on 64 bit machines
	since the latter is not supported by iostream on Alpha with libv3;
	likewise with unsigned long long int
	(setOnLs): use naive code if HAVE_CMOV defined
	(setOnGeq): use naive code if HAVE_CMOV defined

2003-07-01  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: #include "config.h"; check HAVE_STRINGS_H and HAVE_STRING_H

2003-05-19  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (FOR_EACH_CONST): added parens around container

===================================Maude80a===========================================

2003-05-01  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (swap): deleted
	(min): deleted
	(max): deleted

	* checkedConstIterator.hh (operator*): made const
	(operator->): made const

	* checkedIterator.hh (operator*): made const
	(operator->): made const

===================================Maude80===========================================

2003-03-11  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added FOR_EACH_CONST() macro

2003-03-03  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (getSignBit): added

2003-02-26  Steven Eker  <eker@goo.csl.sri.com>

	* checkedIterator.hh (difference_type>): made class const_iterator
	a friend

	* checkedConstIterator.hh (difference_type>): added decl for
	conversion ctor
	(const_iterator): added conversion version

2003-02-24  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh (Vector): updated Assert()
	(operator[]): updated Assert() (both versions)
	(expandTo): updated Assert()
	(clear): updated Assert()

	* unionFind.cc: 

	* unionFind.hh: 

	* ttyAttributes.hh: removed #pragma

	* tty.cc: removed #pragma

	* tty.hh: removed #pragma

	* timer.cc: removed #pragma

	* timer.hh: removed #pragma

	* stringTable.cc: removed #pragma

	* stringTable.hh: removed #pragma

	* sequencePartition.cc (SequencePartition): removed #pragma
	(insertPart): updated Assert()s
	(solve): updated Assert()
	(mainSolve): updated Assert()s

	* sequencePartition.hh: removed #pragma
	(start): updated Assert()s
	(end): updated Assert()s

	* preVector.cc: removed #pragma

	* preVector.hh: removed #pragma
	(setLength): updated Assert()

	* pointerSet.cc: removed #pragma
	(findEntry): updated Assert()

	* pointerSet.hh: removed #pragma

	* pointerMap.cc: removed #pragma
	(setMap): updated Assert()
	(getMap): updated Assert()

	* pointerMap.hh: removed #pragma

	* natSet.cc: removed #pragma
	(topBit): updated Assert()
	(bottomBit): updated Assert()
	(getMask): updated Assert()
	(getWordNr): updated Assert()
	(arrayContains): updated Assert()
	(insert): updated Assert()
	(subtract): updated Assert()
	(operator++): updated Assert()

	* natSet.hh: removed #pragma
	(contains): updated Assert()
	(operator*): updated Assert()

	* intSet.cc: removed #pragma
	(findEntry): updated Assert()

	* intSet.hh: removed #pragma

	* indexedSet.hh: removed #pragma

	* indent.cc: removed #pragma

	* indent.hh: removed #pragma

	* graph.cc: removed #pragma

	* diophantineSystem.cc: removed #pragma

	* graph.hh: removed #pragma

	* diophantineSystem.cc (insertRow): updated Assert()s
	(insertColumn): updated Assert()s
	(solve): updated Assert()
	(buildSolubilityVectors): updated Assert()
	(precompute): updated Assert()s
	(multisetSelect): updated Assert()s
	(multisetComplex): updated Assert()s
	(solveLastRowComplex): updated Assert()
	(solveRowComplex): updated Assert()s

	* diophantineSystem.hh: removed #pragma
	(solution): updated Assert()s

	* digraph.cc: removed #pragma

	* digraph.hh: removed #pragma

	* decBuf.cc: removed #pragma
	(ascii): updated Assert()

	* decBuf.hh: removed #pragma

	* binBuf.cc: removed #pragma
	(init): updated Assert()

	* binBuf.hh: removed #pragma

	* checkedIterator.hh (checkValid): updated Assert()s
	(checkDereferenceable): updated Assert()s
	(operator--): updated Assert()
	(operator+): updated Assert()
	(operator-): updated Assert()
	(operator[]): updated Assert()
	(operator<): updated Assert()
	(operator-): updated Assert()

	* checkedConstIterator.hh (checkValid): updated Assert()s
	(checkDereferenceable): updated Assert()s
	(operator--): updated Assert()
	(operator+): updated Assert()
	(operator-): updated Assert()
	(operator[]): updated Assert()
	(operator<): updated Assert()
	(operator-): updated Assert()

	* bddUser.cc: removed #pragma

	* bddUser.hh: removed #pragma

	* bdd.cc: removed #pragma

	* bdd.hh: removed #pragma

	* macros.hh (floorDivision): updated Assert()
	(ceilingDivision): updated Assert()

	* flagSet.hh: removed #pragma

	* macros.cc: removed #pragmas
	(int64ToString): updated Assert()
	(stringToInt64): updated Assert()

	* macros.hh: removed #pragma
	(DebugAdvisoryCheck): message rather than action
	(Assert): message rather than action

===================================Maude79===========================================

2003-02-12  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (safeCast): handle null pointers in the assert case

===================================Maude78===========================================

2003-01-06  Steven Eker  <eker@goo.csl.sri.com>

	* macros.cc (doubleToString): special case for 0.0

2003-01-02  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (SpecialConstants): added BITS_PER_BYTE and BITS_PER_INT
	(setOnLs): use BITS_PER_INT
	(setOnGeq): use BITS_PER_INT

2002-12-19  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (setOnLs): added
	(setOnGeq): added

2002-12-03  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh: removed #pragma interface since it causes g++3.2 not
	to emit default and copy contructors for nested classes in certain
	complex situations

2002-11-27  Steven Eker  <eker@goo.csl.sri.com>

	* macros.cc (doubleToString): rewritten using correctEcvt() since
	ostrstreams don't get precision right with version 3 of stdc++
	library

===================================Maude77============================================

2002-11-26  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (union MachineWord): added

2002-11-25  Steven Eker  <eker@goo.csl.sri.com>

	* macros.cc (doubleToString): made "misplaced exponent" Assert
	more detailed since it is failing
	(doubleToString): don't clean number up because new libc++ is not
	returning number in requested format

	* indexedSet.hh: added many typenames to placate g++3.2

2002-11-20  Steven Eker  <eker@goo.csl.sri.com>

	* checkedConstIterator.hh (checkDereferenceable): fixed Assert()
	message

	* checkedIterator.hh (checkDereferenceable): fixed Assert()
	message

	* vector.hh (rawBasePointer): (both versions) deleted

2002-11-18  Steven Eker  <eker@goo.csl.sri.com>

	* checkedConstIterator.hh: added many typenames to placate g++3.2

	* checkedIterator.hh: added many typenames to placate g++3.2
	
===================================Maude77==================================================

2002-11-14  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: rewrote Advisory/Warning macros

2002-11-11  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added fwd decl for class FlagSet

	* macros.cc: provide implementation for flagSet.hh

	* flagSet.hh: created

2002-11-05  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh: deleted VECTOR_HACK() and CONST_VECTOR_HACK() macros

	* timer.cc: moved here

	* timer.hh: moved here

	* macros.hh: deleted class BigNum; added class Timer

2002-11-01  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh: added many typename's to placate g++3.2
	
===================================Maude76==================================================

2002-08-02  Steven Eker  <eker@goo.csl.sri.com>

	* graph.cc (color): resize coloring as a precaution

2002-08-01  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (DebugAdvisory): added

2002-07-11  Steven Eker  <eker@goo.csl.sri.com>

	* natSet.hh (operator*): added assert to check that we are not at
	the end of the set
	
===================================Maude74==================================================

2002-06-11  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added typedef unsigned int Uint

2002-06-07  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (SpecialConstants): added BITS_PER_UINT
	
===================================Maude73==================================================

2002-05-09  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added CantHappen() macro

2002-05-03  Steven Eker  <eker@goo.csl.sri.com>

	* bigNum.cc: deleted

	* bigNum.hh: deleted

2002-04-30  Steven Eker  <eker@goo.csl.sri.com>

	* bigNum.hh (class BigNum): added unsigned int versions of
	assignAdd(), assignSub(), assignMul(); added getValue(),
	getRemainder()

2002-04-24  Steven Eker  <eker@goo.csl.sri.com>

	* bigNum.hh (class BigNum): made makeString() const
	
===================================Maude72==================================================

2002-04-23  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added fwd decl for class BigNum

2002-04-04  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added fwd decl for class Tty;

2002-04-01  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh (clear): added
	
===================================Maude71a==================================================

2002-03-22  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: made base have default value of 10 for
	int64ToString() and stringToInt64()

2002-03-12  Steven Eker  <eker@goo.csl.sri.com>

	* pointerSet.hh (swap): added

2002-03-11  Steven Eker  <eker@goo.csl.sri.com>

	* unionFind.cc: deleted explicit template instantiation

	* sequencePartition.cc: deleted explicit template instantiation

	* pointerSet.cc: deleted explicit template instantiation

	* pointerMap.cc: deleted explicit template instantiation

	* macros.cc: deleted explicit template instantiations

	* diophantineSystem.cc: deleted explicit template instantiations
	
===================================Maude71==================================================

2002-03-08  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh (begin): fixed casting bug
	(end): fixed casting bug

2002-03-07  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh (capacity): added

	* preVector.hh (empty): rewritten to generate better code when
	inlined on x86. Generating good code on Sparc seems impossible -
	the compiler always wants to generate a 0 or 1 result in a
	register as a result  of this function and then test it to see if
	it 0 or 1 in the calling if statement!

	* vector.hh (empty): added

	* preVector.hh (empty): added

2002-03-06  Steven Eker  <eker@goo.csl.sri.com>

	* checkedConstIterator.hh (class const iterator): declare ptr
	using type const_pointer

	* checkedIterator.hh (checkValid): use static_cast<pointer>
	(checkDereferenceable): use static_cast<pointer>
	(class iterator): declare ptr using type pointer

	* checkedConstIterator.hh (checkValid): use
	static_cast<const_pointer>()
	(checkDereferenceable): use static_cast<const_pointer>()

	* checkedIterator.hh (iterator): (private version) use pointer
	type in cast

	* vector.hh (class Vector): support const_iterator

	* checkedConstIterator.hh: created

	* vector.hh (operator): must not call freeMemory() if getBase()
	returns 0

	* preVector.hh (class PreVector): deleted decl for reallocate()

	* preVector.cc (reallocate): deleted

	* vector.hh (Vector): (1 arg version) new initAllocate()
	convention; call setLength()
	(Vector): (2 arg version) new initAllocate() convention; we
	alreday call setLength()
	(Vector): (copy ctor) new initAllocate() convention; call
	setLength()
	(expandTo): new initAllocate() convention
	(append): new initAllocate() convention (2 places); call
	setLength() (1st place)
	(operator=): use freeMemory() & initAllocate() in place of
	reallocate()

	* preVector.cc (initAllocate): take atLeastBytes rather than
	length and size arguments. The idea is to do the multiply on the
	outside where the multiplier will probably be a known constant
	(initAllocate): don't set length because we don't have this value;
	it will have to be done on the outside

	* preVector.hh: updated decl for initAllocate()

	* vector.hh (expandTo): reallocate memory using a temporary
	PreVector; copy and delete objects
	(append): reallocate memory using a temporary PreVector; copy and
	delete objects; fix long standing bug that we were reallocating
	when pv.getAllocatedBytes() <= neededBytes rather than when
	pv.getAllocatedBytes() < neededBytes

	* preVector.hh (initSteal): added

2002-03-05  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh (resize): rewritten to fix bug now that subtraction
	cannot produce -ve results

	* checkedIterator.hh (iterator): added a bunch of typedefs so that
	sort() algorithm from the STL will work

	* vector.hh (operator): use size() rather than length() (both
	versions)

	* preVector.hh: int -> size_t throughout

	* preVector.cc (initAllocate): int -> size_t

	* checkedIterator.hh: int -> size_type throughout
	(checkValid): removed Assert() now that we can't be -ve
	(checkDereferenceable): removed Assert() now that we can't be -ve
	(operator+=): removed Assert() now that we can't be -ve
	(operator-=): removed Assert() now that we can't be -ve
	(operator[]): removed Assert() now that we can't be -ve

	* vector.hh: int -> size_type throughout
	(class Vector): retain int for length() just in case we add a -ve
	value to in somewhere. Eventually we should move to size() and
	check this
	(size): added
	(Vector): removed Assert() now that we can't be -ve (2 versions)
	(operator[]): removed Assert() now that we can't be -ve (2 versions)
	(expandBy): removed Assert() now that we can't be -ve

	* checkedIterator.hh (operator--): added both versions
	(operator+=): added
	(operator-=): added
	(operator+): added
	(operator-): added
	(operator[]): added
	(operator<): added
	(operator=): added
	(operator-): added iterator difference version
	(operator+): added friend version
	(operator-): optimized
	(operator+): optimized
	(iterator): give up on trying to provide operator+(int, iterator&)
	- not clear how this can be accomplished and deque<>::iterator in
	the STL fails to provide this despite the STL documentation

2002-03-04  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh: use checked iterators for begin() and end()

	* checkedIterator.hh: created

2002-02-28  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added forward decl for class Bdd

	* bddUser.cc (extractPrimeImplicant): removed

	* bddUser.hh: cleaned up; removed class Bdd stuff

	* bdd.cc (extractPrimeImplicant): moved here

	* bdd.hh (class Bdd): moved here

2002-02-25  Steven Eker  <eker@goo.csl.sri.com>

	* bddUser.hh (class Bdd): added ctors

	* bddUser.cc (extractPrimeImplicant): added

	* bddUser.hh (class Bdd): added decl for extractPrimeImplicant()

2002-02-13  Steven Eker  <eker@goo.csl.sri.com>

	* tty.hh (setEscapeSequencesAllowed): added

	* tty.cc: created

	* tty.hh: created
	
===================================Maude70==================================================

2002-01-24  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (pluralize): added

	* macros.cc: added globalVerboseFlag

	* macros.hh: added Verbose() macro

2001-12-17  Steven Eker  <eker@goo.csl.sri.com>

	* indexedSet.hh (insert): added FastPair version
	(class IndexedSet): added FastPair type
	(insert): use -> for iterator
	(find): use -> for iterator
	(ithElement): use -> for iterator

2001-12-14  Steven Eker  <eker@goo.csl.sri.com>

	* natSet.hh (operator=): test element before natSet
	(operator!): test element before natSet

	* natSet.cc (operator++): implemented
	(getWord): becomes getWordNr
	(getMask): added Assert()
	(getWordNr): added Assert
	(operator<<): rewritten using iterators

2001-12-13  Steven Eker  <eker@goo.csl.sri.com>

	* natSet.hh (min): moved here and rewritten in terms of
	arrayMin(); made inline

	* natSet.cc (countBits): use 16 entry lookup table method; make
	local_inline
	(arrayMin): added

	* natSet.hh (clear): was makeEmpty()

	* natSet.cc (topBit): don't test for zero word here, Assert()
	instead
	(bottomBit): added Assert() for zero word
	(cardinality): becomes size()

	* natSet.hh (max): do test for empty set here

2001-12-12  Steven Eker  <eker@goo.csl.sri.com>

	* natSet.cc (min): made non-inline since with gc++ 3.0 it's not
	possible to have a function inline in one file and yet have an
	outlined copy for calls from other files: "An inline function must
	be defined in every translation unit that references it." - g++
	problem report 3833 response

2001-12-10  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh (Vector): added const to cast on originalVector
	(operator[]): use const in cast
	(operator): added const to cast on originalVector
	(rawBasePointer): use const in cast

===================================Maude69==================================================

2001-12-05  Steven Eker  <eker@goo.csl.sri.com>

	* modelChecker2.hh (getLeadIn): added
	(getCycle): added

	* modelChecker2.cc (dfs2PropertyTransitions): store counterexample
	info
	(dfs1PropertyTransitions): store counterexample info

	* veryWeakAlternatingAutomaton.cc (computeTransitionSet): use
	ithvar() and nithvar()

	* bddUser.hh (class BddUser): added enum Constants

	* bddUser.cc (BddUser): use enum Constants

	* bddUser.hh (ithvar): added
	(nithvar): added

2001-12-04  Steven Eker  <eker@goo.csl.sri.com>

	* modelChecker2.cc: created

	* modelChecker2.hh: created

2001-12-03  Steven Eker  <eker@goo.csl.sri.com>

	* buchiAutomaton2.hh (getInitialStates): added

2001-11-28  Steven Eker  <eker@goo.csl.sri.com>

	* buchiAutomaton2.cc (remapNatSet): added
	(hasNonAcceptingTarget): added
	(transformTransitionMap): added
	(collapseStates): added
	(BuchiAutomaton2): use collapseStates()

	* genBuchiAutomaton.cc (dump): don't print out undefined states;
	these states can be created during VWAA->GBA conversion but never
	get fleshed out because the transition(s) to them are subsumed in
	the transitions sets in which they occur

	* sccOptimizations.cc (sccOptimizations): fixed bug in rebuiling
	the GBA where we were looking the state number up in
	fairTransitionSets rather than the state number after translation
	into a fair set number

	* buchiAutomaton2.cc (generate): fixed new state number
	calculation bug

2001-11-27  Steven Eker  <eker@goo.csl.sri.com>

	* buchiAutomaton2.cc (dump): don't try to print transition sets
	for empty states

	* buchiAutomaton2.hh (class BuchiAutomaton2): added decls for
	generate() and insertTransition()

	* buchiAutomaton2.cc (generate): added
	(insertTransition): added

2001-11-26  Steven Eker  <eker@goo.csl.sri.com>

	* genBuchiAutomaton.hh (getNrStates): added
	(getNrFairnessSets): added
	(getInitialStates): added
	(getFairnessCombination): added
	(getTransitions): added

	* buchiAutomaton2.hh: created

	* buchiAutomaton2.cc: created

2001-11-21  Steven Eker  <eker@goo.csl.sri.com>

	* sccOptimizations.cc (handleComponent): fixed bug where a
	degenerate SCC (i.e. a single node without a self transition)
	could be labelled as fair if there were no fairness sets.

	* genBuchiAutomaton.hh (class GenBuchiAutomaton): complete
	redesign of data structure for SCC optimizations
	(class GenBuchiAutomaton): updated decl for handleComponent()

	* sccOptimizations.cc: complete rewrite of all functions using new
	data structures; fix a bug where we were failing to remove
	fairness info from transitions leaving fair component

2001-11-20  Steven Eker  <eker@goo.csl.sri.com>

	* sccOptimizations.cc (sccOptimizations): moved here
	(eliminateFairness): moved here
	(transformFairTransitionSet2): moved here
	(strongConnected): moved here
	(handleComponent): moved here

	* genBuchiAutomaton.hh (class GenBuchiAutomaton): optimize() ->
	collapseStates()

	* genBuchiAutomaton.cc (GenBuchiAutomaton): loop on
	collapseStates() until number of states is equal to number of
	distinct transtions

	* collapseStates.cc (optimize): moved here; renamed to collapseStates()
	(transformFairTransitionSet): moved here
	(insertFairTransition2): moved here

	* genBuchiAutomaton.cc (optimize): initialStates becomes a NatSet,
	use remapNatSet()
	(GenBuchiAutomaton): initialStates becomes a NatSet
	(dump): initialStates becomes a NatSet
	(sccOptimizations): initialStates becomes a NatSet

2001-11-19  Steven Eker  <eker@goo.csl.sri.com>

	* genBuchiAutomaton.cc (remapNatSet): added

	* genBuchiAutomaton.hh (class GenBuchiAutomaton): added decls for
	eliminateFairness(), transformFairTransitionSet2(), remapNatSet()

	* genBuchiAutomaton.cc (eliminateFairness): added
	(transformFairTransitionSet2): added

	* genBuchiAutomaton.hh (class GenBuchiAutomaton): added data
	members essential, eliminated

	* genBuchiAutomaton.cc (GenBuchiAutomaton): call sccOptimizations()

	* genBuchiAutomaton.hh (class GenBuchiAutomaton): added data
	members alive, tarjan, stateStack
	(class GenBuchiAutomaton): added decls for sccOptimizations(),
	strongConnected(), handleComponent()
	(class GenBuchiAutomaton): added data members nrFairnessSets,
	stateCount, componentNr

	* genBuchiAutomaton.cc (sccOptimizations): added
	(strongConnected): added
	(handleComponent): added

	* genBuchiAutomaton.hh (class GenBuchiAutomaton): added data
	member allFair

	* genBuchiAutomaton.cc (GenBuchiAutomaton): initialize allFair
	(generateState): use allFair

2001-11-16  Steven Eker  <eker@goo.csl.sri.com>

	* genBuchiAutomaton.hh (class GenBuchiAutomaton): added decls for
	insertFairTransition2(), transformFairTransitionSet(), optimize()

	* genBuchiAutomaton.cc (transformFairTransitionSet): added
	(optimize): added
	(GenBuchiAutomaton): call optimize()

	* indexedSet.hh (swap): added

	* genBuchiAutomaton.cc (dump): updated to use new states
	(generateState): updated to use new states
	(insertFairTransition2): added

	* genBuchiAutomaton.hh (class GenBuchiAutomaton): added typedef
	for FairTransitionSetTable and data member fairTransitionSets;
	changed states to Vector<int>

2001-11-15  Steven Eker  <eker@goo.csl.sri.com>

	* genBuchiAutomaton.cc (insertFairTransition): bdd -> Bdd

	* genBuchiAutomaton.hh (class GenBuchiAutomaton): bdd -> Bdd

	* rawTransitionSet.hh (Transition>): don't use class LtTransition

	* transitionSet.hh: bdd -> Bdd

	* transitionSet.cc (insert): bdd -> Bdd

	* transitionSet.hh (struct LtTransition): deleted

	* bddUser.hh (class Bdd): added

2001-11-14  Steven Eker  <eker@goo.csl.sri.com>

	* veryWeakAlternatingAutomaton.cc (computeFairnessSet): fixed
	nasty bug where we were calling checkFairness() with final states
	index in final state array rather than its index in state array

	* veryWeakAlternatingAutomaton.hh (getNrFinalStates): added

	* genBuchiAutomaton.cc (generateState): handle empty state case

2001-11-13  Steven Eker  <eker@goo.csl.sri.com>

	* genBuchiAutomaton.cc (GenBuchiAutomaton): implemented
	(dump): added

	* veryWeakAlternatingAutomaton.hh (getInitialStates): added

	* genBuchiAutomaton.hh (class GenBuchiAutomaton): added decl for
	getStateIndex(); componentStates -> vwaaStateSets

	* genBuchiAutomaton.cc (generateState): use
	VeryWeakAlternatingAutomaton::computeFairnessSet(); much simplification
	componentStates -> vwaaStateSets throughout
	(getStateIndex): added
	(generateState): simplified using getStateIndex()

	* veryWeakAlternatingAutomaton.hh (class
	VeryWeakAlternatingAutomaton): added decl for
	computeFairnessSet(); made checkFairness() private

	* veryWeakAlternatingAutomaton.cc (computeTransitionSet): append()
	rather than finalStates
	(reachabilityOpt): rewrote final states renaming code
	(dump): updated final state code
	(computeFairnessSet): added

	* veryWeakAlternatingAutomaton.hh (class
	VeryWeakAlternatingAutomaton): finalStates changed to vector<int>

2001-11-12  Steven Eker  <eker@goo.csl.sri.com>

	* genBuchiAutomaton.cc (insertFairTransition): added

	* rawTransitionSet.hh (class RawTransitionSet): turned product()
	decl into a ctor decl

	* rawTransitionSet.cc (product): make into a ctor to avoid the
	need for a default ctor

	* veryWeakAlternatingAutomaton.hh (getTransitionSet): added

	* genBuchiAutomaton.cc: created

	* genBuchiAutomaton.hh: created

2001-11-09  Steven Eker  <eker@goo.csl.sri.com>

	* transition.hh: created

	* rawTransitionSet.hh: created

	* veryWeakAlternatingAutomaton.hh (class
	VeryWeakAlternatingAutomaton): added decl for checkFairness()

	* rawTransitionSet.cc: created

	* veryWeakAlternatingAutomaton.cc (checkFairness): added

2001-11-08  Steven Eker  <eker@goo.csl.sri.com>

	* transitionSet.cc (product): fixed bug in computation of new
	transition bdd

	* transitionSet.hh (class TransitionSet): added decl for rename()

	* transitionSet.cc (rename): added

	* veryWeakAlternatingAutomaton.cc: rewritten using new state
	representation

	* veryWeakAlternatingAutomaton.hh (class
	VeryWeakAlternatingAutomaton): make states have type TransitionSet
	rather than structs containg a pointer to a TransitionSet

	* transitionSet.hh (swap): added

	* veryWeakAlternatingAutomaton.cc: complete rewrite using class
	TransitionSet

	* veryWeakAlternatingAutomaton.hh (class
	VeryWeakAlternatingAutomaton): complete rewrite using class
	TransitionSet

	* transitionSet.hh (class TransitionSet): added decl for dump()

	* natSet.cc (operator<<): added

	* natSet.hh: added decl for operator<<

	* transitionSet.cc (dump): added

2001-11-07  Steven Eker  <eker@goo.csl.sri.com>

	* transitionSet.hh: created

	* transitionSet.cc: created

2001-11-05  Steven Eker  <eker@goo.csl.sri.com>

	* veryWeakAlternatingAutomaton.cc (reachable): added
	(reachabilityOpt): added
	(VeryWeakAlternatingAutomaton): call reachabilityOpt()

	* veryWeakAlternatingAutomaton.hh (class
	VeryWeakAlternatingAutomaton): added decls for relabelNatSet() and
	relabel()

	* veryWeakAlternatingAutomaton.cc (relabel): added
	(relabelNatSet): added

	* natSet.hh (swap): added

2001-11-02  Steven Eker  <eker@goo.csl.sri.com>

	* veryWeakAlternatingAutomaton.cc (simplify): fixed bug with inner
	loop bound
	(VeryWeakAlternatingAutomaton): generate automtata in most naive
	way possible
	(dump): added
	(dump): (NatSet version) added
	(product): fixed inner loop initilaization bug (both versions)

2001-10-30  Steven Eker  <eker@goo.csl.sri.com>

	* veryWeakAlternatingAutomaton.hh (class
	VeryWeakAlternatingAutomaton): added decls for sum(), product()
	and computeConjunctionSet()

	* veryWeakAlternatingAutomaton.cc (product): fixed bug where we
	were insert *j twice and not *i; don't call clear()
	(product): added ConjunctionSet version
	(sum): don't call clear()
	(sum): added ConjunctionSet version
	(computeConjunctionSet): added
	(computeTransitionSet): handle NEXT case

2001-10-29  Steven Eker  <eker@goo.csl.sri.com>

	* veryWeakAlternatingAutomaton.hh (class
	VeryWeakAlternatingAutomaton): added decl for
	computeTransitionSet()

	* veryWeakAlternatingAutomaton.cc (computeTransitionSet): added

	* veryWeakAlternatingAutomaton.hh (getNrStates): added

	* veryWeakAlternatingAutomaton.cc (sum): clear result before
	inserting stuff
	(product): clear result before inserting stuff
	(~VeryWeakAlternatingAutomaton): added

	* buchiAutomaton.hh (implies): deleted

	* bddUser.hh (implies): added
	(implies): added

	* natSet.hh (class NatSet): added decl for operator<()

	* natSet.cc (operator<): added

	* veryWeakAlternatingAutomaton.hh (operator<): added

2001-10-18  Steven Eker  <eker@goo.csl.sri.com>

	* bddUser.hh: added decl for setNrVariables()

	* bddUser.cc (setNrVariables): added

	* buchiAutomaton.hh (getNrStates): added
	(isAccepting): added
	(getTransitions): added

	* buchiAutomaton.cc (handleComponent): check doAlphaBalls flag
	(BuchiAutomaton): make sure first round of sccOptimizations
	doesn't simplify alpha-balls

	* buchiAutomaton.hh (class BuchiAutomaton): added data member
	doAlphaBalls

2001-10-12  Steven Eker  <eker@goo.csl.sri.com>

	* buchiAutomaton.cc (BuchiAutomaton): don't call
	simulationReduction() if there are no states

	* buchiAutomaton.hh (class BuchiAutomaton): added alphaBallIndex
	to struct State; added data member alphaBallLabels;

	* buchiAutomaton.cc (handleComponent): handle alpha-balls
	(sccOptimizations): handle alpha-balls

2001-10-11  Steven Eker  <eker@goo.csl.sri.com>

	* buchiAutomaton.cc (simulationReduction): handle construction of
	new automata
	(simulationReduction): we have a subtle bug in that if the
	simulationReductionStep merely permutes the colors, we think
	nothing has changed and build the new automaton using out of date
	neighborhood data in the current color set. This bug is provoked
	when we start with a coloring of accepting = 0 because then state
	0 gets color 1. So for a quick fix we swap the roles of 0 and 1 in
	initial coloring
	(simulationReductionStep): need to return true if the number of
	colors increases even in the partial order does not
	(BuchiAutomaton): loop over sccOptimizations() and
	simulationReduction() to fixed point
	(simulationReduction): need check for increase in number of colors
	here rather than in simulationReductionStep()

2001-10-10  Steven Eker  <eker@goo.csl.sri.com>

	* buchiAutomaton.cc (simulationReduction): added
	(simulationReductionStep): added
	(insertMaximal): added
	(dominates): added
	(dominates): added

	* indexedSet.hh (clear): added
	(ithElement): fix bug where we were trying to return map pair
	rather than first element

	* buchiAutomaton.hh (operator<): added
	(ArcType): added

	* indexedSet.hh (insert): fixed bug where we were using
	IndexMap::iterator rather than EltMap::iterator

2001-10-09  Steven Eker  <eker@goo.csl.sri.com>

	* buchiAutomaton.hh (class BuchiAutomaton): added all the typedefs
	needed to construct colr sets

	* indexedSet.hh: created

	* buchiAutomaton.hh (class BuchiAutomaton): added decl for
	handleComponent()

	* buchiAutomaton.cc (sccOptimizations): remap live states
	(handleComponent): added

	* buchiAutomaton.hh (class BuchiAutomaton): added alive field

2001-10-08  Steven Eker  <eker@goo.csl.sri.com>

	* buchiAutomaton.hh (class BuchiAutomaton): added decls for
	sccOptimizations() and strongConnected()

	* buchiAutomaton.cc (sccOptimizations): added
	(strongConnected): added

	* buchiAutomaton.hh (class BuchiAutomaton): added number and
	lowLink fields to struct State
	(class BuchiAutomaton): deleted lowLink since we will used the
	optimized Tarjan SCC algorithm; added component field

2001-10-04  Steven Eker  <eker@goo.csl.sri.com>

	* buchiAutomaton.cc (dump): use BddUser::dump()

	* bddUser.hh (class BddUser): added decl for dump()

	* bddUser.cc (dump): added

	* buchiAutomaton.cc (BuchiAutomaton): fix missing arc bug; handle
	no nrAcceptingSets case

2001-10-03  Steven Eker  <eker@goo.csl.sri.com>

	* generalizedBuchiAutomaton.hh (getNrAcceptingSets): added
	(getNrStates): added
	(getAcceptingStates): added
	(getFormulaIndices): added
	(getInitialStates): added
	(getNextStates): added

	* bddUser.cc: created

	* bddUser.hh: created

	* buchiAutomaton.cc: created

	* buchiAutomaton.hh: created

	* generalizedBuchiAutomaton.cc: used to be buchiAutomaton.cc;
	everything renamed

	* generalizedBuchiAutomaton.hh: used to be buchiAutomaton.hh;
	everything renamed

2001-09-28  Steven Eker  <eker@goo.csl.sri.com>

	* buchiAutomaton.cc: moved here from Higher; simplified includes
	(cover): Assert() that TRUE and FALSE cannot occur in main switch;
	true should imply redundant() while false should imply
	contradiction()

	* buchiAutomaton.hh: moved here from Higher

	* logicFormula.cc: moved here from Higher
	(makeProp): store propositions as ints
	(dump): dump propositions as ints

	* logicFormula.hh: moved here from Higher
	(class LogicFormula): store propositions as ints rather than
	dagnode ptrs
	(getProp): updated

===================================Maude68==================================================

2001-05-16  Steven Eker  <eker@goo.csl.sri.com>

	* macros.cc (doubleToString): fixed bug where we didn't allocate
	space in buffer[] for trailing '\0' causing ABRs and ABWs under
	purify (and potential memory corruption)
	
===================================Engine67==================================================

2001-04-03  Steven Eker  <eker@goo.csl.sri.com>

	* bigNum.hh (class BigNum): fixed long standing bug - all 3
	compare()s now correctly return int rather than bool
	
===================================Engine66==================================================

2000-06-23  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (safeCast): added
	
===================================Engine58==================================================

2000-06-20  Steven Eker  <eker@goo.csl.sri.com>

	* macros.cc (doubleToString): handle NaN and +/-Infinity specially
	to get consistant behavior across platforms

2000-06-19  Steven Eker  <eker@goo.csl.sri.com>

	* macros.cc (correctEcvt): return sign as 1, 0 or -1 rather than 1
	=> -ve

	* macros.hh: added decl for correctEcvt()

	* macros.cc (correctEcvt): added (allong with decBuf.hh,
	decBuf.cc, binBuf.hh binBuf.cc)

2000-06-14  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added #define for INT_DOUBLE_MAX

2000-06-13  Steven Eker  <eker@goo.csl.sri.com>

	* macros.cc (looksLikeFloat): recognize +Infinity, -Infinity, Infinity

2000-06-12  Steven Eker  <eker@goo.csl.sri.com>

	* macros.cc (doubleToString): clean up number by removing trailing
	zeros from mantissa and leading zeros from exponent; if exponent
	is zero, remove it altogether

2000-06-09  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added decl for looksLikeFloat()

	* macros.cc (looksLikeFloat): added

2000-06-07  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added typedefs for Int32 and Uint32

2000-05-23  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh (Vector): updated Assert()
	(Vector): updated Assert()s
	(operator[]): (both versions) updated Assert()
	(expandTo): updated Assert()
	(contractTo): updated Assert()

2000-05-16  Steven Eker  <eker@goo.csl.sri.com>

	* macros.cc (int64ToString): rewritten using Uint64 -
	simpler/faster
	(stringToInt64): simplified

2000-05-15  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added decl for Uint64

2000-05-09  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: added decls for int64ToString() and stringToInt64()

	* macros.cc (int64ToString): added
	(stringToInt64): added

2000-03-16  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (ErrorCheck): commented out
	
===================================Engine56==================================================

2000-02-22  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (NO_COPYING): used to be NO_DEFAULTS

2000-02-17  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (NO_DEFAULTS): added NO_DEFAULTS macro

2000-02-14  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh (sort): commented out function deleted
	(operator): updated Asserts
	
===================================Engine55==================================================

1999-12-15  Steven Eker  <eker@goo.csl.sri.com>

	* unionFind.hh (elementCount): made const

	* unionFind.cc (findRep): made const

	* unionFind.hh (class UnionFind): made vector mutable and made
	findRep() and elementCount() decls const
	
===================================Engine54==================================================

1999-12-01  Steven Eker  <eker@goo.csl.sri.com>

	* natSet.cc (disjoint): call ::min() for disambiguation
	(intersect): call ::min() for disambiguation

	* natSet.hh (class NatSet): added decl for bottomBit()

	* natSet.cc (bottomBit): added
	(min): added

	* natSet.hh (class NatSet): added decl for min();

1999-11-29  Steven Eker  <eker@goo.csl.sri.com>

	* natSet.hh (max): fixed long standing precedence bug (+ vs <<)

1999-11-01  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (INT64_MAX): added #defines for INT64_MAX, INT64_MIN
	and INT64_MIN_STRING

1999-10-07  Steven Eker  <eker@goo.csl.sri.com>

	* macros.cc: added def for globalAdvisoryFlag

	* macros.hh: added extern dec for globalAdvisoryFlag
	(AdvisoryCheck): test globalAdvisoryFlag
	(IssueAdvisory): test globalAdvisoryFlag

1999-10-04  Steven Eker  <eker@goo.csl.sri.com>

	* pointerSet.cc (hash): reinterpret_cast<unsigned> ->
	reinterpret_cast<unsigned long> in order to compile on alpha

	* pointerMap.cc (hash): reinterpret_cast<int> ->
	reinterpret_cast<long> in order to compile on alpha
	(hash2): reinterpret_cast<int> -> reinterpret_cast<long> in order
	to compile on alpha

1999-08-05  Steven Eker  <eker@goo.csl.sri.com>

	* sequencePartition.cc (insertPart): plus() -> uplus()

	* macros.hh (plus): changed to uplus() to avoid conflict with STL

1999-08-02  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem.cc (precompute): rowLeq() -> rowLt()
	(rowLt): from rowleq()

	* diophantineSystem.hh (class DiophantineSystem): rowLeq() -> rowLt()

1999-07-30  Steven Eker  <eker@goo.csl.sri.com>

	* diophantineSystem.hh (class DiophantineSystem): updated decl for
	rowLeq()

	* diophantineSystem.cc (rowLeq): need to take references rather
	than pointers!

	* diophantineSystem.hh (class DiophantineSystem): replaced decl
	for rowCompare() with decl for rowLeq()

	* diophantineSystem.cc (precompute): use STL sort function
	(rowCompare): replaced by rowLeq()

	* vector.hh (begin): added
	(end): added

1999-07-28  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh: use iostream and fstream rather than iostream.h and
	fstream.h
	
===================================Engine51==================================================

1999-06-01  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh (CONST_VECTOR_HACK): added VECTOR_HACK and
	CONST_VECTOR_HACK macros

1999-02-19  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh (Vector): have to call setLength since length is not
	the same as preallocate!
	(append): unmade prev change as it did not save a register load
	(append): try reversing outer if-the-else

	* preVector.cc (initAllocate): remember to actually store length!

	* preVector.hh (class PreVector): deleted decl for test()

	* preVector.cc (test): deleted

	* vector.hh (operator=): use reallocate() instead of initAllocate()
	(append): call setLength() in both inner branches in the hope of
	avoiding a register load in the common case

	* preVector.cc (initAllocate): now take length and size rather
	than bytes needed

	* preVector.hh (class PreVector): updated decl for initAllocate()

	* vector.hh (Vector): use new initAllocate() semantics (all 3 versions)
	(Vector): for() -> do-while() (2 non-preallocate versions

	* pointerSet.hh (class PointerSet): removed implicit inline ~PointerSet()

	* pointerSet.cc (~PointerSet): added

	* unionFind.hh (class UnionFind): deleted explicit ctors/dtors

	* vector.hh (Vector): made copy ctor inline
	(~Vector): made destructor inline
	(Vector): makesure we actually use preallocate value
	(expandTo): check for non-null vector before calling setLength()

	* preVector.hh (setLength): changed test on ptr != 0 to an Assert()

	* vector.hh (sort): removed call to test
	(append): split into two cases
	(contractTo): check for non-null vector before calling setLength()
	(operator=): check for non-null vector before calling setLength()

1999-02-17  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh (isNull): added for fast tests for unused vectors

	* preVector.cc (test): temporarily added to try and locate UMR

1999-02-12  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh: completely rewritten using PreVector
	(operator=): check to see that vector is non-zero before calling
	freeMemory() since the memory we actually free will be vector -
	sizeof(...) and will break delete on null
	(sort): don't call qsort() unless we have > 1 objects in vector

	* preVector.cc: created

	* preVector.hh: created

1999-02-11  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh: rewritten to use 1 word vectors for space efficiency
	(bytesAllocated): now return size_t rather than int
	(reallocate): only call memcpy if vector != 0
	(allocate): remember to add sizeof(VectorHeader) to freshly
	allocated memory to get vector
	(reallocate): likewise
	(allocate): remember to subtract off size of header to get
	allocated bytes
	(reallocate): likewise
	(allocate): added static_cast<char*>
	(reallocate): added static_cast<char*>

===================================VectorExperiment==========================================

1999-02-05  Steven Eker  <eker@goo.csl.sri.com>

	* natSet.cc: completely rewritten using bit array + first word
	implementation
	(arrayContains): added
	(topBit): added
	(countBits): added
	(getMask): added

	* macros.hh (SpecialConstants): added LOG_WORD_SIZE to enum SpecialConstants

	* natSet.hh: completely rewritten using bit array + first word
	implementation

1999-02-02  Steven Eker  <eker@goo.csl.sri.com>

	* natSet.hh (class NatSet): added decl for makeEmpty()
	(makeEmpty): added

===================================Engine47==================================================
===================================Maude 1.00 released=======================================

1999-01-19  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh (Vector): copy ctor; only allocated enough memory

1999-01-14  Steven Eker  <eker@goo.csl.sri.com>

	* vector.hh (class Vector): modified MIN_SIZE and TAG_SIZE after
	having a look at the latest version of Doug Lea's malloc(); need
	to modify overall approach to be 64bit compatable sometime

1999-01-13  Steven Eker  <eker@goo.csl.sri.com>

	* macros.hh (IssueAdvisory): call cerr.flush()
	(IssueAdvisory): unmade chane since it seems superfluous after all

==============================Engine46==========================================

Thu Oct 29 11:45:08 1998  Steven Eker  <eker@lilac.csl.sri.com>

	* macros.hh (IssueAdvisory): added

Thu Oct 22 13:30:47 1998  Steven Eker  <eker@lilac.csl.sri.com>

	* macros.hh (IssueWarning): added

Thu Oct  8 11:38:47 1998  Steven Eker  <eker@lilac.csl.sri.com>

	* pointerMap.cc (hash): use reinterprete_cast
	(hash2): use reinterprete_cast

	* pointerSet.cc (hash): use reinterprete_cast

	* vector.hh (Vector): (both ctors) cast new to void
	
==============================Engine38==========================================

Thu Sep 10 13:46:08 1998  Steven Eker  <eker@lilac.csl.sri.com>

	* macros.hh: added typedef for Int64

Thu Jun 11 15:57:41 1998  Steven Eker  <eker@lilac.csl.sri.com>

	* intSet.hh: created; loosely based on pointerSet.hh

	* intSet.cc: created; loosely based on pointerSet.cc

	* pointerSet.cc (insert): (pointer version): slightly optimized;
	now return index of inserted pointer

	* pointerSet.hh (class PointerSet): insert() members now return
	index to inserted pointer
	(insert): return index to inserted pointer

	* stringTable.cc (resize): optimized along the lines of pointerSet
	hash table
	(encode): partly optimized

Wed Jun 10 18:02:36 1998  Steven Eker  <eker@lilac.csl.sri.com>

	* macros.hh: deleted Validate macro

Tue Jun  9 11:53:15 1998  Steven Eker  <eker@lilac.csl.sri.com>

	* graph.cc: IntSet -> NatSet

	* digraph.cc: deleted #include "intSet.hh"

	* macros.hh: IntSet -> NatSet

	* natSet.cc: renamed from IntSet.cc; IntSet -> NatSet

	* natSet.hh (class NatSet): renamed from IntSet.hh; IntSet ->
	NatSet
	
==============================Engine38==========================================

Fri Jan 16 18:14:31 1998  Steven Eker  <eker@lilac.csl.sri.com>

	* macros.hh (DebugAdvisoryCheck): added

Fri Jan  9 14:57:50 1998  Steven Eker  <eker@lilac.csl.sri.com>

	* macros.hh (operator<<): added version for Bool
	deleted --- C++ typedefs don't create new types so we can't have
	overloaded i/o operators for Bool
	
==============================Engine34==========================================

Mon Nov 10 16:02:38 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* pointerSet.cc (insert): fixed longstanding bug where we were
	inserting our set rather than other set!

Tue Oct  7 11:39:13 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* pointerSet.cc: major rewrite as described below

	* pointerSet.hh (class PointerSet): major rewrite to allow
	possibility of passing hash values in with pointers rather than
	overloading hash(void*) for a call back. In some situations the
	hash value may be available to the caller but cannot be cached in
	the pointed to object and therefore would need to be recomputed in
	the call back - which might be expensive.

Fri Oct  3 16:12:55 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* dataSet.cc: deleted

	* dataSet.hh: deleted

	* pointerSet.cc: heavily rewritten; we now store raw hash values
	to avoid unnecessary virtual function calls

	* pointerSet.hh (class PointerSet): heavily redesigned for greater
	generality and performance. It can now serve as a base class and
	eliminates the need for class DataSet
	
==============================Engine29==========================================

Tue Sep 30 15:54:23 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* dataSet.hh (data2Index): make work correctly wth empty set

	* pointerSet.hh (pointer2Index): added

	* dataSet.cc (hash): created

	* dataSet.hh (class DataSet): created
	
==============================Engine28==========================================

Wed Aug 20 16:45:50 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* macros.hh: added #include <ctype.h>

Wed Aug 13 10:55:18 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* macros.hh (SpecialConstants): added INT_TEXT_SIZE
	added #include <strstream.h>

Tue Jun  3 14:34:06 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* diophantineSystem.cc: changed "inline" to "local_inline" throughout

	* diophantineSystem.hh (class DiophantineSystem): altered comment
	on maxLeave data member of struct Row since it is now used in
	simple case as well as the complex case.

	* diophantineSystem.cc (solveRowSimple): fixed serious bug where
	we were leaving too much stuff for last row (in the case where the
	last row had an upper bound). We now take r.maxLeave into account
	when calculating the minimum assignment size for current row.

Tue May 20 10:45:15 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* bigNum.hh (class BigNum): added wrappers for comparison macros

Wed May  7 15:51:42 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* macros.hh: added forward decl for PointerSet

Tue Apr 29 15:29:52 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* parser.cc (extractParse): added
	(extract): added
	(exists): added
	(getSon): added
	(getRule): added
	(dumpParseTree): added
	(dumpNode): added

Thu Apr 24 16:04:16 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* parser.cc (addItem): added
	(complete): added

Wed Apr 23 16:11:22 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* parser.hh (class Parser): created

	* parser.cc: created

Thu Apr 17 11:23:12 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* macros.cc: added 3 template instantiations

Wed Apr 16 15:44:06 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* pointerSet.cc: created

Tue Apr 15 18:35:13 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* pointerSet.hh: created

Wed Apr  2 12:06:23 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* stringTable.cc (StringTable): use delete [] rather than delete
	to free string (bug detected by demo purify)

Wed Feb  5 12:00:39 1997  Steven Eker  <eker@lilac.csl.sri.com>

	* macros.hh (local_inline): added

Wed Oct 16 10:48:31 1996  Steven Eker  <eker@lilac.csl.sri.com>

	* macros.hh (SpecialConstants): DEFAULT = -1 added

Wed Oct  9 11:40:21 1996  Steven Eker  <eker@lilac.csl.sri.com>

	* indent.cc: created

	* indent.hh: created

Thu Sep 19 11:39:32 1996  Steven Eker  <eker@lilac.csl.sri.com>

	* sequencePartition.hh (end): return sequenceLength - 1 for end of
	last part

Wed Sep 18 16:27:36 1996  Steven Eker  <eker@lilac.csl.sri.com>

	* diophantineSystem.hh: comments fixed

	* diophantineSystem.cc (insertRow): Assert test simplified to make
	use of UNBOUNDED as a comparable value (MAX_INT)

	* sequencePartition.cc: created

	* sequencePartition.hh (class SequencePartition): created

Thu Aug 15 11:37:37 1996  Steven Eker  <eker@nmos.csl.sri.com>

	* macros.hh: added PointerMap to forward class declarations

Wed Aug 14 18:02:28 1996  Steven Eker  <eker@nmos.csl.sri.com>

	* pointerMap.cc (resize): fixed missing mask for hash(p.from)
	(resize): fixed bug where we were checking old hash table rather
	than new hash table

Wed Aug  7 09:37:32 1996  Steven Eker  <eker@nmos.csl.sri.com>

	* macros.hh (SpecialConstants): NR_PTR_ZERO_BITS renamed to
	NR_PTR_LOSE_BITS since chopped bits will not neccessarily be zero

	* pointerMap.hh (class PointerMap): created

	* pointerMap.cc: created

	* symbolTable.cc (setDefinition): need to increment "used"

Tue Aug  6 16:50:38 1996  Steven Eker  <eker@nmos.csl.sri.com>

	* macros.hh (SpecialConstants): NR_PTR_ZERO_BITS added so we can
	chop the zeros of a pointer when hashing

Fri Aug  2 15:23:34 1996  Steven Eker  <eker@nmos.csl.sri.com>

	* symbolTable.cc (SymbolTable): fixed initial size bug

Wed Jul 31 10:35:40 1996  Steven Eker  <eker@nmos.csl.sri.com>

	* symbolTable.cc (SymbolTable): no longer initialize stringTable base

	* symbolTable.hh (class SymbolTable): created
	(class SymbolTable): no longer derived from string table

	* stringTable.hh (class StringTable): make hash() and hash2() static

	* symbolTable.cc: created

Tue Jul 30 15:37:44 1996  Steven Eker  <eker@nmos.csl.sri.com>

	* stringTable.cc: created (adapted from old symbolTable.cc)

	* macros.hh (SpecialConstants): UNUSED = -1 added (enum used be SpecialValues)

	* stringTable.hh (class StringTable): created (adapted from old SymbolTable)

Thu Jul 11 15:59:24 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* macros.hh (plus): added

Fri Jun 28 17:17:17 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* macros.hh (ASsert): deleted

Thu Jun 20 14:27:26 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* macros.hh (swap): added

Wed Jun 19 12:10:07 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* vector.hh (bytesAllocated): added
	(bytesAllocated): now return int

Tue Jun 18 17:28:14 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* vector.hh (expandBy): allow expansion by 0 for cleaner calling code

Sat Jun 15 14:45:57 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* intSet.cc (subtract): added (int case)
	(subtract): added (intSet case)
	(intersect): added

Fri Jun 14 16:33:18 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* macros.hh: added forward declarations for utility classes 

Thu Jun 13 10:57:07 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* vector.hh (rawBasePointer): const version added
	ASsert() -> Assert()

Sat Jun  8 14:02:46 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* graph.cc (visit): fixed stupid infinite loop

	* digraph.hh: created

	* digraph.cc: created

	* graph.cc (~Graph): deleted
	(Graph): now call Vector constructor rather than creating C++ array
	(colorNode): use UNDEFINED rather than -1
	(color): use UNDEFINED rather than -1
	(findComponents): added
	(visit): added

	* graph.hh (class Graph): use Vector<Bool> rather than raw array

Fri Jun  7 14:03:24 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* diophantineSystem.cc (insertColumn): use append

	* vector.hh (append): added

Wed Apr 24 10:31:15 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* diophantineSystem.cc (DiophantineSystem): use estNrRows,
	estNrColumns to initialize vectors' allocation

	* diophantineSystem.hh (class DiophantineSystem): local UNBOUNDED
	removed; estNrRows, estNrColumns parameters added to constructor
	(class DiophantineSystem): removed destructor (default is adequate)

Thu Apr  4 15:55:38 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* diophantineSystem.hh: added

	* diophantineSystem.cc: added & debugged

Fri Mar 22 18:18:10 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* unionFind.cc: added

	* unionFind.hh: added

Tue Mar  5 14:39:44 1996  Steven Eker  <eker@ponder.csl.sri.com>

	* graph.cc: added

	* graph.hh: added
