================================================================================
0. CONTENTS
================================================================================

 1. PURPOSE
 2. INSTALLATION
 3. EXAMPLES
 4. LEARNING MORE
 5. GENEALOGY
 6. VERSIONS
 7. ACKNOWLEDGMENTS
 8. CONTACT
 9. COPYRIGHT AND LICENSES
10. REFERENCES

================================================================================
1. PURPOSE
================================================================================

These are the sources of TRP++UC, a satisfiability solver for Linear
Temporal Logic (LTL) that can extract fine-grained unsatisfiable cores
for LTL. TRP++UC extends TRP++, which is based on temporal
resolution. For download and for updated versions see [trp++uc].

================================================================================
2. INSTALLATION
================================================================================

To compile do a "make release" from the directory this README is found
in. Then call "./bin/trp++uc -h" (or "./bin/trp++ -h" for the version
used to obtain the experimental results in [Sch13a] and [Sch13b]) to
see command line options.

Building TRP++UC essentially requires a standard environment for
developing C++ software: something along the lines of "make", "g++",
"bison", and "flex". In addition, "gengetopt" is used to handle
command line options.

If you build a version without internalized Boost, then you also need
to have Boost installed.

I successfully compiled the current version of TRP++UC on
- Ubuntu 10.04.4, 12.04.1, 12.10;
- Linux Mint 14;
- Fedora 18;
- PCLinuxOS 2012.12;
- openSUSE 12.2.
The version used to obtain the experimental results in [Sch13a] and
[Sch13b] was compiled and run only on Ubuntu 10.04 using Boost 1.40 as
found in Ubuntu 10.04.

================================================================================
3. EXAMPLES
================================================================================

The examples used in the experiments of [Sch13a] and [Sch13b] are
available from [qapl]. More examples (in particular, also satisfiable
ones) can be obtained from [atva]. For examples in SNF see [trp++].

================================================================================
4. LEARNING MORE
================================================================================

TRP++UC is described in two papers: [Sch13a] explains extraction of
unsatisfiable cores for LTL via temporal resolution, and [Sch13b]
describes how to obtain information on when parts of an unsatisfiable
core are relevant for unsatisfiability. To learn about unsatisfiable
cores for LTL please refer to [Sch12].

For a description of TRP++ see [HK03,HK04]. Temporal resolution in
general is explained in [FDP01,Fis91]; BFS loop search as used in
TRP++ is described in [Dix98,Dix97,Dix95].

A comparison of the performance of various satisfiability solvers for
LTL including TRP++ can be found in [SD11].

An overview of temporal logic is given in [Eme90].

================================================================================
5. GENEALOGY
================================================================================

TRP++UC was obtained by extending TRP++ [HK03,trp++] by Boris Konev
and Ullrich Hustadt with extraction of unsatisfiable cores and reading
of LTL formulas directly in the main tool (rather than translating
them to SNF via a separate program). The implementation for reading
LTL formulas reuses some code from TSPASS [LH10,tspass] by Michel
Ludwig and Ullrich Hustadt; it also reuses many ideas from Boris
Konev's translator from LTL to SNF [trp++]. Besides those two
extensions the only major change between TRP++ and TRP++UC is an
upgrade to the Boost version native to the users installation or one
of Boost versions 1.40 (from Ubuntu 10.04) or 1.46.1 (from Ubuntu
12.04).

This version of TRP++UC was based on TRP++ version 2.1. On a cursory
inspection it seems to me that essentially the difference between
TRP++ version 2.1 and 2.2 is a bug fix backported from TRP++UC.

================================================================================
6. VERSIONS
================================================================================

trp++uc-v2.1.tar.bz2                            Current version without Boost.

trp++uc-v2.1-INTERNALIZE_BOOST_1_40.tar.bz2     Current version with Boost v.
                                                1.40.

trp++uc-v2.1-INTERNALIZE_BOOST_1_46_1.tar.bz2   Current version with Boost v.
                                                1.46.1

trp++uc-NFM13_QAPL13.tar.bz2                    Version used to obtain the
                                                experimental results in
                                                [Sch13a] and [Sch13b].

================================================================================
7. ACKNOWLEDGMENTS
================================================================================

I am grateful to Boris Konev and Michel Ludwig for discussions and for
releasing the source code of TRP++ and TSPASS including their LTL
translators. Alessandro Cimatti brought up the subject of temporal
resolution and suggested to see a resolution graph as a regular
language acceptor. Initial parts of the work were performed while
working under a grant by the Provincia Autonoma di Trento (project
EMTELOS).

================================================================================
8. CONTACT
================================================================================

TRP++UC was written by Viktor Schuppan. Please send bug reports,
comments, questions, etc to Viktor.Schuppan@gmx.de

================================================================================
9. COPYRIGHT AND LICENSES
================================================================================

For copyright and license information see the top of each file.

In existing or factored out files that I changed I only added myself
to the copyright holders but did not change any licenses. I.e., files
from TRP++ are still GPLv2+ and files from TSPASS are still GPLv3+; I
did not touch any of the Boost files. New files are GPLv3+. More
formally:

