********************** NuSMV 2.4.3 (2007/05/22) **********************

This is a minor release that provides several bug fixes and
commands completion when interactive shell is used.

----------------------------------------------------------------------
*  New features
----------------------------------------------------------------------
  
  o User interaction

    - Added commands completion functionality to the interactive shell
      (requires readline library to be enabled and to be available at
      compile time). Thanks to Tivadar Szemethy <tivadar.szemethy AT
      vanderbilt.edu> who contributed the code for this feature.

----------------------------------------------------------------------
*  Bug fixes:
----------------------------------------------------------------------

  - Fixed a failure that may occur when model checking LTL formulae
    with defines referring directly or indirectly to input variables.

  - Fixed a critical bug that made formula (AF p | AF q) being
    rewritten as AF (p | q).

  - Fixed a critical bug that made NuSMV fail when allocating more
    than 4096 BDD variables.

  - SBMC was not handling correctly past temporal operators. 

  - Operator unary minus (-) was not fully handled by type checker
    and other components.

  - Fixed a bug that allowed the properties database to contain
    properties with problems (undefined symbols, type errors, ...).

  - Use of keyword "self" as module's actual parameter has been
    re-enabled.

  - Fixed some memory leaks.


********************** NuSMV 2.4.2 (2007/04/06) **********************

This is a minor release that provides compatibility with 64-bit
architectures, speed improvements, a few extensions to the user
interface and many bug fixes. Latest versions of CUDD, Minisat and
Zchaff are also now used. Overall this release results on average
faster than previous ones.

