Main Page | Modules | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

emptiness.hh

Go to the documentation of this file.
00001 // Copyright (C) 2004, 2005  Laboratoire d'Informatique de Paris 6 (LIP6),
00002 // département Systèmes Répartis Coopératifs (SRC), Université Pierre
00003 // et Marie Curie.
00004 //
00005 // This file is part of Spot, a model checking library.
00006 //
00007 // Spot is free software; you can redistribute it and/or modify it
00008 // under the terms of the GNU General Public License as published by
00009 // the Free Software Foundation; either version 2 of the License, or
00010 // (at your option) any later version.
00011 //
00012 // Spot is distributed in the hope that it will be useful, but WITHOUT
00013 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
00014 // or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
00015 // License for more details.
00016 //
00017 // You should have received a copy of the GNU General Public License
00018 // along with Spot; see the file COPYING.  If not, write to the Free
00019 // Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
00020 // 02111-1307, USA.
00021 
00022 #ifndef SPOT_TGBAALGOS_EMPTINESS_HH
00023 # define SPOT_TGBAALGOS_EMPTINESS_HH
00024 
00025 #include <list>
00026 #include <iosfwd>
00027 #include <bdd.h>
00028 #include "tgba/state.hh"
00029 
00030 namespace spot
00031 {
00032   class tgba;
00033   struct tgba_run;
00034 
00067 
00073   class emptiness_check_result
00074   {
00075   public:
00076     emptiness_check_result(const tgba* a)
00077       : a_(a)
00078     {
00079     }
00080 
00093     virtual tgba_run* accepting_run();
00094 
00096     const tgba*
00097     automaton() const
00098     {
00099       return a_;
00100     }
00101   protected:
00102     const tgba* a_;             
00103   };
00104 
00106   class emptiness_check
00107   {
00108   public:
00109     emptiness_check(const tgba* a)
00110       : a_(a)
00111     {
00112     }
00113     virtual ~emptiness_check();
00114 
00116     const tgba*
00117     automaton() const
00118     {
00119       return a_;
00120     }
00121 
00132     virtual emptiness_check_result* check() = 0;
00133 
00135     virtual std::ostream& print_stats(std::ostream& os) const;
00136 
00137   protected:
00138     const tgba* a_;             
00139   };
00140 
00142 
00145 
00146 
00150 
00152   struct tgba_run
00153   {
00154     struct step {
00155       const state* s;
00156       bdd label;
00157       bdd acc;
00158     };
00159 
00160     typedef std::list<step> steps;
00161 
00162     steps prefix;
00163     steps cycle;
00164 
00165     ~tgba_run();
00166     tgba_run()
00167     {
00168     };
00169     tgba_run(const tgba_run& run);
00170     tgba_run& operator=(const tgba_run& run);
00171   };
00172 
00188   std::ostream& print_tgba_run(std::ostream& os,
00189                                const tgba* a,
00190                                const tgba_run* run);
00191 
00196   tgba* tgba_run_to_tgba(const tgba* a, const tgba_run* run);
00197 
00199 
00202 }
00203 
00204 #endif // SPOT_TGBAALGOS_EMPTINESS_HH

Please comment this page and report errors about it on the RefDocComments page.
Generated on Mon Jan 31 12:54:24 2005 for spot by doxygen 1.4.0