Modified : Jan  9 1995
Modified : Jul  1 1997


A verification program illustrating the use of arrays and recursive nodes.
The goal is to compare a combinatorial operator "P", computing the parity bit
of a bit-string, to a sequential version "parity".

The size of the bit-string is a constant of the program, here 8.

The node XOR implements exclusive "or"

The combinatorial parity-bit operator is recursive
- applied to a bit-string of size 1, it returns the value of its unique bit.
- applied to a bit-string of longer size n, it returns the exclusive "or" of 
  the last bit of the string and the result of P applied to the n-1 first bits.

The sequential parity-bit operator proceeds by shifting its parameter b. At 
any cycle 
  - the parity-bit is the exclusive "or" of its preceding value and the 
    leftmost bit of b. 
  - the array b is shifted to the left (and completed by "false" on the right)

In order to know when the whole array has been processed, an auxiliary array
"todo" is used. All its elements but the rightmost are initialized to false.
It is shifted to the left at any cycle, until its only "true" element becomes 
the leftmost. Then the variable "done" becomes true, and the parity-bit has 
been computed.

The verification program compares the result of the combinatorial operator 
with the one of the sequential operator, when the computation of the last 
one is terminated.

The Makefile gives 3 ways for verification :
	GenThenMin => generate full automaton then minimize 
	GenMin => generate minimal automaton
	Verif => use the verification tool
