===============================================================================
Changes between toolset releases 201310.0 and 201409.0:
===============================================================================

54 tickets were closed since the previous release. The changes in this release 
are for the greatest part refactoring efforts to prepare for coming changes. 

- Enumeration of finite set sorts and finite function sorts has been added.
- PBES tools can now handle PBESs containing negations and implications. The 
  txt2pbes tool no longer eliminates these operators by default.
- PBES tools can now use textual representation as in- and output format.
- The implementation of the pbesstategraph has been thoroughly revised. A more 
  efficient local variant of the algorithm is now used by default.
- The internal ATerm format of mCRL2 data types has been changed. Variables
  and function symbols now store a unique number, to make table lookups more 
  efficient. This change has no effect on the disk format.
- Stricter ATerm casting mechanism to prevent casts between incompatible Aterm
  structures.
- A new, more generic implementation of the enumerator was made that also 
  operates on PBES expressions. It has been used to improve the performance of
  some PBES rewriters.
- The dependencies between the mCRL2 libraries were minimized.
- Preparation for move to Qt5.
- Preparation to use more C++11 features.

Known bugs:
- The ltsgraph tool does not properly export images on all platforms. Notably,
  the bitmap export functionality on Mac OSX Mavericks is broken. This seems to
  be a combination of Qt4 issues and OSX OpenGL issues; this bug might be fixed
  in a point-release, or it may be left until the next release, which should be
  using Qt5.

===============================================================================
Changes between toolset releases 201210.1 and 201310.0:
===============================================================================

60 tickets were fixed for this release. We summarise the most important changes
below.

It is important to note that LPS and PBES files generated using earlier
versions of mCRL2 cannot be loaded in this version.

