================================================================================    
DGame: a procedure in Mathematica which synthesizes controllers for safety games
under delayed information. It declares either WINNING associated with a
finite-memory winning strategy if the game is controllable, or LOSING otherwise
with a delay under which the winning strategy vanishes.

Current version: v1.1
Validated on platforms: Mathematica 10, 64bit-Ubuntu-Desktop-14.10/17.04 
Latest modification: on Jan. 22, 2018, by Mingshuai Chen, SKLCS-ISCAS

Corresponding e-mail: {chenms@ios.ac.cn}
Comments and bug-reports are higly appreciated.
================================================================================


1. Extract the tarball, which should create the structure

   main.nb, an implementation of the incremental algorithm for strategy synthesis.
   reduced.nb, an implementation of the reduction-based fixed-point iteration.
   escape.cpp, a program for extracting the graphs from robot-escaping games.
   comparison/, a comparison of the performance with SafetySynth.
   README.md, well, it's me.

2. Install Mathematica at http://www.wolfram.com/mathematica/. 

3. Open notebooks main.nb/reduced.nb in Mathematica, and evaluate (Shift+Enter)
   the cells sequentially from algorithms down to examples. A bunch of illustrative
   games are provided in each of the notebooks.

   A graphical mode can be enabled (be setting graphical=1) for more intuitive
   observation of the generated strategy. However, this is not suggested for
   games with excessively large state space where both the efficiency and the
   observability would be significantly reduced.

4. The comparison with SafetySynth is based on a translation of the encodings from
   Verilog down to AIGER by the Yosys toolset. Details of the results and commands
   are listed therein.

5. Enjoy.
