
Ideas for things to add to the PEPA tools
-----------------------------------------

  0. Write a ``transition finder'' for PEPA.  This would trace from
     state N to state M (M > N?).  Perhaps call this ``ptf''?  This 
     could be used to see how a state is reached starting from 1.
     (The workbench should also be modified to print out the state
     number for states which deadlock.)  Search through the .maple 
     (or .m or .mathematica) file to find the state and follow
     transitions forwards from there.  If the model is ergodic and the 
     state numbers are lower than the maximum state number then it
     will be possible to reach the target state.  When this is reached 
     then print out the trace, otherwise report that the target state
     is not reachable (and thus the model is not ergodic).

  1. Improved static analysis in the PEPA Workbench.  For example,

	P = P;
     or
	P = (a, r).P + P;
    
     are both allowed at present.  These should be faulted.  More
     realistically,

        P = Q;
        Q = P;

     is allowed.  This should be faulted also.  In general an 
     unguarded term anywhere should be faulted. Should the grammar
     just be put right?  Fixing 

	P = (a, r).(P <> P);
     and
	P = P / {a};

     at the same time?

  2. State space estimation for the PEPA Workbench.  Compute the 
     states of each of the top level components and just multiply
     them.  Useful for excessively large models.

  3. Negation in the PEPA State Finder.  It should be possible to
     write 

	test: *|!P2|*|P4

     to mean anything without P2 and with P4.  In addition it should
     be possible to issue the command

	psf -negate test.psf

     to mean reverse the result of the test a la grep -v.  Internally
     the test would be

	if matches (thisLine, thePatterns) = !Options.negate
        then ()  (* do nothing *)
        else foundMatch (thisLine)

  4. Check that the user of the PEPA State Finder does not use the 
     -nohashing flag on a hashed hash table.  (Idea: collate the
     identifiers from the table and see if they are a, b, c, d, ...)

  5. Visual PEPA Workbench.  A front end implemented in MLJ with
     standard file dialogues, a file viewer, and a canvas onto which
     the generator matrix is printed as the program runs.  In printing
     a datum in position (i, j), could use the RBG colour (i mod 255,
     j mod 255, 0) for a particularly garish effect.  (Best to allow
     this to be turned off by users of a nervous disposition.)

  6. A prettyprinting option for the Workbench to write the PEPA 
     input in the form of a LaTeX source file for inclusion directly
     in a paper.  Greek letter names could be mapped directly to their 
     LaTeX symbols, other identifiers printed in math italic.  Names
     could be generated for co-operation sets if they would occupy
     more than a tasteful number of characters.  A minimal number of 
     brackets could be generated to improve the readability of the
     model expression at the end of the file.  The generated output 
     would also use the PEPA co-operation symbol at the correct size. 