Libraries:
  - ATerm library was cleaned up and ported to C++, the directory
    3rd-party/aterm has been removed, and relevant code has been merged
    into libraries/atermpp, and the library is compiled as mcrl2_atermpp.
  - WARNING: The file aterm_init.h and the MCRL2_ATERMPP_INIT macro are
    still available, but will be removed in the next release (r11743).
  - Code for modal mu-calculus formulae was moved to a separate library,
    which is compiled as mcrl2_modal_formula.
  - Type checking was lifted to a higher level of abstraction, and now
    operates on classes representing conceptual objects, instead of ATerms.
  - Specified and reimplemented the alphabet reductions, leading to
    improved performance.
  - Added absorption rules for set and bag union and intersection (#1089).
  - Implemented capture avoiding substitutions, such that variables do not
    need to be renamed a-priori.
  - Improved one-point rule elimination in rewriters.
  - Extend parser of PGSolver format to accept games produced by MLSolver 
    (r11637).
  - Support for loading labelled transition systems from files in the DOT
    file format was dropped.
  - Typechecker now rejects redeclaration of built-in functions (r11689).
  - Fix normalisation of modal mu-calculus formulae (r11696).
  - Fix compiler warnings in the included DParser library.
  - The jittyc compiler now checks that the version of the header files
    with which it is compiled matches the version of the tool that is
    loading the rewriter (#951).
  - For compiling the rewriter, we do not depend on the DParser headers
    anymore (#1176).

Build:
  - Requires C++11 support of the C++ compiler. We tested using
    GCC 4.4, 4.5, 4.6, 4.7 and Clang 3.2 on Linux, MSVC 2010 on Windows,
    and Clang 3.2 on Mac OS X.

Tool changes:
  - Fix handling of command line arguments with spaces for all tools (r11388).
  - Fix opening and creation of files and folders in mcrl2-gui on OSX (#1123).
  - Properly handle tools with multiple input file-types in mcrl2-gui (#1124).
  - Fix name-clash resolution in lpsbisim2pbes (#1144).
  - Use optimisations in lps2pbes, which leads to smaller right hand sides
    in PBESes (#1155).

New experimental tools:
  - complps2pbes
  - pbesstategraph

The following tools have been removed:
  - tbf2lps

The following tool has become deprecated as of this release:
  - formulacheck

===============================================================================
Changes between toolset releases 201210.0 and 201210.1:
===============================================================================
Features:
  - Dropped support for .dot files as input format. Output is still supported.
  - New ATerm library which uses reference counting rather than mark & sweep
    to do garbage collection.

===============================================================================
Changes between toolset releases 201210.0 and 201210.1:
===============================================================================

Fixed bugs:
  - #1096 Allow filepicker to open file in mcrl2-gui
  - #1100 Attempt to fix the build on ARM-based platforms.
  - #1101 Enable selection of two inputs for tools in mcrl2-gui (if supported by
          the tool)
  - #1104 Fix link to "Compiling mCRL2 yourself" in docs.
  - #1105 Fix link to regression test results in docs.
  - #1107 Fix labels of optional tool options in mcrl2-gui.
  - #1108 Fix generation of help descriptions in the online manual.
  - r11245 Fix typos in log messages.
  - r11278 Fix warnings in release mode.
  - r11287 Fix spelling errors in docs.

===============================================================================
Changes between toolset releases 201202.0 and 201210.0:
===============================================================================

100 tickets were fixed for this release. We summarise the most important changes
below.

Libraries:
   - Header files are shown in IDEs like Visual Studio, XCode and QTCreator
   - LTS library: removed support for the SVC format.
   - Fixed installation path of dparser headers
     (include/dparser instead of include)
   - Remove unused quantifier variables when enumerating (r10356)
   - Improved performance of alphabet reductions.
   - Reimplemented nextstate generation on top of the LPS library.
   - Added an interface to the LTSmin toolset for the PBES library.
   - Cleaned up the ATerm library to remove unused functionality.
   - Improved performance of parsers.
   
Tool changes:
   - The graphical tools mcrl2-gui, ltsgraph, ltsview, diagraphica, lpsxsim
     and mcrl2xi have been ported to QT, the wxWidgets versions have been
     removed.
   - lps2lts has been extended with the options --cached and --prune. The first
     option enables caching of intermediate results, and gives rise to a
     performance improvement in most cases. Note that in some cases this comes
     with a significant memory penalty. The second argument uses a decision tree
     such that, given a value of a parameter, only a subset of summands needs
     to be considered.
   - lps2lts, lpssim, lpsxsim, lps2torx use the new implementation of nextstate
     generation.
   - Added implementations of signature based algorithms for bisimulation,
     braching bisimulation and divergence preserving branching bisimulation to
     ltsconvert.
   - The number of variables used internally for quantifier enumeration is
     configurable using the -Q/--qlimit flag for all tools using the rewriter.
     By default this value is set to 1000.
   - Improved performance of lts2pbes.

The following tools have been removed:
   - chi2mcrl2
   - grapemcrl2
   - ltsmin
   - lysa2mcrl2

===============================================================================
Changes between toolset releases 201107.1 and 201202.0:
===============================================================================

Libraries:
   - Core library: re-implemented parser on top of DParser. As input this uses
     an EBNF grammar with associativities and priorities.
   - Core library: re-implemented pretty printer on top of C++ libraries,
     instead of the C libraries.
   - Data library: improve treatment of quantification in enumerators. This
     vastly improves the user experience when using quantifiers as well as sets
     and bags.
   - Data library: refactored the rewriters to carry substitutions as an
     argument, instead of as a global value.
   - Data library: clean up identifier generators and improve their performance.
   - BES library: extend support for parity games in PGSolver format (max parity
     games).
   - BES library: removed the translation to VASY format.
   - LPS library: extend support for LTSmin.
   - LPS library: improve performance of the next state iterator interface.
   - Cleaned up direct uses of ATerms in all libraries.

Build:
   - Support for MSVC9 has been dropped; MSVC10 is freely available as part of
     the Windows SDK, and bugs in MSVC9 caused obscure compile errors.
   - Use system provided gl2ps if available.

Tool changes:
   - lps2lts: the default state format has changed from "vector" to "tree".
   - lpspp: add -n/--print-summand_numbers option. This prints an identifier
     for each summand that is printed.
   - ltsview: fix non-termination of backtrace generation.
   - mcrl22lps: assume untimed semantics by default (the behaviour of the
     -D/--delta flag), for linearising timed specifications, the -T/--timed
     flag must be used.
   - mcrl22lps: remove support for n-parallel processes. This will be
     reinstated more thoroughly in a future release (see bug #977).
   - mcrl2xi: find and replace functionality has been implemented.
   - pbes and bes tools: use uniform I/O handling.
   - pbes2bool, pbes2pbes, lps2lts: make tool behave line a GNU tool: output on
     stdout, additional information on stderr.
   - pbesrewr: add rewrite strategy that eliminates quantifiers using the
     one-point rule.
   - gui tools: improve wxWidgets 2.9 support; the tools are alright in release
     builds, but may still raise some assertion failures in debug builds due to
     massive internal changes in wxWidgets.

New experimental tools:
   - mcrl2parse: parsing of expressions adhering to the mCRL2 syntax.
   - pbesabsinthe: abstract interpretation of PBESes.
   
The following tools have become deprecated as of this release:
   - chi2mcrl2
   - lysa2mcrl2
   
===============================================================================
Changes between toolset releases March 2011 and July 2011:
===============================================================================

 General:
   - Removed the innermost rewriters; only the jitty, jittyc and jittyp
     rewriters are available.
   - Cleaned up the implementations of the remaining rewriters.
   - Performance of the jittyc rewriter has been improved.
   - Compiling rewriters using an external compile script.
   - An interface for generating next states has been provided, in such a way
     that it is independent of the internal structures of mCRL2.
     This allows for a more reliable integration of mCRL2 and LTSmin
     (http://fmt.cs.utwente.nl/tools/ltsmin/).
   - By setting the CMake variable MCRL2_LTSMIN_INSTALL_PATH to the directory
     containing the LTSmin sources, the mCRL2 make install will build the
     LTSmin toolset with compatible settings.
   - Fix compilation with GCC 4.6.

 Library changes:
   - Renamed library mcrl2_utilities_command_line to mcrl2_utilities.
   - Moved some utility functionality from mcrl2_core to mcrl2_utilities.
   - Incorporated and cleaned up ATerm library. The ATerm library included in
     mCRL2 now is compiled as C++.

 New functionality:
   - Improved handling of universal and existential quantification in the
     rewriters.
   - A new logging library has been implemented and incorporated.
   - Improved performance of parity game generator used by pbespgsolve.
   - The tool lps2torx now uses the simulation backend.
   - A major update of pbespgsolve has been imported from upstream.

 New experimental tool:
   - lts2pbes has been added, allowing to encode model checking problems
     directly on LPSes.

 Changed tool status:
   - pbespgsolve has become a release tool.

===============================================================================
Changes between toolset releases July 2010 and March 2011:
===============================================================================

 General:
   - Removed 3rd-party/boost, mCRL2 depends on Boost >= 1.37
   - Removed bjam build system. Use of the CMake build system is now required.
   - Developed a BES library as the basis for further solving/reduction
     algorithms.
   - The basic code for all data structures is now generated from a concise set
     of specifications. Standard traversal and find/replace functionality is
     available for all these data types.
   - Stabilise ATerm library for 64-bit Windows platforms.
   - Overal stabilisation of the code, including fixing compiler warnings/errors
     on various supported platforms.
   - The implementation of the LTS library has been cleaned up.

 New functionality:
   - pbes2bool and pbespgsolve accept BESs and PBESs as input.
   - pbes2bes should be used to generate a BES from a PBES; this functionality
     has been removed from pbes2bool. Use pbes2bool directly on the PBES if
     you want proper counterexamples.
   - The tool previously called pbes2bes is now named pbesinst.
   - New tool besinfo that prints information on a BES.
   - New tool bespp that prints a BES in human readable format.
     PBESs
   - tau*a reduction is available from ltsconvert.
   - New tool mcrl2xi that can be used to edit mCRL2 specifications.
     It provides the functionality as the command-line tool mcrl2i.

 New experimental tools:
   - besconvert can be used to reduce BESs modulo strong bisimulation and
     stuttering equivalence.
   - lts2pbes can be used to generate a PBES form an LTS and a modal formula.
   - bessolve can be used to solve a BES using small progress measures or the
     recursive algorith due to Zielonka. For efficient solving the use of
     pbespgsolve is recommended.
   - pbesabstract provides a form of abstract interpretation for pbesses. 
     Parameters of pbes equations can be removed underapproximating or 
     overapproximating the solution of the PBES. This can dramatically reduce
     the number of BES variables generated from a PBES.

 Removed tools:
   - squadt
   - pnml2mcrl2

===============================================================================
Changes between toolset releases January 2010 and July 2010:
===============================================================================

 General:
   - developed new graphical user interface mcrl2-gui. Use of this tool is
     recommended above using squadt.
   - move to CMake build system. The bjam build system is still included, but
     will be removed in the January 2011 release.
   - increase the amount of generated code.
   - more extensive testing

 Tool renamings:
   - In order to have a more consistent tool naming scheme, some tools have
     been renamed:
     * sim -> lpssim
     * xsim -> lpsxsim
     * grape -> grapemcrl2

 New functionality:
   - the language now supports function updates for functions of arity 1. It is
     now allowed to write f[d -> e] for a function f: D -> E, with d in D and
     e in E. The meaning is that (f[d -> e])(x) = e if x == d, and f(x)
     otherwise.
   - lps2lts has an extra option to detect divergences.
   - for a number of equivalences, ltscompare can give countertraces in case
     two processes are not equivalent. This is helpful in finding why two
     processes are not equivalent.

 Deprecated tools:
   - squadt is deprecated. It will be removed in the January 2011 release. We
     recommend using mcrl2-gui instead.

 Known issues:
   - ltsview and ltsgraph do not work when started from SQuADT in Windows 7 and
     Windows Vista; if started directly they do function properly. Using
     mcrl2-gui there are no problems.

===============================================================================
Changes between toolset releases January 2009 and January 2010:
===============================================================================

 General:
   - developed a new data and process library and adapted most tools and 
     libraries to use it. Ultimately the classes in core will all be replaced
     such that core will become obsolete.
   - introduced new tool classes and adapted all tools to it, leading to uniform
     command line interfaces for all tools.
   - adapted the user interface of mcrl2i.
   - bisimulation reduction algorithms are much faster.
   
 New functionality:
   - divergence preserving branching bisimulation has been implemented.
   - lps2lts can search for divergences, and generated traces to divergent
     states.
   - lps2lts can generate a state space steered by the first argument of
     actions (which must be a natural number). Only transitions with the
     lowest number will be taken. It is also possible to do a random walk
     in this way.
   - ltsgraph can display transition systems in 3d.
   - lps2pbes now properly supports the use of sorts in the modal formula that
     were defined under alias in the lps.
 
 The following tools have been marked stable:
   - grape: a graphical process editor.
   - mcrl2i: an mCRL2 interpreter that can be used for evaluating data
     expressions.
   - pbesconstelm: apply constant parameter elimination to a pbes.
   - pbesparelm: apply parameter elimination to a pbes.
   - lpsparunfold: unfold a set of given parameters in an lps. (Similar to the
     muCRL tool structelm).
   - lysa2mcrl2: convert a security protocol specified in Typed LySa to mCRL2.
   - txt2lps: read a textual description of a linear process into a binary lps
     file. Rejects anything that is not linear.
 
 The following tools have been added (but are marked experimental):
   - lpsbisim2pbes: encode process equivalences of two linear processes into a
     pbes.
   - lts2lps: convert a labelled transition system into an lps.
   - pbespareqelm: eliminate equivalence relations between parameters of a pbes.
   - pbespgsolve: solve a pbes using a parity game solver algorithm.
     (Contributed by Maks Verver).

The following tools have been removed:
   - mcrl2pp
   - pbessolve

 Notes:
   - SQuADT specific:
     + The tool catalog must be regenerated to add newly connected tools;
       to do this manually remove .squadt/tool_catalog in the home directory.
   - the CMake build system is provided as an alternative to boost build, but
     it is still experimental.
       
 Known issues:
   - ltsview and ltsgraph do not work when started from SQuADT in Windows 7 and
     Windows Vista; if started directly they do function properly.

===============================================================================
Changes between toolset releases July 2008 and January 2009:
===============================================================================

 General:
   - compatible with LTSmin toolset 1.1 van de Universiteit Twente
   - added support for importing LTSes from DOT format
   - extended mCRL2 LTS storage format to include extra information such data
     and parameter specifications. This new format uses the .lts suffix.
   - support for rational numbers (as part of sort Real):
     + rational numbers can be created using the division operator /
     + rational numbers can be converted to integers by means of functions
       floor, ceil and round
   - comparison operations <, <=, >= and > are now defined on all standard
     data types (including structured sorts)
   - sets and bags data structures have been reimplementated to better support
     the use of finite sets and bags. By guaranteeing a unique representation
     of finite sets/bags it is now no longer a problem to generate state spaces
     of processes with finite sets/bags as parameters, for instance.
   - numerous small improvements to tools and underlying infrastructure
   - lots of bug fixes

 Renamed tools:
   - formcheck is now called formulacheck

 New functionality:
   - ltsgraph is completely reimplemented and now uses OpenGL for rendering
   - ltsgraph, ltsview, diagraphica now support all LTS formats supported by
     the LTS library

 New tools:
   - pbesparelm: removes unused parameters from a PBES.
   - pbesconstelm: removes constant parameters from a PBES.

===============================================================================
Changes between toolset releases January 2008 and July 2008:
===============================================================================

 General:
   - improved command line interfaces and help information:
     + simplified interfaces of most tools, especially mcrl22lps, lps2lts,
       lps2torx, ltscompare, ltsmin, ltsconvert, tracepp and formcheck
     + improved consistency among tools
     + adherence to the GNU standard for command line interfaces
     + removed the undocumented feature that the argument '-' can be used
       for reading from standard input in or writing to standard output
     + improved error handling of loading and saving binary files
   - added manual pages for tools
   - changed SVC library license from the
     GNU General Public License, version 2 (or newer), to the
     GNU Lesser General Public License, version 2.1 (or newer).
   - libraries and header files are installed
   - improvements to existing tool and library documentation
   - improved regression testing
   - lots of bug fixes

 Added tools:
   - txt2pbes: translates a textual PBES specification to the binary format

 Removed tools:
   - pbes2bes: most functionality is incorporated in pbes2bool

 Renamed tools:
   - lpsdecluster is now called lpssuminst
   - lpsformcheck is now called formcheck

 Performance improvements:
   - improved performance of lpspp and pbespp for specifications
     involving many variable declarations
   - improved average case performance of div and mod calculations by
     a factor of 2
   - increased power of enumeration involving conditions on list length,
     e.g. enumerating all lists l such that #l == 2 or #l <= 2
   - lpssuminst: summands with a false condition are filtered out
   - lpssumelm: more time-efficient on specifications involving large
     conditions
   - squadt: more time-efficient initialisation process

 New functionality:
   - ltsview: added new option for marking states: mark separately for
     every mark rule
   - ltscompare: added comparison using simulation preorder/equivalence
   - ltsconvert: added minimisation modulo simulation equivalence
   - pbes2bool, lpsactionrename, diagraphica: functional improvements
   - lpssuminst: added (option -t/--tau) which only instantiates tau summands
   - formcheck: now also works with PBESes or without a context specification

 Notes:
   - LPS or PBES files produced with the previous release cannot be used
     anymore. They need to be regenerated using the tools in this release.
   - SQuADT specific:
     + The tool catalog must be regenerated to add newly connected tools;
       to do this manually remove .squadt/tool_catalog in the home directory.
     + Old project files cannot be loaded due to a limitation of the old
       format, automatic conversion is not possible so projects must be
       recreated manually.

===============================================================================
Changes between toolset releases July 2007 and January 2008:
===============================================================================

 General:
   - Numerous bug fixes.
   - Added documentation for all libraries and tools on the website.

 Added tools:
   - chi2mcrl2: translates a subset of Chi to mCRL2
   - lpsactionrename: selectively renames or hides actions in linear processes
   - pbesrewr: applies the rewriter to simplify data expressions in PBESes

 Removed tools:
   - lpsdataelm (its functionality has been integrated in other tools)

 New functionality:
   - Added full support for the verification of modal formulas with data using
     lps2pbes and pbes2bool.
   - Improved handling of time in the lineariser (mcrl22lps). Sometimes this
     slows the lineariser down. Added flags to suppress time if needed.
   - Improvement of the output of the pretty printers (lpspp and pbespp) that
     print linear processes and parameterised boolean equation systems.
   - Added simulation support to ltsview and improved its layout.
   - Functionality of sim is the same as that of xsim (as far as allowed with
     a command line interface).
   - Migrated from CVC Lite to CVC3 as supported external SMT-solver.

 Notes:
   - LPS or PBES files produced with the previous release cannot be used
     anymore. They need to be regenerated using the tools in this release.
   - SQuADT specific:
     + The tool catalog must be regenerated to add newly connected tools;
       to do this manually remove .squadt/tool_catalog in the home directory.
     + Old project files cannot be loaded due to a limitation of the old
       format, automatic conversion is not possible so projects must be
       recreated manually.
