spot
1.0.1
|
An LTL formula.The only way you can work with a formula is to build a spot::ltl::visitor or spot::ltl::const_visitor. More...
#include <ltlast/formula.hh>
Classes | |
struct | ltl_prop |
Public Types | |
enum | opkind { Constant, AtomicProp, UnOp, BinOp, MultOp, BUnOp, AutomatOp } |
Kind of a sub-formula. More... |
Public Member Functions | |
virtual void | accept (visitor &v) const =0 |
Entry point for spot::ltl::visitor instances. | |
const formula * | clone () const |
clone this node | |
void | destroy () const |
release this node | |
virtual std::string | dump () const =0 |
Return a canonic representation of the formula. | |
opkind | kind () const |
Return the kind of the top-level operator. | |
bool | is_boolean () const |
Whether the formula use only boolean operators. | |
bool | is_sugar_free_boolean () const |
Whether the formula use only AND, OR, and NOT operators. | |
bool | is_in_nenoform () const |
Whether the formula is in negative normal form. | |
bool | is_X_free () const |
Whether the formula avoids the X operator. | |
bool | is_sugar_free_ltl () const |
Whether the formula avoids the F and G operators. | |
bool | is_ltl_formula () const |
Whether the formula uses only LTL operators. | |
bool | is_eltl_formula () const |
Whether the formula uses only ELTL operators. | |
bool | is_psl_formula () const |
Whether the formula uses only PSL operators. | |
bool | is_sere_formula () const |
Whether the formula uses only SERE operators. | |
bool | is_finite () const |
bool | is_eventual () const |
Whether the formula is purely eventual. | |
bool | is_universal () const |
Whether a formula is purely universal. | |
bool | is_syntactic_safety () const |
Whether a PSL/LTL formula is syntactic safety property. | |
bool | is_syntactic_guarantee () const |
Whether a PSL/LTL formula is syntactic guarantee property. | |
bool | is_syntactic_obligation () const |
Whether a PSL/LTL formula is syntactic obligation property. | |
bool | is_syntactic_recurrence () const |
Whether a PSL/LTL formula is syntactic recurrence property. | |
bool | is_syntactic_persistence () const |
Whether a PSL/LTL formula is syntactic persistence property. | |
bool | is_marked () const |
Whether the formula has an occurrence of EConcatMarked. | |
bool | accepts_eword () const |
Whether the formula accepts [*0]. | |
bool | has_lbt_atomic_props () const |
unsigned | get_props () const |
The properties as a field of bits. For internal use. | |
size_t | hash () const |
Return a hash key for the formula. |
Protected Member Functions | |
formula (opkind k) | |
virtual | ~formula () |
virtual void | ref_ () const |
increment reference counter if any | |
virtual bool | unref_ () const |
decrement reference counter if any, return true when the instance must be deleted (usually when the counter hits 0). |
Protected Attributes | |
size_t | count_ |
The hash key of this formula. | |
union { | |
unsigned props | |
ltl_prop is | |
}; |
Private Attributes | |
opkind | kind_ |
Static Private Attributes | |
static size_t | max_count |
Number of formulae created so far. |
An LTL formula.
The only way you can work with a formula is to build a spot::ltl::visitor or spot::ltl::const_visitor.
|
protectedvirtual |
|
pure virtual |
Entry point for spot::ltl::visitor instances.
Implemented in spot::ltl::multop, spot::ltl::binop, spot::ltl::unop, spot::ltl::bunop, spot::ltl::automatop, spot::ltl::atomic_prop, and spot::ltl::constant.
|
inline |
Whether the formula accepts [*0].
References spot::ltl::formula::ltl_prop::accepting_eword, and is.
const formula* spot::ltl::formula::clone | ( | ) | const |
clone this node
This increments the reference counter of this node (if one is used).
void spot::ltl::formula::destroy | ( | ) | const |
release this node
This decrements the reference counter of this node (if one is used) and can free the object.
Referenced by spot::taa_tgba_labelled< std::string, string_hash >::add_acceptance_condition(), spot::explicit_graph< State, tgba >::add_condition(), spot::explicit_graph< State, tgba >::declare_acceptance_condition(), spot::destroy_key< const ltl::formula * >::destroy(), and spot::explicit_graph< State, tgba >::get_acceptance_condition().
|
pure virtual |
Return a canonic representation of the formula.
Implemented in spot::ltl::multop, spot::ltl::binop, spot::ltl::bunop, spot::ltl::unop, spot::ltl::automatop, spot::ltl::atomic_prop, and spot::ltl::constant.
Referenced by spot::ltl::formula_ptr_less_than::operator()().
|
inline |
The properties as a field of bits. For internal use.
References props.
|
inline |
References is, and spot::ltl::formula::ltl_prop::lbt_atomic_props.
|
inline |
Return a hash key for the formula.
References count_.
Referenced by spot::ltl::formula_ptr_less_than::operator()(), and spot::ltl::formula_ptr_hash::operator()().
|
inline |
Whether the formula use only boolean operators.
References spot::ltl::formula::ltl_prop::boolean, and is.
|
inline |
Whether the formula uses only ELTL operators.
References spot::ltl::formula::ltl_prop::eltl_formula, and is.
|
inline |
Whether the formula is purely eventual.
Pure eventuality formulae are defined in @verbatim
/// { etessami.00.concur, /// author = {Kousha Etessami and Gerard J. Holzmann}, /// title = {Optimizing {B"u}chi Automata}, /// booktitle = {Proceedings of the 11th International Conference on /// Concurrency Theory (Concur'2000)}, /// pages = {153–167}, /// year = {2000}, /// editor = {C. Palamidessi}, /// volume = {1877}, /// series = {Lecture Notes in Computer Science}, /// publisher = {Springer-Verlag} /// } ///
A word that satisfies a pure eventuality can be prefixed by anything and still satisfies the formula.
References spot::ltl::formula::ltl_prop::eventual, and is.
|
inline |
Whether a SERE describes a finite language, or an LTL formula uses no temporal operator but X.
References spot::ltl::formula::ltl_prop::finite, and is.
|
inline |
Whether the formula is in negative normal form.
A formula is in negative normal form if the not operators occur only in front of atomic propositions.
References spot::ltl::formula::ltl_prop::in_nenoform, and is.
|
inline |
Whether the formula uses only LTL operators.
References is, and spot::ltl::formula::ltl_prop::ltl_formula.
|
inline |
Whether the formula has an occurrence of EConcatMarked.
References is, and spot::ltl::formula::ltl_prop::not_marked.
|
inline |
Whether the formula uses only PSL operators.
References is, and spot::ltl::formula::ltl_prop::psl_formula.
|
inline |
Whether the formula uses only SERE operators.
References is, and spot::ltl::formula::ltl_prop::sere_formula.
|
inline |
Whether the formula use only AND, OR, and NOT operators.
References is, and spot::ltl::formula::ltl_prop::sugar_free_boolean.
|
inline |
Whether the formula avoids the F and G operators.
References is, and spot::ltl::formula::ltl_prop::sugar_free_ltl.
|
inline |
Whether a PSL/LTL formula is syntactic guarantee property.
References is, and spot::ltl::formula::ltl_prop::syntactic_guarantee.
|
inline |
Whether a PSL/LTL formula is syntactic obligation property.
References is, and spot::ltl::formula::ltl_prop::syntactic_obligation.
|
inline |
Whether a PSL/LTL formula is syntactic persistence property.
References is, and spot::ltl::formula::ltl_prop::syntactic_persistence.
|
inline |
Whether a PSL/LTL formula is syntactic recurrence property.
References is, and spot::ltl::formula::ltl_prop::syntactic_recurrence.
|
inline |
Whether a PSL/LTL formula is syntactic safety property.
References is, and spot::ltl::formula::ltl_prop::syntactic_safety.
|
inline |
Whether a formula is purely universal.
Purely universal formulae are defined in @verbatim
/// { etessami.00.concur, /// author = {Kousha Etessami and Gerard J. Holzmann}, /// title = {Optimizing {B"u}chi Automata}, /// booktitle = {Proceedings of the 11th International Conference on /// Concurrency Theory (Concur'2000)}, /// pages = {153–167}, /// year = {2000}, /// editor = {C. Palamidessi}, /// volume = {1877}, /// series = {Lecture Notes in Computer Science}, /// publisher = {Springer-Verlag} /// } ///
Any (non-empty) suffix of a word that satisfies a purely universal formula also satisfies the formula.
References is, and spot::ltl::formula::ltl_prop::universal.
|
inline |
Whether the formula avoids the X operator.
References is, and spot::ltl::formula::ltl_prop::X_free.
|
inline |
Return the kind of the top-level operator.
References kind_.
Referenced by spot::ltl::is_atomic_prop(), spot::ltl::is_binop(), spot::ltl::is_bunop(), spot::ltl::is_constant(), spot::ltl::is_multop(), and spot::ltl::is_unop().
|
protectedvirtual |
increment reference counter if any
Reimplemented in spot::ltl::ref_formula.
|
protectedvirtual |
decrement reference counter if any, return true when the instance must be deleted (usually when the counter hits 0).
Reimplemented in spot::ltl::ref_formula.
union { ... } |
|
protected |
The hash key of this formula.
Referenced by hash().
ltl_prop spot::ltl::formula::is |
Referenced by accepts_eword(), has_lbt_atomic_props(), is_boolean(), is_eltl_formula(), is_eventual(), is_finite(), is_in_nenoform(), is_ltl_formula(), is_marked(), is_psl_formula(), is_sere_formula(), is_sugar_free_boolean(), is_sugar_free_ltl(), is_syntactic_guarantee(), is_syntactic_obligation(), is_syntactic_persistence(), is_syntactic_recurrence(), is_syntactic_safety(), is_universal(), and is_X_free().
|
staticprivate |
Number of formulae created so far.
Referenced by formula().
unsigned spot::ltl::formula::props |
Referenced by get_props().