00001 // Copyright (C) 2009, 2010 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 00028 00029 namespace spot 00030 { 00031 class fair_kripke; 00032 00049 class fair_kripke_succ_iterator : public tgba_succ_iterator 00050 { 00051 public: 00057 fair_kripke_succ_iterator(const bdd& cond, const bdd& acc_cond); 00058 virtual ~fair_kripke_succ_iterator(); 00059 00060 virtual bdd current_condition() const; 00061 virtual bdd current_acceptance_conditions() const; 00062 protected: 00063 bdd cond_; 00064 bdd acc_cond_; 00065 }; 00066 00091 class fair_kripke : public tgba 00092 { 00093 public: 00097 virtual bdd state_condition(const state* s) const = 0; 00098 00100 virtual bdd state_acceptance_conditions(const state* s) const = 0; 00101 00102 protected: 00103 virtual bdd compute_support_conditions(const state* s) const; 00104 virtual bdd compute_support_variables(const state* s) const; 00105 }; 00106 00107 } 00108 00109 00110 #endif // SPOT_KRIPKE_FAIRKRIPKE_HH