----------------------------------------------------------------------
*  New features
----------------------------------------------------------------------

  o Improvements

    - Specifications using words are bit-blasted using the circuits
      corresponding to the functions occurring in the specification
      when SAT based BMC is selected for verification. This enabled
      the verification of models out of the scope of previous versions
      of NuSMV.

    - SAT based BMC encoding now features RBC inlining [ABE04] to
      reduce problem size. With RBC inlining enabled, our experiments
      showed on average a reduction of total model checking time.

      RBC inlining has also been extended to symbolic SEXP encoding 
      to possibly benefit from its use in BDD based searches. 

      This inlining is not enabled by default since it does not
      provide significant improvements on average, and in some cases
      it results in degraded performance.

      We remark that inlining might result in a dramatic degrade of
      performances in some cases, depending on the nature and structure
      of the problem.

      [ABE04] P. A. Abdulla, P. Bjesse and N. En: Symbolic
         Reachability Analysis Based on SAT-Solvers. In Proceedings of
         Tools and Algorithms for Construction and Analysis of
         Systems, 6th International Conference, TACAS 2000. Pages
         411-425. Lecture Notes in Computer Science 1785. Springer.

    - SAT based BMC uses an extended version of the efficient RBC to
      CNF conversion described in [She04]. The new CNF conversion
      leads to smaller CNF than previous one, and to an average
      improvement in verification.  Thanks to Daniel Sheridan for the
      preliminary version of the CNF conversion, and to Gavin Keighren
      for the preliminary porting to the new version of NuSMV.

      [She04] D. Sheridan. The Optimality of a Fast CNF conversion and
         its use with SAT. In Proceedings of the 7th International
         Conference on Theory and Applications of Satisfiability
         Testing (SAT'2004), 10-13 May 2004, Vancouver, BC, Canada.

    - A patched version of CUDD-2.4.1 is now linked to NuSMV. Previous
      version was a patched version of CUDD-2.3.0.

    - Minisat2-061208 is now linked to NuSMV. Previous version was
      Minisat-1.14. By default NuSMV now uses the MiniSAT extended
      solver with simplification capabilities enabled.

    - New version of Zchaff-2007.3.12 can now be optionally linked to
      NuSMV. Previous version was zchaff-2003.12.04.

    - NuSMV has been ported to 64-bit architectures. It can run and
      compile smoothly on Intel Xeon(TM), AMD Opteron(TM), and Intel
      IA64(TM) architectures.

      We would like to thank Moshe Vardi, Kim Andrews, Franco M. Bladilo,
      and Jan E. Odegard from Rice University for providing us with
      cray facilities for testing the porting. The Cray computing
      facility at Rice substantially contributed to the completion of
      the 64-bit porting of NuSMV.

  o User interaction
     
    - Variable 'sexp_inlining' is used to enable/disable inlining
      at sexp level. Sexp inlining at the moment is applied only
      when BMC is performed. By default Sexp inlining is disabled.

    - Option -sin on|off to control new system variable sexp_inlining.

    - Variable 'rbc_inlining' is used to enable/disable RBC
      inlining before committing a problem to any SAT solver. By
      default RBC inlining is enabled. 

    - Option -rin on|off to control new system variable rbc_inlining.


----------------------------------------------------------------------
*  Bug fixes:
----------------------------------------------------------------------

    - Fixed a bug that led to cyclic assignments not being correctly
      detected. Thanks to Michael Whalen <mwwhalen AT
      rockwellcollins com> and Li Zhong <gravityzhong AT gmail
      com> for reporting the bug.

    - Fixed a critical bug that made the booleanizer cache not take
      into account the contexts of booleanized formulae.  Thanks
      to Jori Dubrovin <jdubrovi AT circuit tcs hut fi>, Tommi
      Junttila <Tommi.Junttila AT tkk fi> and Vesa Ojala <vojala
      AT circuit tcs hut fi> for reporting the bug.

    - Fixed a bug that made ltl2smv fail when expanding DEFINEs
      containing input variables.

    - Fixed a bug in Incremental SBMC that resulted in false
      counterexamples in some cases if the property involved input
      variables. Thanks to Tommi Junttila <Tommi.Junttila AT tkk fi>
      for reporting the bug and also for providing a fix.

    - Fixed associativity of some PSL operators that were not
      consistent with the PSL LRM and with the core NuSMV
      grammar. Thanks to Andrea Fedeli <andrea.fedeli AT st com> for
      notifying us of the problem.

    - Applied bug fixes and cleanups suggested by Felix Rauch Valenti
      <frauch AT cse unsw edu au>. Valenti and others are working on a
      research project in the area of static analysis, i.e. finding
      problems (bugs) in C/C++ source code automatically. The research
      project is called "Goanna" and uses NuSMV as backend. See
      <http://www.ertos.nicta.com.au/research/goanna/>

    - Fixed trace plugins that were not correctly working
      when words variables were used. Thanks to Vincent Gourcuff 
      <vincent.gourcuff AT lurpa ens-cachan fr> for reporting the bug.

    - Fixed a typo in configure.ac. Thanks to Mark Tuttle
      <mark.r.tuttle AT intel com> for reporting the bug.
          
    - Many other bug fixes (see Change Log)   


********************** NuSMV 2.4.1 (2006/12/06) **********************

This is a minor release that provides to external contributions and
some extensions to the user interface. Moreover, it fixes many bugs.

----------------------------------------------------------------------
*  New features
----------------------------------------------------------------------

  o Improvements

    - Optimized LTL tableau construction (contributed by Stefano
      Tonetta's <tonettas_AT_lu.unisi.ch>) for LTL model checking via
      BDDs. The optimization leads to an improvement of performance of
      about 30% on average. Moreover, minor low-level optimizations
      have been also integrated to the BDD-based LTL model checking,
      e.g., it is now possible to reuse (default) previously
      computated reachable states while combining the model and the
      tableau FSMs.
    
    - When building the scalar fsm, variable ordering is now taken
      into account. This is an extension of the contribution by Wendy
      Johnston <wendy_AT_itee.uq.edu.au> that initially extended NuSMV
      to allow the user to specify a "transition relation ordering"
      showing positive effects on the BDD conjunctive partioning. The
      ordering is taken from the BDD variable ordering by default, or
      it is taken from a specific "transition relation ordering"
      provided explicitly by the user through an option.


  o System commands 

    - Added options "-f" (force) to the commands
      "build_boolean_model", "bmc_setup", "go", "go_bmc" and
      "process_model". When specified, the new option forces the
      corresponding model construction, even when COI is enabled.

    - Command 'write_boolean_model' now dumps the "current variable"
      ordering when the dynamic reordering had triggered.

    - Added command 'check_ctlspec' as an alias of 'check_spec' (that
      becomes deprecated)

    - Command 'check_pslspec' supports SBMC through new options '-s',
      '-c' and '-N'. See the user manual for further information.


  o System variables

    - Added system variable 'ltl_tableau_forward_search' to enable
      calculation of reachable states set for the LTL tableau FSM.

    - Added system variable 'trans_order_file' to specify an
      alternative variable ordering to be used for the transition
      relation clusterization.

    - Renamed system variable 'program_name' to 'program_path' to hold
      the complete path of the executable file that is being
      executed when NuSMV is running. 

    - Added new system variable 'program_name' to hold the system
      ("NuSMV") name. The new variable may be used to create new
      interactive programs derived from NuSMV.


  o Command line options

    - Added option '-flt' to enable calculation of reachable states
      set for the LTL tableau FSM (see system variable
      ltl_tableau_forward_search).

    - Added option "-t <tv_file>" to specify an alternative variable
      ordering to be used for the transition relation clusterization.
    

  o SMV grammar

    - Added new keyword CTLSPEC as an alias of SPEC (that become
      deprecated).


----------------------------------------------------------------------
*  Bug fixes:
----------------------------------------------------------------------

  - Fixed a critical bug in CUDDs that made BDD variable groups
    inconsistent after a reordering.

  - Fixed a critical bug that affected groups creation in CUDDs

  - Fixed a critical bug that made booleanization being performed
    even when not needed, both in batch and interactive mode. Notice
    that the interactive mode of version 2.3.1 was also affected.

  - Assignment of bit selections is explicitly not handled, but
    trapped.

  - Fixed order of bits in words, that was reversed as the MSB was
    stored at the lowest position.

  - Bits of scalar variables were not grouped by default. 

  - Operator "mod" may have boolean operands but a warning is emitted.

  - Dynamic reordering was erroneously disabled and got locked during
    encoding of input variables.

  - ITE (if-then-else) are now handles natively into PSL.

  - The command "process_model" no longer creates the boolean model.

  - Several fixes to the interactive shell when COI is enabled.

  - Fixed simulation starting from states into traces generated by
    BDD-based LTL model checking. The trace is stripped of the tableau
    variables. Warning: this fix may lead to more fake loops printed
    out when the trace is printed, as states that were different when
    tableau vars were in the trace now may become the same state after
    tableau vars are abstracted.

  - Disabling re-ordering during some specific actions (commonly
    executed by BMC) to prevent problems when reordering is
    called during the printing of a counterexample.

  - Fixed distributed examples there were no longer compilable due to
    stronger type checking rules.

  - Fixed some memory leaks.

  - Fixed implicit ordering of scalar input variables. Thanks to
    Andrew Miner <asminer_AT_cs.iastate.edu> for reporting this bug.

  - Fixed type checking of repeated Sere like {id [*N]}

  - Fixed Unary Minus operator to work on words and general
    expressions.

  - Many other minor bug fixes (see Change Log)




********************** NuSMV 2.4.0 (2006/07/31) **********************

This is a major release of NuSMV. Several improvements have been made
with respect to NuSMV 2.3. The most relevant are:

* Major changes

  - The NuSMV input language has been extended to support the type
    Word to model array of bits, and to allow bitwise logical and
    arithmetic operations over variables of type Word.

  - Introduced strong typing in order to improve the quality of the
    NuSMV file by eliminating subtle implicit cast that were causing
    problems. A backward compatibility switch disable such checks.

  - Integrated the Simple Bounded Model Checking [1] and its
    incremental and complete variant [2]. Thanks to Timo Latvala and
    Tommi Junttila.

  - Deeply restructured the NuSMV internals to provide support for the
    the dynamic creation and removal of new symbols (variables,
    constants, defines) to eliminate critical code within the LTL BDD
    based model checking algorithms, and to facilitate the integration
    of the family of the Simple Bounded Model Checking algorithms
    above.


* User interaction
  
  * General improvements  
    - Improved the error messages reporting. Line numbers now
      corresponds to the real line number within the input file.
    - Improved the writing of the BDD order file: now it is possible to
      print the bit level order file.

  * New commands
    - check_ltlspec_sbmc : uses non-incremental algorithm to perform SBMC 
    - check_ltlspec_sbmc_inc : uses incremental algorithm to perform SBMC 
    - gen_ltlspec_sbmc : generates DIMACS file for SBMC problems
    - print_fsm_stats : substitutes the deprecated command print_clusterinfo

  * New system variables
    - output_word_format : controls in which base Words constants are
        outputted (during traces, counterexamples, etc, printing).
    - backward_compatibility : disables some new features to garantee
        a better backward compatibility.
    - type_checking_warning_on : controls the notification of warning
        messages generated by the type checker.
    - bmc_sbmc_gf_fg_opt : controls whether the system exploits an
        optimization when performing SBMC on formulae in the form "F G p" or
        "G F p".

  * New command line options
    - old : disables some new features to garantee a better backward
        compatibility.
    - old_div_op : enables the old semantics of "/" and "mod"
      operations (from version 2.3.0) instead of ANSI C semantics.
    - df : disables the computation of reachable states that is
      enabled by default in version 2.4.0.

  * Deprecated and no longer supported features
    - The command 'print_clusterinfo' is deprecated (see 'print_fsm_stats')
    - The system variable 'enable_reorder' is no longer available


* Other features
  - A windows installer is provided for Microsoft Windows (TM) users.


* Bug fixes
  - Type checking prevents many bugs there were afflicting previous
    versions to occur.
  - Support of dynamic symbols declaration fixes most of bugs that
    afflicted LTL BDD-based model checking.
  - Determinization variables are now dynamically declared as state
    variables instead of input variables.
  - "G Sequence" is no longer a parsable PSL property. 
  - Several bug fixes have been applied to the printers of PSL formulae 
  - Fixed re-entrancy of command 'flatten_hierarchy'
  - Fainess condition are now printed correctly
  - Many memory leaks were fixed and numeric overflows. 
  - Many other bug fixes (see details in ChangeLog)



********************** NuSMV 2.3.1 (2005/11/22) **********************
This is a minor release to fix a critical bug and a bunch of other
minor bugs. A new command line option "-sat_solver" has been added. 

* New features
  - NuSMV is now linked to the latest version of MiniSat and zChaff
    Sat solvers:
     - MiniSat version 1.14
     - zChaff  version 2004.11.15
  - When available, the MiniSat solver is used by default. 
  - Sat solvers like MiniSat and zChaff can be now integrated more 
    easily when compiling from sources. 
  - The command line option '-sat_solver' allows the user to set 
    the default Sat solver to be used by BMC. Many thanks to 
    Guido Wimmel <wimmel_AT_in.tum.de> for providing the code to 
    handle the new command. 

* Bug fixes:
  - Fixed a problem with COI when only LTL properties are present 
    in the SMV file: the COI structure were wrongly initialized. 
    Thanks to Kevin Xuke <xk02_AT_mails.tsinghua.edu.cn> for reporting
    this bug.
  - Fixes on the PSL support:
     - Removed a bug that caused wrong handling for some LTL and SERE
       PSL expressions.
     - Fixed expansion of 'forall' expression.
  - The command 'reset' does not modify input_order and output_order
    variables anymore.
  - The XML trace dumper plugin dumps loops information now.
  - Fixed bug in BddFsm_get_strong_backward_image: the method
    bdd_fsm_get_backward_si_projection computed legal states/input
    without caring for invariants.
  - Other minor bug fixes (see ChangeLog)


********************** NuSMV 2.3.0 (2005/07/15) **********************

This is a major release of NuSMV aiming to enable users to specify and
check properties expressed in PSL -- the Accellera (and upcoming IEEE)
standard Property Specification Language.

PSL is becoming one of the most popular property specification
languages across the EDA community, both in simulation and in formal
verification. It is intuitive, and easy to learn, read, and write. In
a nutshell, PSL extends linear temporal logics with the power of
regular expressions, and it is thus able to capture all omega-regular
properties. PSL is defined in four layers:

* the Boolean layer allows to write expressions over states.

* the Temporal layer uses Boolean expressions to specify behavior over
  time.

* the Verification layer consists of directives that specify how tools
  should use temporal layer specifications to verify functionality of
  a design.

* the Modeling layer defines the environment within which verification
  is to occur.

PSL is defined in various flavors, each corresponding to a particular
underlying hardware description language. The flavor determines the
syntax of the Boolean and modeling layers, and allows easy,
interoperable use of PSL across languages and design flows.

This version of NuSMV supports PSL with a new NuSMV flavor, and is
currently restricted to a subset of the Boolean and Temporal
layers. More comprehensive support will be implemented in the
forthcoming releases.

This release was developed as part of the activity within the PROSYD
project (http://www.prosyd.org -- Property-Based System Design), a
STREP project funded under the VI framework of the IST EU program.

* Minor changes

  - Fixed a bug in the interactive shell that inhibited the possibility
    to introduce and verify new properties to be interpreted and thus
    instantiated within a module declared in the input file.

  - Fixed a bug in the system interactive command 'check_fsm'.



********************** NuSMV 2.2.5 (2005/05/05) **********************

This is a minor release to fix a critial bug and a bunch of other
minor bugs. Also, the usability of command line option "-load" has
been improved.

* Commands and options:
  - The command line option '-load' now forces the interactive mode,
    even if option '-int' is not specified. 


* Bug fixes:
  - Fixed a critical bug that prevented the model from being built
    correctly when the interactive mode was used. This bug did not
    affect the batch mode at any rate. 
  - Fixed an overflow error in the interactive simulator.
    Thanks to Alessandro Saiani for reporting the the bug.
  - Fixed the setting of system variables for reachable states
    computation in interactive mode, during system initialization.
  - Fixed several memory leaks and wrong string manipolations. 
  - Fixed parsing of end-of-line under Windows within ltl2smv.
    Thanks to H. Peter Gumm for the bug report.
  - Other minor bug fixes (see ChangeLog for details)



********************** NuSMV 2.2.4 (2005/03/17) **********************

This is a minor release. One critical bug has been fixed, as well as a
few other minor bugs.  Furthermore, some commands have been enriched
with new options, and a few new system variables have been added.

* Commands and system variables:
  - Enriched commands: 
    * write_order supports dumping of bits (option -b).
    * echo supports file redirection (options -o and -a).

  - Added new system variables:
    * write_order_dumps_bits: to globally control the way the 
      command write_order dumps encoded variables.

    * on_failure_script_quits: to control the behaviour of the command
      interpreter when a non-fatal error occurs.

* Bug fixes:
  - Fixed a critical bug in the simulator that was affecting both
    the random and deterministic modalities, not the interactive
    mode.
  - In commands pick_state and simulate the option -a had a wrong
    semantics.
  - The command check_fsm wrongly printed out inputs instead of only
    state variables while printing deadlock states.
  - Other non-user side fixes and improvements. See ChangeLog for 
    further details. 



********************** NuSMV 2.2.3 (2004/12/29) **********************

This is a minor release. A few bug fixes have been made, and some new 
features have been implemented.

* Improvements
  - ltl2smv is now invoked internally instead of as an external program.
    As result, it is not necessary to specify path to ltl2smv anymore. 
  - Improved performances of boolean and BE conversions by caching results. 
  - Improved performances of CNF conversion. 
  - Fixed syntactical errors within a few distributed SMV files. 

* Bug fixes:
  - Fixed bugs in memoizing of formulas during conversion of SEXP to BEXP.
  - Fixed several bugs concerned with memory leaks and incorrent
    memory access.
  - Fixed bugs in DIMACS dumping.
  - Scalar variables with range 0..1 are now considered as boolean
    variables.
  - Relaxed a few too strong assertions that prevented NuSMV to
    compile some correct SMV files. 
        


********************** NuSMV 2.2.2 (2004/08/06) **********************

This is a minor release.  
Incremental algorithms for Bounded Model Checking have been
integrated, and a new generic interface to Sat solvers (incremental
and non-incremental) has been implemented. 
Furthermore, a few bugs that afflicted previous versions have been
fixed.

* Features:
  - Added support for MiniSat solver. 
  - New generic interface for incremental and non-incremental sat
    solvers. Interfaces for Sim, ZChaff and Minisat have been
    implemented. 
  - New algorithms for checking of invariants and LTL properties via
    Bounded Model Checking:
    * for checking of LTL properties via incremental sat. 
    * "een-sorensson" for invariants via non-incremental sat.
    * "dual" and "zigzag" for invariants via incremental sat. See 
      the paper "Temporal induction by incremental SAT solving" by 
      Niklas Een and Niklas Sorensson for further information. 
    
    Many thanks to Tommi Junttila <junttila_AT_irst.itc.it> for having
    provided the first working prototype. 

* Commands and system variables:
  - Implemented new commands: 
    * check_ltlspec_bmc_inc
    * check_invar_bmc_inc

  - Added option -a to the command check_invar_bmc (to specify
    algorithm to be used)

  - Added new system variables:
    * bmc_invar_alg: used to choose algorithm for non-incremental
      invariant checking. 
    * bmc_inc_invar_alg: used to choose algorithm for incremental
      invariant checking.

  - Removed file extension ".dimacs" from default values assigned to
    system variables:
    * bmc_dimacs_filename
    * bmc_invar_dimacs_filename

* Improvements
  - Improved booleanization of scalar expressions in bmc. Thanks to
    Angela Pappagallo <angela_pappagallo_AT_yahoo.it>. 
  - Improved usability of commands in bmc interactive mode.

* Bug fixes:
  - Fixed several bugs of user commands for bmc. 
  - Fixed a bug that occurred when instantiating more than once
    a variable whose range was containing one value only. Thanks to
    Charles Pecheur <pecheur_AT_email.arc.nasa.gov>.
  - Fixed a bug in the model checking code that caused assertion
    violation due to a missing intersection with fair states while
    starting computing counter-examples. Thanks to Charles Pecheur 
    <pecheur_AT_email.arc.nasa.gov>.
  - Fixed wrong behavior of option -r in batch mode: only the number
    of reachable states is printed out now. 
  - Fixed wrong allocation when sat solvers but SIM were called
    internally.
  - Other minor bug fixes (see ChangeLog for details)

********************** NuSMV 2.2.1 (2004/06/23) **********************

This is a minor release. A few bug fixes have been made. 

* Bug fixes
  - Preprocessors invocation under Windows
  - Dynamic reordering works now properly.
  - Fixed a missing check of assignment of input variables, when
    arrays were used.
  - Variables are currently declared with the same order as 2.1.x
    series.
  - Fixed behavior of cmd line option '-o filename'.

* Contributions
  - Added examples/m4 directory containing a bunch of m4 examples, 
    kindly provided by Roger Villemaire <villemaire.roger_AT_uqam.ca>.
  - Added contrib/nusmv-mode.el an (X)Emacs major-mode for editing and
    running NuSMV sources, kindly provided by Roger Villemaire
    <villemaire.roger_AT_uqam.ca>.

* Known bugs/problems
  - NuSMV launched with -cpp option and no input file falls into
    segfault.
  - Under Windows, the usage of multiple preprocessors will make 
    NuSMV hang. 

********************** NuSMV 2.2.0 (2004/06/10) **********************

This is a major release of NuSMV. Several improvements have been made
with respect to NuSMV 2.1. The most relevant are:

* Major changes

  - Input variables are now interpreted as labels over transitions in
    the Kripke structure. This solves several problems, including
    incorrect behaviors with processes.

  - Improved multiple FSM management, with APIs to enable
    composition. Improved management of encodings from scalar
    variables to the boolean space, with API to enable merging of
    encodings and other functionalities.

  - Packages and sub-packages have been introduced to represent the
    most significant data structures. Each package comes with a
    library, that can be linked separately from the rest of the
    system. New packages include different representations of FSM
    (i.e. Sexp, BDD, RBC), and Encodings.

  - Traces can be exported in different formats: textual (original),
    TAB separated list (to simplify import in spreadsheets), XML (for
    web browsing). Traces in XML format can also be imported and
    validated.

   - Improved BDD variable ordering. The reordering process can now
     work at the level of the boolean variables used to encode scalar
     variables, and the ordering file can directly refer to boolean
     variables. This may result in more compact BDDs (e.g. for
     formulae like x = y). Thanks to Dan Sheridan
     <dan.sheridan_AT_contact.org.uk> for the contribution.


* User Interaction

  - Input files can now be preprocessed with multiple preprocessors
    (e.g. cpp, m4); the invocation order can be defined by the
    user. Thanks to Roger Villemaire <villemaire.roger_AT_uqam.ca> for
    the interface with m4.

  - Trans type "Conjunctive" has been replaced by "Threshold" and is
    no longer supported.

  - Improved interactive simulator. In the choice of next states,
    duplicated entries are no longer present, and a distinction
    between state variables and input variables is enforced. Thanks to
    Anthony Wilder <anthony.wilder_AT_roke.co.uk> for the contribution.

  - Added some command line options: "-dcx", to disable
    counter-example generation for false properties; "-pre", to
    specify a list of pre-processors to be applied to the input file.


* Bounded Model Checking

  - Improved the RBC package by introducing some new simplifications.
    Improved the algorithm for the generation of the CNF. Thanks to
    T. Junttila <Tommi.Junttila_AT_hut.fi> for the contribution.


* Porting and Other

  - Porting under Mac OS X (see section 3 - Mac OS X in the file
    README_PLATFORMS for details).

  - Native compilation under windows using MinGW
    (http://www.mingw.org/). This eliminates the requirement for
    cygwin (http://www.cygwin.com) (see section 4 - Microsoft Windows
    in the file README_PLATFORMS for details).

  - Integration with the new version of zchaff 2003.12.04
    (http://www.princeton.edu/~chaff/zchaff.html);

  - Removed dependency on the tokens generated by yacc.


* Documentation

  - The user manual of version 2.1 has been split in two parts: a user
    manual and a tutorial.

  - The user manual has been updated to describe new commands and
    functionalities.


* New restrictions

  - Input variables can occur in LTL formulae and in fairness
    conditions. However, they are no longer allowed within CTL and
    invariant properties. 

  - The body of DEFINEd symbols can no longer refer to next value of
    any variable.


* Bug fixes

  - Fixed problems related to wrong results in presence of processes.

  - Fixed problems in the check for recursive definitions.

  - Removed BDD memory leaks in the code for dealing with LTL under
    full fairness.


* Performance

  - The regression test w.r.t. version 2.1.2 pointed out an
    improvement in the performances of the model checking algorithms
    (BDD and SAT) in the majority of the considered cases.


 * Known bugs/problems

  - Some temporal formulae containing a "liberal" interpretation of
    truth values (e.g. "(AX p) = (AX q)") are correctly parsed, but
    may cause an internal error. A restriction will be enforced in the
    next releases.

  - In some cases, a significant degradation in performance of the SIM
    sat solver was noticed as a consequence of the new RBC package and
    the CNFization algorithm. The precise cause of the degradation is
    being investigated (notice that zchaff benefits from the changes).

  - Pressing Ctrl-C under Microsoft Windows Operating Systems within
    the interactive shell will cause unpredictable behavior. 


********************** NuSMV 2.1.2 (2002/11/22) **********************

This is a bug fix release that solves a problem occurring on NuSMV
release 2.1.1 while checking for recursive definitions. Many thanks to
Yunja Choi for the bug report.

********************** NuSMV 2.1.1 (2002/11/08) **********************

This is a bug fix release that solves some problems showed by previous
releases.

* Generic
  - fixed a problem in the checking for recursive definitions that
    allowed to parse assignments with dependencies not broken by a
    time delay. (affected file nusmv/src/compile/compileCheck.c)

  - fixed a problem in the encoding that caused NuSMV to exit with an
    error when the BDD dynamic variable ordering was enabled. Many
    thanks to Yunja Choi for the bug report. (affected file
    nusmv/src/compile/compileEncode.c)

* BMC tableau generator
  - fixed a bug in the tableau generator that erroneously ignored
    NuSMV invariants in path of length 0. (affected file
    nusmv/src/bmc/bmcModel.c)

  - improved the performances of the Past LTL tableau generator.
    (affected file nusmv/src/bmc/bmcTableauPLTLformula.c)

* Documentation 
  - improved the user manual. Thanks to Thomas Wahl for signaling us
    the ambiguities. (affected file nusmv/doc/user-man/nusmv.texi)

  - fixed a problem in the on-line documentation of the
    write_boolean_model command. Many thanks to Andrea Fedeli for the
    bug report. (affected file nusmv/src/compile/compileCmd.c)

* Parsing
  - fixed a problem in the lexical analyzer in the parsing of very
    long comments. (affected file src/parser/input.l)

  - not recognized preprocessor macros now cause a parsing error.
    (affected file src/parser/input.l)
  
********************** NuSMV 2.1.0 (2002/07/03) **********************

This is a major release of NuSMV. Several improvements have been done
with respect to NuSMV 2.0. The most relevant are:

* New functionalities

  - Past LTL

    Now LTL properties can also include *past* temporal operators.
    Differently from standard temporal operators, that allow to
    express properties over the future evolution of the FSM, past
    temporal operators allow to characterize properties of the path
    that lead to the current situation. 

    Past LTL temporal operators are supported both in BDD-based Model
    Checking and in Bounded Model Checking of LTL specifications.  The
    extended LTL to SMV tableau translator for the past fragment of LTL
    has been contributed by Ariel Fuxman <afuxman_AT_cs.toronto.edu>.

  - Full Fairness
    
    Now NuSMV supports two types of fairness constraints, namely the
    weak fairness, or "justice", constraints and the strong fairness,
    or "compassion", constraints. 

    A justice constraint consists of a formula f which is assumed to
    be true infinitely often in all the fair paths. A compassion
    constraint consists of a pair of formulas (p,q); if property p is
    true infinitely often in a fair path, then also formula q has to
    be true infinitely often in the fair path. 

    Old versions of NuSMV supports only weak fairness.  In the current
    version of NuSMV, compassion constraints are supported only for
    BDD-based LTL model checking.  The strong fairness model checking
    algorithm for LTL specifications has been contributed by
    Rik Eshuis <eshuis_AT_cs.utwente.nl>.

    We plan to add support for compassion constraints also for CTL
    specifications and in Bounded Model Checking in the next releases
    of NuSMV.

  - ZCHAFF SAT solver

    The new version of NuSMV allows for the usage of the ZCHAFF
    library as the SAT solver in Bounded Model Checking.

    ZCHAFF is a very strong state-of-the-art SAT solver developed by
    the Princeton University. ZCHAFF won the SAT 2002 Competition as
    the Best Complete Solver in both industrial and handmade
    benchmarks categories. ZCHAFF has also shown a consistent speed-up
    in the solution of Bounded Model Checking problems. 

* Architecture

  Several aspects of the NuSMV architecture have been improved.

  - We have improved the management of the Conjunctive Partitioning
    management of transition relations. With respect to old versions
    of NuSMV, the new code is more modular and easier to extend.

  - The Bounded Model Checking code has undergone a general revision.
    In particular:
    - the file organization of the bmc package has been improved
      in order to enhance readability and extensibility;
    - a generic interface to Boolean Expression Managers has been
      added; it is now possible to replace the current manager of
      boolean expressions (RBC) with more advance managers (e.g., BED);
    - a generic interface to SAT solvers gas been defined; this 
      makes it easier to add support for new SAT solvers in NuSMV.
  
* Documentation

  - We have updated the user manual with the new features of NuSMV 2.
    Moreover, we have added to the manual a tutorial that covers
    the basic functionalities on NuSMV.

* Bug fixes

  Several bug fixes and minor enhancements have been done.


********************** NuSMV 2.0.3 (2002/03/27) **********************

- Fixed important bug in the management of the BDD-based 
  representation of the Finite State Machines. This bug
  lead to an assertion failure in the case properties were
  checked using the cone-of-influence reduction.

  Many thanks to Yunja Choi for the bug report.

  (Affected files: nusmv/src/compile/compile.h,compileCmd.c,
  compileStruct.c,compileUtil.c, nusmv/src/prop/propProc.c,
  nusmv/src/sm/smMisc.c)

- Fixed bug in the "reset: routine of the interactive shell.
  The reachable states were not freed during the reset, thus
  leaving garbage information that lead to failures in
  the following commands.
  (Affected files: nusmv/src/sm/smCmd.c)

- Fixed a memory leak in some routines added to the CUDDs to fulfill
  the needs of NuSMV. (Affected files: cudd-2.3.0.1/cudd/cuddAddOp.c,
  cuddBddOp.c)

- Extended printing routines to new operators XOR and XNOR.
  (Affected files: nusmv/src/node/nodePrint.c,nodeWffPrint.c)

- Enhanced CUDD routine that extracts the symbolic representation of BDDs.
  (Affected files: cudd-2.3.0.1/cudd/cuddBddOp.c)

********************** NuSMV 2.0.2 (2002/01/30) **********************

- Fixed important bug in the optimized tableau construction of
  SAT-based Bounded Model Checking engine. This bug lead to an
  "assertion fail" in the verification of formulas "p U q".  
  (Affected files: nusmv/bmc/bmcModel.c)

- Fixed minor bug in main routine of the batch verification: now the
  BDD master FSM is not built in the case of SAT-based Bounded Model
  Checking. This fix permits a substantial gain in performance in the
  case of Bounded Model Checking. (Affected files: nusmv/sm/smMisc.c)

- Disabled printing of memory/cpu statistics under cygwin. This
  fix allows for a clean compilation of NuSMV also on windows
  platforms. (Affected files: cudd-2.3.0.1/util/cpu_stats.c)

- Minor upgrades in the documentation and in the Makefile.

********************** NuSMV 2.0.1 (2001/11/14) **********************

This is a bug fix release that solves a problem occurring on SunOS systems.
Nothing relevant changes in the Linux version.

Many thanks to Rik Eshuis for the bug report.

**********************************************************************
