00001 // Copyright (C) 2009 Laboratoire de Recherche et Developpement de l'Epita 00002 // 00003 // This file is part of Spot, a model checking library. 00004 // 00005 // Spot is free software; you can redistribute it and/or modify it 00006 // under the terms of the GNU General Public License as published by 00007 // the Free Software Foundation; either version 2 of the License, or 00008 // (at your option) any later version. 00009 // 00010 // Spot is distributed in the hope that it will be useful, but WITHOUT 00011 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 00012 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 00013 // License for more details. 00014 // 00015 // You should have received a copy of the GNU General Public License 00016 // along with Spot; see the file COPYING. If not, write to the Free 00017 // Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 00018 // 02111-1307, USA. 00019 00020 #ifndef SPOT_KRIPKE_FAIRKRIPKE_HH 00021 # define SPOT_KRIPKE_FAIRKRIPKE_HH 00022 00023 #include "tgba/tgba.hh" 00024 #include "tgba/succiter.hh" 00025 00026 namespace spot 00027 { 00028 class fair_kripke; 00029 00030 class fair_kripke_succ_iterator : public tgba_succ_iterator 00031 { 00032 public: 00033 fair_kripke_succ_iterator(const fair_kripke* aut, const state* st); 00034 virtual ~fair_kripke_succ_iterator(); 00035 00036 virtual bdd current_conditions() const; 00037 virtual bdd current_acceptance_conditions() const; 00038 protected: 00039 bdd cond; 00040 bdd acc_cond; 00041 }; 00042 00043 class fair_kripke : public tgba 00044 { 00045 public: 00046 virtual bdd conditions_of_state(const state* s) const = 0; 00047 virtual bdd acceptance_conditions_of_state(const state* s) const = 0; 00048 virtual fair_kripke_succ_iterator* kripke_succ_iter(const state* s) = 0; 00049 00050 virtual fair_kripke_succ_iterator* 00051 succ_iter(const state* local_state, 00052 const state* global_state = 0, 00053 const tgba* global_automaton = 0); 00054 protected: 00055 virtual bdd compute_support_conditions(const state* s) const; 00056 virtual bdd compute_support_variables(const state* s) const; 00057 }; 00058 00059 } 00060 00061 00062 #endif // SPOT_KRIPKE_FAIRKRIPKE_HH