TRP++UC is licensed under the GNU General Public License version 3
(GPLv3) or, at your option, any later version. See the file COPYING
for a copy of the GNU GPLv3.

The parts of TRP++ version 2.1 used are licensed under the GNU General
Public License version 2 (GPLv2) or, at your option, any later
option. See the file gpl-2.0.txt for a copy of the GNU GPLv2.

The parts of TSPASS version 0.95-0.17 used are licensed under the GNU
General Public License version 3 (GPLv3) or, at your option, any later
version. See the file COPYING for a copy of the GNU GPLv3.

The parts of Boost versions 1.40 and 1.46.1 used are licensed under
the Boost Software License, Version 1.0. See the file LICENSE_1_0.txt
for a copy of the Boost Software License, Version 1.0.

================================================================================
10. REFERENCES
================================================================================

[atva]    http://www.schuppan.de/viktor/atva11/

[Dix95]   C. Dixon: Strategies for Temporal Resolution. PhD
          thesis. Department of Computer Science, University of
          Manchester, 1995.

[Dix97]   C. Dixon: Using Otter for Temporal Resolution. In:
          H. Barringer, M. Fisher, D. Gabbay, and G. Gough (eds.):
          ICTL, pp. 149–166. Applied Logic Series. Kluwer, 1997.

[Dix98]   C. Dixon: Temporal Resolution Using a Breadth-First Search
          Algorithm. In: Ann. Math. Artif. Intell. 22 (1-2) 1998,
          pp. 87–115.

[Eme90]   E. Emerson: Temporal and Modal Logic. In: J. van Leeuwen
          (ed.): Handbook of Theoretical Computer Science, Volume B:
          Formal Models and Semantics, pp. 995–1072. Elsevier and MIT
          Press, 1990.

[FDP01]   M. Fisher, C. Dixon, and M. Peim: Clausal temporal
          resolution. ACM Trans. Comput. Log. 2 (1) 2001, pp. 12-56.

[Fis91]   M. Fisher: A Resolution Method for Temporal Logic. In:
          J. Mylopoulos and R. Reiter (eds.): Proceedings of the 12th
          International Joint Conference on Artificial Intelligence
          (IJCAI 1991). Sydney, Australia, August 24-30, 1991,
          pp. 99-104. Morgan Kaufmann, 1991.

[HK03]    U. Hustadt and B. Konev: TRP++ 2.0: A Temporal Resolution
          Prover. In: F. Baader (ed.): Automated Deduction - CADE-19,
          19th International Conference on Automated Deduction, Miami
          Beach, FL, USA, July 28 - August 2,
          2003. Proceedings. Volume 2741 of Lecture Notes in Computer
          Science, pp. 274-278. Springer, 2003.

[HK04]    U. Hustadt and B. Konev: TRP++: A temporal resolution
          prover. In: M. Baaz, J. Makowsky, and A. Voronkov (eds.):
          Collegium Logicum, Vol. 8, pp. 65-79. Kurt G ̈del Society,
          2004.

[LH10]    M. Ludwig and U. Hustadt: Implementing a fair monodic temporal
          logic prover. AI Commun 23 (2-3) 2010, pp. 69-96.

[qapl]    http://www.schuppan.de/viktor/qapl13/

[Sch12]   V. Schuppan: Towards a Notion of Unsatisfiable and
          Unrealizable Cores for LTL. In: G. Sala\"un, F. Arbab,
          M. Sirjani (eds.): Selected Papers from Foundations of
          Coordination Languages and Software Architectures
          (FOCLASA'09), Selected Papers from Fundamentals of Software
          Engineering (FSEN'09), Science of Computer Programming 77
          (7-8) 2012: pp. 908-939. Elsevier, 2012.

[Sch13a]  V. Schuppan: Extracting Unsatisfiable Cores for LTL via
          Temporal Resolution. In progress. Available from
          http://arxiv.org/abs/1212.3884v1.

[Sch13b]  V. Schuppan: Enhancing Unsatisfiable Cores for LTL with
          Information on Temporal Relevance. Accepted for publication
          at: Eleventh International Workshop on Quantitative Aspects
          of Programming Languages and Systems, QAPL 2013, Rome,
          Italy, March 23-24, 2013.

[SD11]    V. Schuppan and L. Darmawan: Evaluating LTL Satisfiability
          Solvers. In: T. Bultan, P. A. Hsiung (eds.): Automated
          Technology for Verification and Analysis, 9th International
          Symposium, ATVA 2011, Taipei, Taiwan, October 11-14,
          2011. Proceedings. Volume 6996 of Lecture Notes in Computer
          Science, pp. 397-413. Springer, 2011.

[trp++]   http://cgi.csc.liv.ac.uk/~konev/software/trp++/

[trp++uc] http://www.schuppan.de/viktor/trp++uc/

[tspass]  http://cgi.csc.liv.ac.uk/~michel/software/tspass/

================================================================================
Viktor Schuppan                                   
Füssen, Germany, 17 February 2013       

Viktor.Schuppan@gmx.de
http://www.schuppan.de/viktor/
================================================================================
