Discussion of these changes can be found on the Mercury developers
mailing list archives from June 2018.
COPYING.LIB:
Add a special linking exception to the LGPL.
*:
Update references to COPYING.LIB.
Clean up some minor errors that have accumulated in copyright
messages.
grade_lib/grade_state.m:
This new module contains the representation of the state solver.
It is imported by both grade_setup.m (which initializes that state) and
grade_solver.m (which uses and updates that state).
Make this state refer to solver vars and their values using the values
of two enum types, not strings. This makes it much harder to accidentally
use the wrong name for a solver var or value.
grade_lib/grade_spec.m:
When specifying the set of solver variables and requirements, use
types designed for that purpose, instead of parts of the solver state
with the fields filled in with dummies.
grade_lib/choose_grade.m:
grade_lib/grade_setup.m:
grade_lib/grade_solver.m:
grade_lib/test_grades.m:
Conform to the changes above.