PAT: Process Analysis Toolkit

An Enhanced Simulator, Model Checker and Refinement Checker for Concurrent and Real-time Systems

Posts in category Posts

13, Apr, 2009: PAT 2.3.0 is released!

What’s new in PAT 2.3.0

In this release, PAT supports several new language features to increase the expressiveness. Library support is improved to make it more useful. New examples are added. The details are explained as follows.

Language Changes of CSP module
1 Array can be passed in both synchronous and asynchronous channels
2 N-dimensional array is supported by converting them into one dimensional array in the parsing.
var matrix[N][10];
matrix[1][2] = 1;
3 Compound channel data are support. since FDR and SPIN support this. We adopted FDR’s syntax
c?x.y.z or c!x.y.z
4 Array of size 0 is supported, you can use 0 size array as set of List with the help of C# library. See the library update below for more details.

User Interface
1 Bugs in model checking window are fixed.
2 Cut number display in the simulator is added if there is a one.
3 C# code library editor and compiler is improved.

C# library support
Users can create the external methods with int, bool or int array type parameters, with possible return type int, bool and int array. The number of parameters can be 0 to many now. PAT is abled to support multiple C# libraries. Currently two Libraries are implemented: Array and Set. More are coming. 🙂

6 User manual is updated, you can find info about all these update in the manual.

Newly added examples
a) Meta-Lock Example is added for the parameterized systems
b) Language feature demonstration example is added

30, Mar, 2009: PAT 2.2 User Manual is online!

The user manual is available online.
The CHM version can be downloaded HERE.
If you are interested in the technical details of PAT, refer to our Publications.

InterfaceOptions

Type the text for ‘InterfaceOptions

27, Mar, 2009: PAT 2.2.0 is released!

What’s new in PAT 2.2.0

In this release, PAT has added new language features, optimizations for grouped process, new model checking techniques for parametrized systems and so on (mainly for CSP module). The performance of both CSP and Web Service modules is doubled. New examples are added. The details are explained as follows.

Language Changes of CSP module
1) Variable range specification is supported.
Users can provide the range of the variables/arrays explicitly by giving lower bound or upper bound or both. In this way, the model checkers and simulator can report the out-of-range violation of the variable values to help users to monitor the variable values. The syntax of specifying range values are demonstrated as follows.
var knight : {0..} = 0;
var board : {0..10} = [3, 5, 6, 0, 2, 7, 8, 4, 1];
var leader[N] : {..N-1}; where N is a constant defined.

2) Synchronous Channel is supported: the channel output and its matching channel input are engaged together. The synchronous channel event will be displayed as c.exp for channel output c!exp and channel input c?x. To do synchronous channel communication, simply set the size of the channel to be 0. All the channel communications for non-zero channel are asynchronous.

3) Grouped interleaving and infinite interleaving is supported.
||| {50} @ P(); 50 P() running interleavingly.
||| {..} @ Q(); infinite number of Q() running interleavingly.
[] x:{0..2} @ ( (||| {x} @ P) ||| (||| {x} @ Q()); this is equivalent to (Skip|||Skip)[]((||| {1} @P()) ||| (||| {1} @Q()) ) [] ((||| {2} @P()) |||(||| {2} @Q()));
Note: ||| {0} @ P() is same as Skip.

4) Nested compositions are allowed.
[] x:{0..2} @ ( ||| y:{0..x} @ P(x, y))

5) Selecting operator is removed from the syntax for the performance reason. The selecting operator can be expressed by hiding operator easily. Hence, the expressiveness of the language is not reduced.

6) Error message is added in parsing for the trivial infinite systems, e.g., P() = a -> Skip || P();

Assertions Changes of CSP module
1) PAT now supports the following set of fairness. The options are enabled automatically if they are applicable. For the meaning of the fairness options please refer to the PAT manual.

  • Annotated Fairness on individual events: wf, sf, wl, sl.
  • Event-level weak fairness on whole system events
  • Event-level strong fairness on whole system events
  • Process-level weak fairness on whole system processes
  • Process-level strong fairness on whole system processes
  • Strong global fairness

