Introduce a dba_complement() function.

Loosely based on "Complementing Deterministic Büchi Automata in
Polynomial Time", R. P. Kurshan, 1987, J. Comp. Syst. Sci. 35.

* src/tgbaalgos/dbacomp.cc, src/tgbaalgos/dbacomp.hh: New files.
* src/tgbaalgos/Makefile.am: Add them.
* src/tgbatest/ltl2tgba.cc (-DC): New option to test it.
This commit is contained in:
Alexandre Duret-Lutz 2013-01-21 14:45:44 +01:00
parent ec5bbf4fcf
commit bd2e78c1ed
4 changed files with 193 additions and 3 deletions

39
src/tgbaalgos/dbacomp.hh Normal file
View file

@ -0,0 +1,39 @@
// -*- coding: utf-8 -*-
// Copyright (C) 2013 Laboratoire de Recherche et Développement
// de l'Epita.
//
// 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 3 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 this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef SPOT_TGBAALGOS_DBACOMP_HH
# define SPOT_TGBAALGOS_DBACOMP_HH
#include "tgba/tgbaexplicit.hh"
namespace spot
{
/// Complement a deterministic Büchi automaton
///
/// The automaton \a aut should be deterministic and should have at
/// most a single acceptance condition. It can be transition-based,
/// or state-based. The resulting automaton is very unlikely to be
/// deterministic.
SPOT_API tgba_explicit_number*
dba_complement(const tgba* aut);
}
#endif // SPOT_TGBAALGOS_DBACOMP_HH