@INPROCEEDINGS{HanusOberschweiber17,
author       = {Hanus, M. and Oberschweiber, J.},
title        = {CPM: A Declarative Package Manager with Semantic Versioning},
year         = {2017},
booktitle    = {Pre-Proceedings of the Conference on
                Declarative Programming (Declare 2017)},
publisher    = {Technical Report 499, University of Würzburg},
pages        = {231-241},
abstract = {
We present CPM, a package manager for the declarative
multi-paradigm language Curry.  Although CPM inherits many ideas
from package managers for other programming languages, a
distinguishing feature of CPM is its support to check the rules
of semantic versioning, a convenient principle to associate
meaningful version numbers to different software releases.
Although the correct use of version numbers is important in
software package systems where packages depend on other packages
with specific releases, it is often used as an informal agreement
but usually not checked by package managers.  CPM is different in
this aspect: it provides support for checking the semantic
requirements implied by the semantic versioning scheme.  Since
these semantic requirements are undecidable in general, CPM uses
the property-based testing tool CurryCheck to check the semantic
equivalence of two different versions of a software package.
Thus, CPM provides a good compromise between the use and formal
verification of the semantic versioning rules.
}
}
