Commit b1bfdee8 authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz
Browse files

Revert everything related to Damien's work in 2008 (he will commit a new version soon).

Here are the reverted patches:
8c0d1003,
25a31142,
9afbaf63,
dc0005f4,
543190f2.
parent 3d278663
......@@ -159,25 +159,6 @@
* iface/gspn/ssp.hh, iface/gspn/ssp.cc: Add the
reversed_double_inclusion boolean for this.
2008-06-12 Damien Lefortier <dam@lrde.epita.fr>
Add ELTL visitors in eltlvisit/ and start the ELTL translation (LACIM).
Merge all eltlast/ files into formula.hh (except automatop.hh).
* src/eltlast/allnodes.hh, src/eltlast/atomic_prop.hh,
src/eltlast/binop.hh, src/eltlast/constant.hh, src/eltlast/multop.hh,
src/eltlast/refformula.hh, src/eltlast/unop.hh,
src/eltlast/visitor.hh: Delete and merge all these files into ...
* src/eltlast/formula.hh: ... this one.
* src/eltlvisit/: Add some visitors (clone, destroy, ...).
* src/internal/baseformula.hh, src/internal/baseformula.cc:
Add base_formula, a new base class of internal::formula.
* src/tgba/bdddict.cc src/tgba/bdddict.hh, src/tgba/bddprint.cc,
src/tgba/tgbabddconcretefactory.cc, src/tgba/tgbabddconcretefactory.hh
Replace ltl::formula by internal::base_formula.
* src/tgbatest/eltl2tgba.cc: Beginning of the ELTL translation (LACIM).
* m4/boost.m4: Add AX_BOOST_BASE([MINIMUM-VERSION]).
2008-06-12 Alexandre Duret-Lutz <adl@lrde.epita.fr>
* iface/nips/nipstest/dotty.test,
......@@ -191,56 +172,15 @@
enough to make it pass "make check". Some major work is needed
after the changes from 2008-04-16.
2008-06-12 Alexandre Duret-Lutz <adl@lrde.epita.fr>
Merge all ltlast/ files into formula.hh. The forward declaration
of visitor was causing error messages too cryptic for users.
* src/ltlast/allnodes.hh, src/ltlast/atomic_prop.hh,
src/ltlast/binop.hh, src/ltlast/constant.hh, src/ltlast/multop.hh,
src/ltlast/refformula.hh, src/ltlast/unop.hh,
src/ltlast/visitor.hh: Delete and merge all these files into ...
* src/ltlast/formula.hh: ... this one.
* src/ltlast/Makefile.am: Adjust.
* ltlparse/ltlparse.yy, ltlparse/public.hh, ltltest/equals.cc,
ltltest/randltl.cc, ltltest/readltl.cc, ltltest/reduc.cc,
ltltest/syntimpl.cc, ltltest/tostring.cc, ltlvisit/apcollect.hh,
ltlvisit/basicreduce.cc, ltlvisit/clone.cc, ltlvisit/clone.hh,
ltlvisit/contain.cc, ltlvisit/dotty.cc, ltlvisit/dump.cc,
ltlvisit/lunabbrev.cc, ltlvisit/nenoform.cc, ltlvisit/nenoform.hh,
ltlvisit/postfix.cc, ltlvisit/postfix.hh, ltlvisit/randomltl.cc,
ltlvisit/reduce.cc, ltlvisit/reduce.hh, ltlvisit/simpfg.cc,
ltlvisit/syntimpl.cc, ltlvisit/tostring.cc, ltlvisit/tunabbrev.cc,
tgba/bdddict.cc, tgba/formula2bdd.cc, tgba/tgbaexplicit.cc,
tgba/tgbatba.cc, tgbaalgos/ltl2tgba_fm.cc,
tgbaalgos/ltl2tgba_lacim.cc, tgbaalgos/randomgraph.cc,
tgbaalgos/randomgraph.hh, tgbaalgos/save.cc, tgbaparse/public.hh,
tgbaparse/tgbaparse.yy, tgbatest/explicit.cc,
tgbatest/explprod.cc, tgbatest/ltl2tgba.cc, tgbatest/ltlprod.cc,
tgbatest/mixprod.cc, tgbatest/powerset.cc, tgbatest/randtgba.cc,
tgbatest/readsave.cc, tgbatest/reductgba.cc, tgbatest/tgbaread.cc,
tgbatest/tripprod.cc: Adjust includes.
2008-06-12 Alexandre Duret-Lutz <adl@lrde.epita.fr>
* src/ltlast/atomic_prop.cc, src/ltlast/binop.cc,
src/ltlast/constant.cc, src/ltlast/formula.cc,
src/ltlast/multop.cc, src/ltlast/predecl.hh,
src/ltlast/refformula.cc, src/ltlast/unop.cc: Delete these files,
not used anymore since 2008-04-16.
2008-06-11 Alexandre Duret-Lutz <adl@lrde.epita.fr>
* iface/nips/dottynips.cc: Include ctsdlib for exit().
* iface/nips/emptiness_check.cc: Likewise.
* src/eltlparse/eltlparse.yy: Include limits.h for INT_MIN and
INT_MAX.
* src/sanity/includes.test: Remove empty line at beginning of file.
* src/internal/formula.hh (formula::hash): Remove the const
qualifier from the return type, GCC 4.3.1 gicomplains.
qualifier from the return type, GCC 4.3.1 complains.
2008-06-02 Guillaume SADEGH <sadegh@lrde.epita.fr>
......@@ -317,30 +257,6 @@
* src/Makefile.am (_.cc): Fix for `make tags`.
2008-04-16 Damien Lefortier <dam@lrde.epita.fr>
* configure.ac, Makefile.am: Add src/eltltest/ support.
* src/eltlast/Makefile.am, src/eltlast/formula.hh,
src/eltlast/nfa.cc, src/eltlast/nfa.hh: Update nfa implementation.
* src/eltlparse/Makefile.am, src/eltlparse/eltlparse.yy,
src/eltlparse/eltlscan.ll, src/eltlparse/parsedecl.hh,
src/eltlparse/public.hh: Finish the parser for ELTL files.
* src/eltltest/Makefile.am, src/eltltest/acc.cc,
src/eltltest/acc.test: Add tests for the ELTL parser.
* src/internal/atomic_prop.hh, src/internal/atomic_prop.hxx,
src/internal/binop.hh, src/internal/binop.hxx,
src/internal/constant.hh, src/internal/constant.hxx,
src/internal/defaultenv.hh, src/internal/defaultenv.hxx,
src/internal/environment.hh, src/internal/formula.hh,
src/internal/formula.hxx, src/internal/multop.hh,
src/internal/multop.hxx, src/internal/predecl.hh,
src/internal/refformula.hh, src/internal/refformula.hxx,
src/internal/unop.hh src/internal/unop.hxx: Clean and update
documentation.
* src/ltlast/formula.hh, src/ltlenv/Makefile.am,
src/ltlenv/declenv.hh, src/tgbaalgos/randomgraph.hh: Fix make
check issues.
2008-04-14 Alexandre Duret-Lutz <adl@lrde.epita.fr>
Kill some FIXMEs.
......
......@@ -44,7 +44,6 @@ AC_LANG(C++)
AX_CHECK_BUDDY
AX_CHECK_LBTT
AX_CHECK_GSPNLIB
AX_BOOST_BASE([1.34])
AC_CHECK_FUNCS([srand48 drand48])
......@@ -87,18 +86,11 @@ AC_CONFIG_FILES([
iface/nips/nipstest/Makefile
iface/nips/nipstest/defs
src/Makefile
src/eltlast/Makefile
src/eltlenv/Makefile
src/eltlparse/Makefile
src/eltltest/Makefile
src/eltltest/defs
src/eltlvisit/Makefile
src/evtgba/Makefile
src/evtgbaalgos/Makefile
src/evtgbaparse/Makefile
src/evtgbatest/Makefile
src/evtgbatest/defs
src/internal/Makefile
src/ltlast/Makefile
src/ltlenv/Makefile
src/ltlparse/Makefile
......
##### http://autoconf-archive.cryp.to/ax_boost_base.html
#
# SYNOPSIS
#
# AX_BOOST_BASE([MINIMUM-VERSION])
#
# DESCRIPTION
#
# Test for the Boost C++ libraries of a particular version (or newer)
#
# If no path to the installed boost library is given the macro
# searchs under /usr, /usr/local, /opt and /opt/local and evaluates
# the $BOOST_ROOT environment variable. Further documentation is
# available at <http://randspringer.de/boost/index.html>.
#
# This macro calls:
#
# AC_SUBST(BOOST_CPPFLAGS) / AC_SUBST(BOOST_LDFLAGS)
#
# And sets:
#
# HAVE_BOOST
#
# LAST MODIFICATION
#
# 2007-07-28
#
# COPYLEFT
#
# Copyright (c) 2007 Thomas Porschberg <thomas@randspringer.de>
#
# Copying and distribution of this file, with or without
# modification, are permitted in any medium without royalty provided
# the copyright notice and this notice are preserved.
AC_DEFUN([AX_BOOST_BASE],
[
AC_ARG_WITH([boost],
AS_HELP_STRING([--with-boost@<:@=DIR@:>@], [use boost (default is yes) - it is possible to specify the root directory for boost (optional)]),
[
if test "$withval" = "no"; then
want_boost="no"
elif test "$withval" = "yes"; then
want_boost="yes"
ac_boost_path=""
else
want_boost="yes"
ac_boost_path="$withval"
fi
],
[want_boost="yes"])
if test "x$want_boost" = "xyes"; then
boost_lib_version_req=ifelse([$1], ,1.20.0,$1)
boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([[0-9]]*\.[[0-9]]*\)'`
boost_lib_version_req_major=`expr $boost_lib_version_req : '\([[0-9]]*\)'`
boost_lib_version_req_minor=`expr $boost_lib_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
if test "x$boost_lib_version_req_sub_minor" = "x" ; then
boost_lib_version_req_sub_minor="0"
fi
WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+ $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor`
AC_MSG_CHECKING(for boostlib >= $boost_lib_version_req)
succeeded=no
dnl first we check the system location for boost libraries
dnl this location ist chosen if boost libraries are installed with the --layout=system option
dnl or if you install boost with RPM
if test "$ac_boost_path" != ""; then
BOOST_LDFLAGS="-L$ac_boost_path/lib"
BOOST_CPPFLAGS="-I$ac_boost_path/include"
else
for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
BOOST_LDFLAGS="-L$ac_boost_path_tmp/lib"
BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
break;
fi
done
fi
CPPFLAGS_SAVED="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
LDFLAGS_SAVED="$LDFLAGS"
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
AC_LANG_PUSH(C++)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
@%:@include <boost/version.hpp>
]], [[
#if BOOST_VERSION >= $WANT_BOOST_VERSION
// Everything is okay
#else
# error Boost version is too old
#endif
]])],[
AC_MSG_RESULT(yes)
succeeded=yes
found_system=yes
],[
])
AC_LANG_POP([C++])
dnl if we found no boost with system layout we search for boost libraries
dnl built and installed without the --layout=system option or for a staged(not installed) version
if test "x$succeeded" != "xyes"; then
_version=0
if test "$ac_boost_path" != ""; then
BOOST_LDFLAGS="-L$ac_boost_path/lib"
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
V_CHECK=`expr $_version_tmp \> $_version`
if test "$V_CHECK" = "1" ; then
_version=$_version_tmp
fi
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
done
fi
else
for ac_boost_path in /usr /usr/local /opt /opt/local ; do
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
V_CHECK=`expr $_version_tmp \> $_version`
if test "$V_CHECK" = "1" ; then
_version=$_version_tmp
best_path=$ac_boost_path
fi
done
fi
done
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
BOOST_LDFLAGS="-L$best_path/lib"
if test "x$BOOST_ROOT" != "x"; then
if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/lib" && test -r "$BOOST_ROOT/stage/lib"; then
version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
V_CHECK=`expr $stage_version_shorten \>\= $_version`
if test "$V_CHECK" = "1" ; then
AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
BOOST_CPPFLAGS="-I$BOOST_ROOT"
BOOST_LDFLAGS="-L$BOOST_ROOT/stage/lib"
fi
fi
fi
fi
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
AC_LANG_PUSH(C++)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
@%:@include <boost/version.hpp>
]], [[
#if BOOST_VERSION >= $WANT_BOOST_VERSION
// Everything is okay
#else
# error Boost version is too old
#endif
]])],[
AC_MSG_RESULT(yes)
succeeded=yes
found_system=yes
],[
])
AC_LANG_POP([C++])
fi
if test "$succeeded" != "yes" ; then
CPPFLAGS="$CPPFLAGS_SAVED"
LDFLAGS="$LDFLAGS_SAVED"
if test "$_version" = "0" ; then
AC_MSG_ERROR([[We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.]])
else
AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
fi
else
AC_SUBST(BOOST_CPPFLAGS)
AC_SUBST(BOOST_LDFLAGS)
AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
fi
fi
])
......@@ -23,23 +23,20 @@ AUTOMAKE_OPTIONS = subdir-objects
# List directories in the order they must be built.
# Keep tests at the end.
SUBDIRS = misc ltlenv ltlast ltlvisit ltlparse internal \
eltlenv eltlast eltlvisit eltlparse \
SUBDIRS = misc ltlenv ltlast ltlvisit ltlparse \
tgba tgbaalgos tgbaparse \
evtgba evtgbaalgos evtgbaparse . \
ltltest eltltest tgbatest evtgbatest sanity
ltltest tgbatest evtgbatest sanity
lib_LTLIBRARIES = libspot.la
libspot_la_SOURCES =
libspot_la_LDFLAGS = $(BUDDY_LDFLAGS) -no-undefined
libspot_la_LIBADD = \
misc/libmisc.la \
ltlenv/libltlenv.la \
ltlparse/libltlparse.la \
ltlvisit/libltlvisit.la \
internal/libinternal.la \
eltlast/libeltlast.la \
eltlparse/libeltlparse.la \
eltlvisit/libeltlvisit.la \
ltlast/libltlast.la \
tgba/libtgba.la \
tgbaalgos/libtgbaalgos.la \
tgbaparse/libtgbaparse.la \
......
## Copyright (C) 2008 Laboratoire d'Informatique de Paris 6 (LIP6),
## département Systèmes Répartis Coopératifs (SRC), Université Pierre
## et Marie Curie.
##
## This file is part of Spot, a model checking library.
##
## Spot is free software; you can redistribute it and/or modify it
## under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## Spot is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
## License for more details.
##
## You should have received a copy of the GNU General Public License
## along with Spot; see the file COPYING. If not, write to the Free
## Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
## 02111-1307, USA.
AM_CPPFLAGS = -I$(srcdir)/..
AM_CXXFLAGS = $(WARNING_CXXFLAGS)
eltlastdir = $(pkgincludedir)/eltlast
eltlast_HEADERS = \
automatop.hh \
formula.hh \
nfa.hh
noinst_LTLIBRARIES = libeltlast.la
libeltlast_la_SOURCES = \
automatop.cc \
nfa.cc
// Copyright (C) 2008 Laboratoire d'Informatique de Paris 6 (LIP6),
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
// et Marie Curie.
//
// This file is part of Spot, a model checking library.
//
// Spot is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// Spot is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
// License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Spot; see the file COPYING. If not, write to the Free
// Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
#include "automatop.hh"
namespace spot
{
namespace eltl
{
automatop::automatop(vec* v)
: nfa_(), children_(v)
{
dump_ = "automatop(";
dump_ += (*v)[0]->dump();
for (unsigned n = 1; n < v->size(); ++n)
dump_ += ", " + (*v)[n]->dump();
dump_ += ")";
set_key_();
}
automatop::~automatop()
{
delete children_;
}
void
automatop::accept(visitor& v)
{
v.visit(this);
}
void
automatop::accept(const_visitor& v) const
{
v.visit(this);
}
automatop*
automatop::instance(nfa::ptr nfa, formula* autop)
{
vec* v = new vec;
v->push_back(autop);
automatop* res = instance(v);
res->nfa_ = nfa;
return res;
}
automatop*
automatop::instance(formula* first, formula* second)
{
vec* v = new vec;
v->push_back(first);
v->push_back(second);
return instance(v);
}
automatop*
automatop::instance(vec* v)
{
// Inline children of same kind.
{
vec inlined;
vec::iterator i = v->begin();
while (i != v->end())
{
if (automatop* p = dynamic_cast<automatop*>(*i))
{
unsigned ps = p->size();
for (unsigned n = 0; n < ps; ++n)
inlined.push_back(p->nth(n));
formula::unref(*i);
i = v->erase(i);
}
else
++i;
}
v->insert(v->end(), inlined.begin(), inlined.end());
}
automatop* res = new automatop(v);
return static_cast<automatop*>(res->ref());
}
unsigned
automatop::size() const
{
return children_->size();
}
const formula*
automatop::nth(unsigned n) const
{
return (*children_)[n];
}
formula*
automatop::nth(unsigned n)
{
return (*children_)[n];
}
}
}
// Copyright (C) 2008 Laboratoire d'Informatique de Paris 6 (LIP6),
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
// et Marie Curie.
//
// This file is part of Spot, a model checking library.
//
// Spot is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// Spot is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
// License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Spot; see the file COPYING. If not, write to the Free
// Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
/// \file eltlast/automatop.hh
/// \brief ELTL automaton operators
#ifndef SPOT_ELTLAST_AUTOMATOP_HH
# define SPOT_ELTLAST_AUTOMATOP_HH
# include "formula.hh"
# include "nfa.hh"
namespace spot
{
namespace eltl
{
/// \brief Counted-reference formulae.
/// \ingroup eltl_ast
typedef spot::internal::ref_formula<eltl_t> ref_formula;
/// \brief Automaton operators.
/// \ingroup eltl_ast
///
class automatop : public ref_formula
{
public:
/// List of formulae.
typedef std::vector<formula*> vec;
/// \brief Build a spot::eltl::automatop with automaton \c nfa
/// and children of \c autop.
static automatop* instance(nfa::ptr nfa, formula* autop);
/// \brief Build a spot::eltl::automatop with two children.
///
/// If one of the children itself is a spot::eltl::automatop,
/// it will be merged. This allows incremental building of
/// n-ary eltl::automatop.
static automatop* instance(formula* first, formula* second);
/// \brief Build a spot::eltl::automatop with many children.
static automatop* instance(vec* v);
virtual void accept(visitor& v);
virtual void accept(const_visitor& v) const;
/// Get the number of argument.
unsigned size() const;
/// \brief Get the nth argument.
///
/// Starting with \a n = 0.
const formula* nth(unsigned n) const;
/// \brief Get the nth argument.
///
/// Starting with \a n = 0.
formula* nth(unsigned n);
protected:
automatop(vec* v);
virtual ~automatop();
private:
nfa::ptr nfa_;
vec* children_;
};
}
}
#endif // SPOT_ELTLAST_AUTOMATOP_HH
// Copyright (C) 2008 Laboratoire d'Informatique de Paris 6 (LIP6),
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
// et Marie Curie.
//
// This file is part of Spot, a model checking library.
//
// Spot is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// Spot is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
// License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Spot; see the file COPYING. If not, write to the Free
// Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
/// \file eltlast/formula.hh
/// \brief ELTL formula interface
#ifndef SPOT_ELTLAST_FORMULA_HH
# define SPOT_ELTLAST_FORMULA_HH
# include "internal/formula.hh"
# include "internal/atomic_prop.hh"
# include "internal/constant.hh"
# include "internal/unop.hh"
# include "internal/binop.hh"