2) Channels (including synchronous and asynchronous channel) can be queried in the LTL propositions.
[]<> “c!5”
[]<> “c?1”
[]<> “c.1” for synchronous channel communication

3) Model checking systems with infinite number of identical processes is supported in PAT. Furthermore, you can add the different fairness constraints
on the infinite systems in the verification. See the build-in examples of parametrized systems and PAT manual for more details..

Performance Improvement for All Modules
1) Evaluation for parallel and interleave are completely re-written
2) Strong global fairness implementation is improved.
3) Use more static variables to improve the performance
After some testing, we found that the verification speed is doubled for some cases.

User Interface
1) Verification window is simplified.
2) About dialog box shows the information about each module independently.
3) PAT Website is upgraded to the latest version of the TiddlyWiki.

New Examples
1) Four new examples are added to demonstrate the parametrized systems modeling and verification.
2) Travel Agent example is added for the Web Service Module.

09, Mar, 2009: PAT 2.1.0 is released!

In this release, we supported process level fairness and improve the performance and fix bugs. The parameterized verification (handling infinite number of threads) is under implementation now. We will release a new version soon once we have tested the programs.
Process level Fairness
Process level week and strong fairness is supported in PAT.

Performance Improvement
1 Strong Fairness Checking performance improvement
2 Refinement Checking speed-up.
3 Use Static variables
4 Fair-Loop checking is improved for the non-buchi-fair loops.

User Interface Simplification
1 Remove the tree data manager since the memory saving is not significant and memory is cheap now.
2 Fairness options are grouped into a combobox. The options are dynamically changed according to the applicablity.

New Examples:
1 Leader Election Protocols
2 Web Service: Travel Agent
3 Linearizability: SNZI Algorithms

Parser Library is updated to ANTLR 3.1.2

05, Jan, 2009: PAT 2.0 is released!

PAT 2.0 is ready. In the new version, we did some structure changes to make the design more modulerize. The web service module is ready to use. We will stop the update of PAT 1.3.1. The latest version of CSP module is already integrated in the PAT 2.0.

Launch PAT after installation option is added.

By following Aaron Stebner’s WebLog, we allow user to launch PAT after installation. We have updated the script to make it better.

  • Download this script.
  • To include this script as a post-build step in a Visual Studio setup/deployment project, you can use the following steps:

0 Download the sample script and extract the contents to the directory that contains the Visual Studio setup project you are working on.
Note: You should end up with the file EnableLaunchApplication.js in the same directory as the .vdproj file for your setup project. The rest of these steps will not work correctly if you do not put EnableLaunchApplication.js in the correct location, so be careful about this step.

1 Open the file EnableLaunchApplication.js in a text editor such as notepad, locate the variable at the top of the file that is set to the value WindowsApplication1.exe, and change it to the name of the EXE that is in your setup that you want to launch when the MSI is done installing
2 Open the project in Visual Studio
3 Press F4 to display the Properties window
4 Click on the name of your setup/deployment project in the Solution Explorer
5 Click on the PostBuildEvent item in the Properties window to cause a button labeled “…” to appear
6 Click on the “…” button to display the Post-build Event Command Line dialog
7 Copy and paste the following command line into the Post-build event command line text box:
cscript.exe “$(ProjectDir)EnableLaunchApplication.js” “$(BuiltOuputPath)”
8 Save your project, Build your project in Visual Studio

21, Dec, 2008: PAT 1.3.1 is released!

Parallel Model Checking for LTL properties are implemented.
If you are using Multi-core CPU, this feature allows you to speed-up the verification to several times.

10, Dec, 2008: PAT 2.0 Beta is released!

The beta version of PAT 2.0 is released with generic archetecture:
1 The lastest version of CSP module is integrated in PAT 2.0.
2 The newly developed web service module is implemented in PAT 2.0.

Go to Download to download it.

04, Dec, 2008: PAT User Manual is online!

The user manual is available online.
The CHM version can be downloaded HERE.
If you are interested in the technical details of PAT, refer to our Publications.