Maude XG Policy Reasoner

SRI has developed two policy engines for the XG program. The first one is based on the CoRaL language and uses Prolog as the underlying reasoning engine. You can download this engine at This engine is able to efficiently determine whether a request satisfied a policy base, i.e., to return "yes" and "no" answers. However, it lacked an important feature: That of returning "yes, if ..." answers---answers giving additional constraints that, when fulfilled, will allow the request to take place.

We therefore developed another policy reasoner (PR) based on Maude that is able to return constraints. You will find sources for the Maude-based policy engine on this page. The Maude-based PR uses the SWRL FOL extensions as policy language (PL). This engine was run on actual hardware and met operational constraints of the XG radios, a PowerPC with 390Mhz and very limited memory for the reasoner. However, we also tested our engine on state-of-the art linux hardware. The reasoning speed increases by a factor of 30 when run on hardware with fast CPU. We have also developed a prototype graphical tool for defining policies and evaluating requests. This policy tool is limited in scope to certain fixed policy parameters, but shows the principles of policies and policy reasoning. The tool could inspire a more complete future version.

System Requirements

1) Operating System
This version of the XG policy reasoner developed by SRI International must be executed on a Linux 64 bit platform. Therefore, the provided demonstration software currently functions only on this platform. Support for Apple's Mac OS X is on the way. Windows platforms such as Windows XP or Windows Vista will not be supported because the underlying reasoning engine used for this XG Policy Reasoner is Maude ( and Maude runs on many of the Unix variants, but not on Windows platforms.

2) Java Run Time Environment
The XG software requires Java runtime environment version 5 or later. In a Linux console, type 'java -version' to find out which version of Java is available to you. Version 1.5 or later is required to run the XG Graphical User Interface (GUI).
The XGDemo folder contains two subfolders: XGGraphicalInterface and XGReasoner. The XGGraphicalInterface folder contains the GUI-related executables and dependencies. The XGReasoner folder contains the policy reasoner executables and dependencies. All the external libraries and modules used by the reasoner and the GUI are provided. For the GUI these external Jar files are located in the XGGraphicalInterface/libs folder. For the policy reasoner the required libraries are located in the XGReasoner/lib folder.

XG Policy Reasoner and GUI binary

Launching the XG Demo

Two shell scripts are provided for executing the GUI and the XG Policy Reasoner (XGPR). The XGPR must be launched prior to executing the GUI.

Within a console window, change your current directory to <SomeFolder>/XGDemo/XGReasoner. <SomeFolder> is the location where you extracted the XGDemo-Linux-64bit.tar.gz archive.

2) Launch the XGPR using the following command './' You should see an output similar to the following:

PR:  Starting up on localhost:7777
Creating maude reasoner
Loading reasoner specification...
Loaded in 0.25 seconds
Entering the server loop...

Depending on the *nix Kernel headers in your system you may also see a warning message similar to:

./pr: Symbol `_ZTIN11xercesc_2_713XMLEntityDeclE' has different size in shared object, consider re-linking
You can safely disregard this.

3) Within a separate console, change your current directory to <SomeFolder>/XGDemo/XGGraphicalInterface. <SomeFolder> is the location where you extracted the XGDemo-Linux-64bit.tar.gz archive.

4) Launch the XG GUI using the command './'. You should see the XGLaunchBar application on the top left of you screen. This allows you to launch any number of XG graphical components (e.g., Policy Editors, Region Editors, Powermask Editors).

For instructions on how to run the XGDemo case scenarios refer to the XGDemo-User-0Guide.pdf made available below.

To use the information in the documentation, you must have successfully installed and launched the XGPR as well as the XG Demonstration GUI. For any questions regarding installing this software or to report problems, please contact either Rukman Senanayake or Grit Denker

Note: The XGPR is a TCP/IP server and therefore requires you to actively terminate it when you no longer wish to interact with it. When you have finished using the XG software (after you have closed the GUI), in the terminal window used to launch the XGPR you must use the key combination 'Ctrl + C' to terminate the application. If the GUI is terminated you MUST terminate and restart the XGPR to avoid unpredictable reasoning results due to corrupted XGPR state tracking.


Instructions on how to use XG Policy Reasoner (XGDemo-User-Guide.pdf)