acccompl.hh 1.56 KB
Newer Older
1
2
3
4
5
6
7
8
// -*- coding: utf-8 -*-
// Copyright (C) 2012 Laboratoire de Recherche et Developpement de
// l'Epita (LRDE)
//
// 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
9
// the Free Software Foundation; either version 3 of the License, or
10
11
12
13
14
15
16
17
// (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
18
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
20
21
22
23
24
25
26
27
28
29
30


#ifndef SPOT_MISC_ACCCOMPL_HH
# define SPOT_MISC_ACCCOMPL_HH

#include <map>
#include <bdd.h>
#include "misc/hash.hh"
#include "misc/bddlt.hh"

namespace spot
{
31
32
33
34
35
  /// \brief Helper class to convert acceptance conditions into promises
  ///
  /// A set of acceptance conditions represented by the sum "à la Spot",
  /// is converted into a product of promises.
  class acc_compl
36
37
  {
    public:
Alexandre Duret-Lutz's avatar
Alexandre Duret-Lutz committed
38
      acc_compl(const bdd& all, const bdd& neg)
39
40
41
42
43
44
        : all_(all),
          neg_(neg)
      {
      }


Alexandre Duret-Lutz's avatar
Alexandre Duret-Lutz committed
45
46
      bdd complement(const bdd& acc);
      bdd reverse_complement(const bdd& acc);
47
48

    protected:
Alexandre Duret-Lutz's avatar
Alexandre Duret-Lutz committed
49
50
      const bdd all_;
      const bdd neg_;
51
52
53
54
55
56
      typedef Sgi::hash_map<bdd, bdd, bdd_hash> bdd_cache_t;
      bdd_cache_t cache_;
  };
} // End namespace Spot

#endif // !SPOT_MISC_ACCCOMPL_HH