        ------------------ TO KNOW -----------------

- A constraint is :

  request - temporal constraint
  
  A request is:
  
  (client, server, method, perameter)
  
  Example:
  
  (A,T,x,p) - Once([A;S;x;q])

- Each method has only one parameter. The parameter has to be integer.

- Client and server name has to be one character long.

- Constraint about parameter could only refers to the actual parameter
  of the request, not to the request contained in the constraint.
  Referred to the previous example to "p" and not to "q".

        ----------------- EXECUTION ----------------

To execute the validationChannel example in distributed mode.


Files you need before running the system:

- "policy.all" to grant permissions;
- ".mChaRM_hosts" to list autorized hosts.


To run the system (run exactly in the following order):

1) first run the "rmiregistry" on each host;
  
2) run the Time. Example:
  
  java -Djava.security.policy=policy.all time_constraint/time/Time &
  
3) run the servers. Server name has to be one character long. Example:

  java -Djava.security.policy=policy.all receiver1 T &
  
4) run the channels indicating, in the right order, client and server 
  name. Example:

  java -Djava.security.policy=policy.all mainValidationChannel A T &
  
5) run the client. Client name has to be one character long. Example:

  java -Djava.security.policy=policy.all sender1A A &



        -------------------- BUGS ------------------
	
- The existential operator could not be nested. So the universal one.
  EXAMPLE of WRONG FORM:
  
  forall(Y{S/T},(forall(X{A/B},before(not([X;Y;y;0])))))

- With nested temporal operator there is a problem when the request of
  the constraint to be checked is stored in the history at the istant
  before the actual time (the time at which the method is called). 
  In this case the request is not found.




