spot/src/kripke/fairkripke.hh
Alexandre Duret-Lutz 1ec9cebe58 Move \ingroup before \brief in all Doxygen comments.
Using \ingroup between \brief and the rest of the documentation causes
Doxygen to concatenate the brief with the rest of the doc.

* src/sanity/style.test: Warn when \ingroup is found
on the line after \brief.
* src/kripke/fairkripke.hh, src/kripke/kripke.hh,
src/kripke/kripkeprint.hh, src/ltlast/atomic_prop.hh,
src/ltlast/automatop.hh, src/ltlast/binop.hh, src/ltlast/bunop.hh,
src/ltlast/constant.hh, src/ltlast/formula.hh, src/ltlast/multop.hh,
src/ltlast/refformula.hh, src/ltlast/unop.hh, src/ltlast/visitor.hh,
src/ltlenv/declenv.hh, src/ltlenv/defaultenv.hh,
src/ltlenv/environment.hh, src/ltlparse/ltlfile.hh,
src/ltlvisit/clone.hh, src/ltlvisit/destroy.hh, src/ltlvisit/dotty.hh,
src/ltlvisit/dump.hh, src/ltlvisit/length.hh, src/ltlvisit/lunabbrev.hh,
src/ltlvisit/mark.hh, src/ltlvisit/nenoform.hh, src/ltlvisit/postfix.hh,
src/ltlvisit/randomltl.hh, src/ltlvisit/reduce.hh,
src/ltlvisit/relabel.hh, src/ltlvisit/simpfg.hh,
src/ltlvisit/simplify.hh, src/ltlvisit/tunabbrev.hh,
src/ltlvisit/wmunabbrev.hh, src/misc/bddalloc.hh, src/misc/bddlt.hh,
src/misc/freelist.hh, src/misc/hash.hh, src/misc/ltstr.hh,
src/misc/minato.hh, src/misc/modgray.hh, src/misc/optionmap.hh,
src/misc/version.hh, src/saba/explicitstateconjunction.hh,
src/saba/saba.hh, src/saba/sabacomplementtgba.hh, src/saba/sabastate.hh,
src/saba/sabasucciter.hh, src/sabaalgos/sabadotty.hh,
src/sabaalgos/sabareachiter.hh, src/ta/ta.hh, src/ta/taproduct.hh,
src/ta/tgta.hh, src/taalgos/reachiter.hh, src/taalgos/tgba2ta.hh,
src/tgba/futurecondcol.hh, src/tgba/sba.hh, src/tgba/state.hh,
src/tgba/succiter.hh, src/tgba/tgba.hh, src/tgba/tgbabddconcrete.hh,
src/tgba/tgbabddconcreteproduct.hh, src/tgba/tgbakvcomplement.hh,
src/tgba/tgbaproduct.hh, src/tgba/tgbasafracomplement.hh,
src/tgba/tgbascc.hh, src/tgba/tgbasgba.hh, src/tgba/tgbatba.hh,
src/tgba/tgbaunion.hh, src/tgba/wdbacomp.hh, src/tgbaalgos/bfssteps.hh,
src/tgbaalgos/degen.hh, src/tgbaalgos/dotty.hh,
src/tgbaalgos/dottydec.hh, src/tgbaalgos/dupexp.hh,
src/tgbaalgos/eltl2tgba_lacim.hh, src/tgbaalgos/lbtt.hh,
src/tgbaalgos/ltl2taa.hh, src/tgbaalgos/ltl2tgba_fm.hh,
src/tgbaalgos/ltl2tgba_lacim.hh, src/tgbaalgos/neverclaim.hh,
src/tgbaalgos/powerset.hh, src/tgbaalgos/projrun.hh,
src/tgbaalgos/randomgraph.hh, src/tgbaalgos/reachiter.hh,
src/tgbaalgos/reducerun.hh, src/tgbaalgos/replayrun.hh,
src/tgbaalgos/rundotdec.hh, src/tgbaalgos/save.hh,
src/tgbaalgos/stripacc.hh, src/tgbaalgos/translate.hh: Move \ingroup
before \brief.
2013-06-08 23:24:37 +02:00

108 lines
3.6 KiB
C++

// Copyright (C) 2009, 2010 Laboratoire de Recherche et Developpement 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_KRIPKE_FAIRKRIPKE_HH
# define SPOT_KRIPKE_FAIRKRIPKE_HH
#include "tgba/tgba.hh"
#include "tgba/succiter.hh"
/// \addtogroup kripke Kripke Structures
/// \ingroup tgba
namespace spot
{
class fair_kripke;
/// \ingroup kripke
/// \brief Iterator code for a Fair Kripke structure.
///
/// This iterator can be used to simplify the writing
/// of an iterator on a Fair Kripke structure (or lookalike).
///
/// If you inherit from this iterator, you should only
/// redefine
///
/// - fair_kripke_succ_iterator::first()
/// - fair_kripke_succ_iterator::next()
/// - fair_kripke_succ_iterator::done()
/// - fair_kripke_succ_iterator::current_state()
///
/// This class implements fair_kripke_succ_iterator::current_condition(),
/// and fair_kripke_succ_iterator::current_acceptance_conditions().
class fair_kripke_succ_iterator : public tgba_succ_iterator
{
public:
/// \brief Constructor
///
/// The \a cond and \a acc_cond arguments will be those returned
/// by fair_kripke_succ_iterator::current_condition(),
/// and fair_kripke_succ_iterator::current_acceptance_conditions().
fair_kripke_succ_iterator(const bdd& cond, const bdd& acc_cond);
virtual ~fair_kripke_succ_iterator();
virtual bdd current_condition() const;
virtual bdd current_acceptance_conditions() const;
protected:
bdd cond_;
bdd acc_cond_;
};
/// \ingroup kripke
/// \brief Interface for a Fair Kripke structure.
///
/// A Kripke structure is a graph in which each node (=state) is
/// labeled by a conjunction of atomic proposition, and a set of
/// acceptance conditions.
///
/// Such a structure can be seen as spot::tgba by pushing all labels
/// to the outgoing transitions.
///
/// A programmer that develops an instance of Fair Kripke structure
/// needs just provide an implementation for the following methods:
///
/// - kripke::get_init_state()
/// - kripke::succ_iter()
/// - kripke::state_condition()
/// - kripke::state_acceptance_conditions()
/// - kripke::format_state()
/// - and optionally kripke::transition_annotation()
///
/// The other methods of the tgba interface are supplied by this
/// class and need not be defined.
///
/// See also spot::fair_kripke_succ_iterator.
class fair_kripke : public tgba
{
public:
/// \brief The condition that label the state \a s.
///
/// This should be a conjunction of atomic propositions.
virtual bdd state_condition(const state* s) const = 0;
/// \brief The set of acceptance conditions that label the state \a s.
virtual bdd state_acceptance_conditions(const state* s) const = 0;
protected:
virtual bdd compute_support_conditions(const state* s) const;
virtual bdd compute_support_variables(const state* s) const;
};
}
#endif // SPOT_KRIPKE_FAIRKRIPKE_HH