                         --------------------
                         MULTI-PROPERTY PKIND
			 --------------------

===========
About
===========


 Multi-property PKIND is a parallel and incremental k-induction-based
  model checker for verifying safety properties of Lustre
  programs. This tool allows the simultaneous verification of multiple
  properties, and produces results on individual properties -- valid
  or invalid outcomes -- in an incremental fashion, according to their
  difficulty. Moreover, it makes it possible to use a verified valid
  property immediately as an additional invariant to aid the
  verification of the remaining properties. In contrast to works
  previously presented in literature on simulataneous verification of
  multiple properties, our approach uses a parallel architecture that
  allows the incorporation of automatic invariant generators to
  enhance the basic verification process. The invariants are fed to
  the k-induction loop as soon as they are produced and used to
  strengthen the induction hypothesis. 
 
=============
Restrictions
=============

1) Properties has to be named; the following is not allowed at the moment:

	 --%PROPERTY not a   
	 
  This is allowed:

	 var P:bool;
 	    P = not a
 	 --%PROPERTY P


=========
Usage:
==========

 - To use multi-property verification WITH invariant generation
  
     mpiexec -np 3 ./pkind -multi [LUSTRE FILE]

 - To use multi-property verification WITHOUT invariant generation
  
     mpiexec -np 2 ./pkind -multi [LUSTRE FILE]

 - To use single property verification WITH invariant generation

    mpiexec -np 3 ./pkind [LUSTRE FILE]

  - To use single property verification WITHOUT invariant generation

    mpiexec -np 2 ./pkind [LUSTRE FILE]




==============
Examples
=============
Try :

  1)  mpiexec -np (2 or 3) ./mupkind -multi -compression microwave_2.lus
  2)  mpiexec -np (2 or 3) ./mupkind -multi multi_two_counters.ec


